OSDN Git Service

*** empty log message ***
[lha/lha.git] / tests / lha-test.in
1 #!/bin/bash
2
3 : ${lha_dir=@top_builddir@/src}
4 : ${lha=$(cd $lha_dir && pwd)/lha}
5 : ${srcdir=@srcdir@}
6
7 trap "rm -rf test-*" 0 1 2 3 15
8
9 declare -i test_number=0 error_num=0
10 error_tests=""
11
12 exec > test.log
13
14 message() {
15   echo "$@" >&2
16   echo "$@"
17 }
18
19 check() {
20   ((test_number = test_number + 1))
21   local status=$1
22   local lineno=$2
23   if [[ $status -eq 0 ]]; then
24     message test $test_number ... ok
25   else
26     message test $test_number ... failed at line $lineno
27     ((error_num = error_num + 1))
28     error_tests="$error_tests #$test_number"
29     result=1
30   fi
31 }
32
33 seq() {
34   awk 'BEGIN {
35     for (i = 0; i < '$1'; i++) print i
36   }'
37 }
38
39 cleanup()
40 {
41   rm -rf test-tmp*
42 }
43
44 # create test data
45
46 message testing $lha
47 message testing to create/list/extract lha archive.
48
49 for i in `seq 100`
50 do
51     echo foo >> test-a
52 done
53 sed 's/foo/bar/g' < test-a > test-b
54 sed 's/foo/baz/g' < test-a > test-c
55
56 $lha c test-1.lzh test-a test-b test-c
57                                                         check $? $LINENO
58 test -s test-1.lzh
59                                                         check $? $LINENO
60
61 $lha l test-1.lzh
62                                                         check $? $LINENO
63
64 test -d test-1 || mkdir test-1
65 mv test-[abc] test-1
66 $lha x test-1.lzh
67                                                         check $? $LINENO
68 diff test-1/test-a test-a
69                                                         check $? $LINENO
70 diff test-1/test-b test-b
71                                                         check $? $LINENO
72 diff test-1/test-c test-c
73                                                         check $? $LINENO
74
75 # followings are test data for remaining tests.
76 test -f test-1.lzh &&
77 test -f test-a &&
78 test -f test-b &&
79 test -f test-c &&
80 test -d test-1 &&
81 test -f test-1/test-a &&
82 test -f test-1/test-b &&
83 test -f test-1/test-c
84                                                         check $? $LINENO
85
86
87 . $srcdir/lha-test2; cleanup
88 . $srcdir/lha-test3; cleanup
89 . $srcdir/lha-test4; cleanup
90 . $srcdir/lha-test5; cleanup
91 # . $srcdir/lha-test6; cleanup          # this feature was removed.
92 . $srcdir/lha-test7; cleanup
93 . $srcdir/lha-test8; cleanup
94 case `$lha --version 2>&1` in
95 *pc-cygwin*|*pc-mingw*)
96     message testing extracting to existent files ... skip;;
97 *)
98 #    . $srcdir/lha-test9; cleanup
99     ;;
100 esac
101 . $srcdir/lha-test10; cleanup
102
103 if (( $error_num != 0 )); then
104   echo $error_num tests failed! >&2
105   echo test number: $error_tests >&2
106 fi
107
108 exit $result