diff options
Diffstat (limited to 'expect/tests/spawn.test')
-rw-r--r-- | expect/tests/spawn.test | 65 |
1 files changed, 65 insertions, 0 deletions
diff --git a/expect/tests/spawn.test b/expect/tests/spawn.test new file mode 100644 index 00000000000..09593c32c00 --- /dev/null +++ b/expect/tests/spawn.test @@ -0,0 +1,65 @@ +# Commands covered: spawn +# +# This file contains a collection of tests for one or more of the Tcl +# built-in commands. Sourcing this file into Tcl runs the tests and +# generates output for errors. No output means no errors were found. + +if {[string compare test [info procs test]] == 1} then {source defs} + +log_user 0 + +#exp_internal -f /dev/ttyp5 0 + +test spawn-1.1 {basic spawn operation} { + set x [catch {exp_spawn cat}] + set first_spawn_id $spawn_id; # save for later test + exp_close;exp_wait + set x +} {0} + +test spawn-1.2 {spawn cat, then simple send/expect sequence} { + set cat [exp_spawn -noecho cat -u] + exp_send "a\r" + expect "a" {set x 1} timeout {set x 0} + exp_close;exp_wait + set x +} {1} + +test spawn-1.3 {spawn two processes simultaneously} { + exp_spawn -noecho cat; set cat $spawn_id + exp_spawn -noecho cat; set cat2 $spawn_id + set x [expr {0!=[string compare [exp_pid -i $cat2] [exp_pid -i $cat]]}] + exp_close -i $cat;exp_wait -i $cat;exp_close -i $cat2;exp_wait -i $cat2 + set x +} {1} + +test spawn-1.4 {spawn open file} { + set x 0 + set y 0 + + set file [open /tmp/[pid] w] + puts $file "testing expect's spawn -open" + exp_close $file + set pid [exp_spawn -open [open /tmp/[pid]]] + expect "testing expect's spawn -open" {set x 1} + expect eof {set y 1} + exec rm /tmp/[pid] + exp_wait + list $x $y $pid +} {1 1 0} + +test spawn-1.5 {spawn with no fd leak} { + exp_spawn cat + set x [expr $first_spawn_id==$spawn_id] + exp_close; exp_wait + set x +} {1} + +# looks to be some control-char problem +#ftest spawn-1.6 {spawn with echo} { +# exp_spawn cat +#} {spawn cat} + +#ftest spawn-1.7 {spawn with -noecho} { +# exp_spawn -noecho cat +#} {} |