blob: 2f6bceadbef28ff174f4ad72809aa0cd3715b033 [file] [log] [blame]
# every test should always be run and always return some status.
# so, if we lose sync with a multi-test program, aborted will be used
# to flag the remainder of the tests as untested.
#set aborted 0
# only match with color codes since "failed" / "OK" might otherwise
# be part of the output...
#set color 1
set xfail 0
proc onesimple { test_name match } {
global verbose
global aborted
global testprefix
if { $aborted > 0 } {
untested "$testprefix$test_name"
return
}
if { $verbose > 0 } {
send_user "$testprefix$test_name$note\n"
}
expect {
"$match" { pass "$testprefix$test_name"; }
eof { fail "$testprefix$test_name"; set aborted 1; }
timeout { unresolved "$testprefix$test_name"; set aborted 1; }
}
}
proc onetest { test_name note start } {
global aborted
global testprefix
global verbose
global color
global xfail
if { $aborted > 0 } {
untested "$testprefix$test_name"
return
}
if { $verbose > 0 } {
send_user "$testprefix$test_name$note\n"
}
expect {
"$start" { }
eof { unresolved "$testprefix$test_name"; set aborted 1; }
timeout { unresolved "$testprefix$test_name"; set aborted 1; }
}
if { $aborted > 0 } {
send_user "sync failed: $testprefix$test_name$note -- $testprefix aborted!\n"
return
}
if { $color } {
set pat "(32mOK|31mfailed)"
} else {
set pat "(OK|failed)"
}
expect {
# need this because otherwise expect will skip over a "failed" and
# grab the next "OK" (or the other way around)
-re "$pat" {
if { "$expect_out(0,string)" == "32mOK" || "$expect_out(0,string)" == "OK" } {
pass "$testprefix$test_name"
} else {
if { $xfail } {
xfail "$testprefix$test_name"
} else {
fail "$testprefix$test_name"
}
}
return
}
eof { unresolved "$testprefix$test_name"; set aborted 1; }
timeout { unresolved "$testprefix$test_name"; set aborted 1; }
}
if { $aborted > 0 } {
send_user "failed: $testprefix$test_name$note -- $testprefix aborted!\n"
return
}
}
proc headerline { line } {
global aborted
if { $aborted > 0 } { return; }
expect {
$line { return; }
eof { send_user "numbering mismatch!\n"; set aborted 1; }
timeout { send_user "numbering mismatch!\n"; set aborted 1; }
}
}
proc simpletest { start } {
onetest "$start" "" "$start"
}