Fix CFLAGS/LDFLAGS syntax
[platform/upstream/lrzsz.git] / testsuite / lib / lrzsz.exp
1 # change to tmp dir
2
3 set z8_test_files ""
4 set z_test_files ""
5 set y_test_files ""
6 set x_test_files ""
7 set objdir [absolute $objdir]
8 set srcdir [absolute $srcdir]
9
10 set srcdir2 [exec sh -c "cd $srcdir/.. && pwd"]
11 set objdir2 [exec sh -c "cd $objdir/.. && pwd"]
12
13 set SZBUFSIZE "-B 524288"
14 set RZBUFSIZE "-B 524288"
15 set env(LANG) C
16 #puts "LANG=$env(LANG)"
17
18 foreach i [glob -nocomplain $srcdir/../src/l?z.c] {
19     set z_test_files "$z_test_files $i"
20     set x_test_files "$x_test_files $i"
21 }
22 foreach i [glob -nocomplain $objdir/../src/l?z] {
23     set z_test_files "$z_test_files $i"
24     set y_test_files "$y_test_files $i"
25 }
26 foreach i [glob -nocomplain /pub/gnu/emacs-*.tar.gz] {
27     set z8_test_files "$z8_test_files $i"
28 }
29 #puts "objdir=$objdir\n"
30 #puts "srcdir=$srcdir\n"
31 #puts "x_test_files=$x_test_files\n"
32 #puts "y_test_files=$y_test_files\n"
33 #puts "z_test_files=$z_test_files\n"
34 #puts "z8_test_files=$z8_test_files\n"
35
36 # change to tmp dir
37 set TMPDIR [getenv TMPDIR]
38 #puts "T=$TMPDIR\n"
39 if [string compare "x$TMPDIR" "x"] then {
40         set MYTEMP "$TMPDIR"
41 } else {
42         set MYTEMP "/tmp"
43 }
44 set OLDDIR [pwd]
45 set testdir "$MYTEMP/test.lrzsz"
46 exec rm -rf $testdir
47 exec mkdir $testdir
48 exec sh -c "mkfifo $testdir/pipe || mknod $testdir/pipe p"
49
50 proc runthem_internal { name sz szopts rz rzopts files flags up} {
51         global MYTEMP
52         global OLDDIR
53         global testdir
54         global verbose
55         global fail_is_ok
56         upvar $up up_p
57         if {[string match "*mkdir*" $flags] == 1} {
58             exec mkdir $testdir/$name
59         }
60     set fails 0
61     cd $MYTEMP
62         catch "exec sh -c \"($sz $szopts $files) <$testdir/pipe | \
63                         (cd $testdir/$name ; exec $rz $rzopts >>../pipe)\"" dummy
64         set up_p $dummy
65         foreach i $files {
66                 set bn [file tail $i]
67                 set v $verbose
68                 if {[string match "*compare*" $flags] == 1} {
69                         set res [catch "exec cmp $i $testdir/$name/$bn" dummy]
70                         set verbose $v
71                         if {$res == 0} {
72                                 if {[string match "*delete*" $flags] == 1} {
73                                         catch "file delete $testdir/$name/$bn" dummy
74                                 }
75                         } else {
76                                 send_log "$i: not identical: cmp told\n"
77                                 send_log "$dummy\n"
78                                 incr fails
79                         }
80                 } else {
81                         if {[string match "*delete*" $flags] == 1} {
82                                 catch "file delete $testdir/$name/$bn" dummy
83                         }
84                 }
85         }
86         if {[string match "*rmdir*" $flags] == 1} {
87                 set res [catch "exec rmdir $testdir/$name" dummy]
88                 if {$res != 0} {
89                         send_log "rmdir failed: $dummy\n"
90                         incr fails
91                 }
92         }
93     if [info exists "fail_is_ok"] {
94         if {$fails > 0} {
95                 set fails 0;
96         } else {
97                 set fails 1;
98         }
99     }
100     cd $OLDDIR
101     return $fails
102 }
103
104 # own test function for xmodem: xmodem can't transfer file names
105 proc runxmodem { name sz szopts rz rzopts files } {
106         global MYTEMP
107         global OLDDIR
108         global testdir
109         global verbose
110         verbose "Testing $name" 1
111     exec mkdir $testdir/$name
112     set failed 0
113     cd $MYTEMP
114         foreach i $files {
115                 set bn [file tail $i]
116                 set output [catch "set done [exec sh -c "($sz $szopts --xmodem $i 2>/dev/null) \
117                         <$testdir/pipe | \
118                 (cd $testdir/$name ; exec $rz $rzopts --xmodem $bn >>../pipe 2>/dev/null)"]]"]
119                 set res [catch "exec cmp $i $testdir/$name/$bn" dummy]
120                 if {$res == 0} {
121                         catch "file delete $testdir/$name/$bn" dummy
122                 } else {
123                         send_log "$i: not identical: cmp told\n"
124                         send_log "$dummy\n"
125                         set failed 1
126                 }
127         }
128     set res [catch "exec rmdir $testdir/$name" dummy]
129         if {$res != 0} {
130                         send_log "rmdir: $dummy\n"
131                 set failed 1
132         }
133     cd $OLDDIR
134         if {$failed == 0} {
135                 pass "$name"
136         } else {
137                 fail "$name"
138         }
139 }
140
141 proc runthem { name sz szopts rz rzopts files } {
142         verbose "Testing $name" 1
143         set fails [runthem_internal "$name" "$sz" "$szopts" "$rz" "$rzopts"  \
144                 "$files" "mkdir,compare,delete,rmdir" dummy]
145         if {$fails == 0} {
146                 pass "$name"
147         } else {
148                 fail "$name"
149         }
150 }
151
152 proc runabuse { name sz szopts rz rzopts files } {
153         global fail_is_ok
154         global testdir
155
156         set fail_is_ok 1
157         verbose "Testing $name" 1
158         set fails [runthem_internal "$name" "$sz" "$szopts" "$rz" "$rzopts"  \
159                 "$files" "mkdir" output]
160         if {$fails == 1 && [string match "*ZRINIT*" $output]} {
161                 set fails 0
162         }
163         if {$fails == 1 && [string match "*Broken pipe*" $output]} {
164                 set fails 0
165         }
166         if {$fails == 1 && [string match "*caught signal*" $output]} {
167                 set fails 0
168         }
169         if {$fails == 1 && [string match "*exited abnormally*" $output]} {
170                 set fails 0
171         }
172         if {$fails == 0} {
173                 exec rm -rf "$testdir/$name"
174                 pass "$name"
175         } else {
176 #puts "fails=$fails"
177                 fail "$name"
178         }
179         unset fail_is_ok
180 }
181
182 proc runthem0 { name sz szopts rz rzopts files } {
183         verbose "Testing $name (write to /dev/null)" 1
184         set fails [runthem_internal "$name" "$sz" "$szopts" "$rz" "$rzopts" \
185                 "$files" "mkdir,rmdir" dummy]
186         if {$fails == 0} {
187                 pass "$name"
188         } else {
189                 fail "$name"
190         }
191 }
192
193 proc runappend { name sz szopts rz rzopts file} {
194         global testdir
195         verbose "Testing $name" 1
196         set fails [runthem_internal "$name" "$sz" "$szopts" "$rz" "$rzopts" \
197                 "$file $file" "mkdir" dummy]
198         if {$fails == 0} {
199                 set compare "$testdir/$name/compare"
200                 set bn [file tail $file]
201                 exec rm -f $compare
202                 exec cp $file $compare
203                 exec cat $file >>$compare
204
205                 set res [catch "exec cmp $testdir/$name/$bn $compare" dummy]
206                 if {$res != 0} {
207                         incr fails
208                 } else {
209                         catch "file delete $testdir/$name/$bn" dummy
210                         catch "file delete $compare" dummy
211                 }
212         }
213         if {$fails == 0} {
214         set res [catch "exec rmdir $testdir/$name" dummy]
215                 if {$res != 0} {
216                         incr fails
217                 }
218     }
219
220         if {$fails == 0} {
221                 pass "$name"
222         } else {
223                 fail "$name"
224         }
225 }
226
227 #
228 proc runrename { name sz szopts rz rzopts files} {
229         global testdir
230         verbose "Testing $name" 1
231         exec mkdir $testdir/$name
232         foreach i $files {
233                 set bn [file tail $i]
234                 exec touch "$testdir/$name/$bn"
235                 exec echo "1234" ">$testdir/$name/$bn.0"
236         }
237         set fails [runthem_internal "$name" "$sz" "$szopts" "$rz" "$rzopts" \
238                 "$files" "" dummy]
239         if {$fails == 0} {
240                 foreach i $files {
241                         set bn [file tail $i]
242                         set f "$testdir/$name/$bn"
243                         if {[file size $f] != 0} {
244                                 incr fails
245                                 send_log "$f: size !=0\n"
246                         } else {
247                                 set s [file size $f.0]
248                                 if {$s == 0 || $s>5} {
249                                         incr fails
250                                 send_log "$f: size !=5\n"
251                                 } else {
252                                         set compare "$f.1"
253                                         set res [catch "exec cmp $i $compare" dummy]
254                                         if {$res != 0} {
255                                                 incr fails
256                                                 send_log "$f: compare failed\n"
257                                         } else {
258                                                 catch "file delete $f" dummy
259                                                 catch "file delete $f.0" dummy
260                                                 catch "file delete $f.1" dummy
261                                         }
262                                 }
263                         }
264                 }
265         }
266         if {$fails == 0} {
267         set res [catch "exec rmdir $testdir/$name" dummy]
268                 if {$res != 0} {
269                         incr fails
270                 }
271     }
272
273         if {$fails == 0} {
274                 pass "$name"
275         } else {
276                 fail "$name"
277         }
278 }
279
280 proc runresume { name sz szopts rz rzopts files} {
281         global testdir
282         global srcdir
283         verbose "Testing $name" 1
284         exec mkdir $testdir/$name
285         set trash $srcdir/../src/Makefile.in
286         foreach i $files {
287                 set bn [file tail $i]
288                 catch "exec dd if=$trash of=$testdir/$name/$bn bs=256 count=5" dummy
289         }
290
291         set fails [runthem_internal "$name" "$sz" "$szopts" "$rz" "$rzopts" \
292                 "$files" "" dummy]
293         if {$fails == 0} {
294                 foreach i $files {
295                         set bn [file tail $i]
296                         set f "$testdir/$name/$bn"
297                         set res [catch "exec cmp $i $f" dummy]
298                         if {$res == 0} {
299                                 send_log "receiver did not resume but file is OK\n"
300                                 puts "receiver did not resume but file is OK - error, but not critical"
301                                 incr fails
302                         } else {
303                                 catch "exec dd if=$i of=$f.1 bs=256 count=5" dummy
304                                 catch "exec dd if=$f bs=256 skip=5 >>$f.1" dummy
305                                 set res [catch "exec cmp $i $f.1" dummy]
306                                 if {$res == 0} {
307                                         catch "file delete $f" dummy
308                                         catch "file delete $f.1" dummy
309                                 } else {
310                                         send_log "sender resumed, but files differ. This is really bad\n"
311                                         puts "sender resumed, but files differ. This is really bad"
312                                         incr fails
313                                 }
314                         }
315                 }
316         }
317         if {$fails == 0} {
318         set res [catch "exec rmdir $testdir/$name" dummy]
319                 if {$res != 0} {
320                         incr fails
321                 }
322     }
323
324         if {$fails == 0} {
325                 pass "$name"
326         } else {
327                 fail "$name"
328         }
329 }
330
331 # --protect option
332 proc runprotect { name sz szopts rz rzopts files} {
333         global testdir
334         verbose "Testing $name" 1
335         exec mkdir $testdir/$name
336         foreach i $files {
337                 set bn [file tail $i]
338                 exec touch "$testdir/$name/$bn"
339         }
340         set fails [runthem_internal "$name" "$sz" "$szopts" "$rz" "$rzopts" \
341                 "$files" "" dummy]
342         foreach i $files {
343                 set bn [file tail $i]
344                 set f "$testdir/$name/$bn"
345                 if {[file size $f] != 0} {
346                         incr fails
347                         send_log "$f: size !=0 - overwritten, nit protected\n"
348                 } else {
349                         catch "file delete $f" dummy
350                 }
351         }
352         if {$fails == 0} {
353         set res [catch "exec rmdir $testdir/$name" dummy]
354                 if {$res != 0} {
355                         incr fails
356                 }
357     }
358
359         if {$fails == 0} {
360                 pass "$name"
361         } else {
362                 fail "$name"
363         }
364 }