Annotation of embedaddon/lrzsz/testsuite/lib/lrzsz.exp, revision 1.1.1.1

1.1       misho       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: }

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>