| |
| # 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" |
| } |
| |