Import Upstream version 1.2.2
[quagga-debian.git] / tests / config / unix.exp
1
2 # every test should always be run and always return some status.
3 # so, if we lose sync with a multi-test program, aborted will be used
4 # to flag the remainder of the tests as untested.
5 #set aborted 0
6
7 # only match with color codes since "failed" / "OK" might otherwise
8 # be part of the output...
9 #set color 1
10
11 set xfail 0
12
13 proc onesimple { test_name match } {
14         global verbose
15         global aborted
16         global testprefix
17         if { $aborted > 0 } {
18                 untested "$testprefix$test_name"
19                 return
20         }
21         if { $verbose > 0 } {
22                 send_user "$testprefix$test_name$note\n"
23         }
24         expect {
25                 "$match"        { pass "$testprefix$test_name"; }
26                 eof             { fail "$testprefix$test_name"; set aborted 1; }
27                 timeout         { unresolved "$testprefix$test_name"; set aborted 1; }
28         }
29 }
30
31 proc onetest { test_name note start } {
32         global aborted
33         global testprefix
34         global verbose
35         global color
36         global xfail
37
38         if { $aborted > 0 } {
39                 untested "$testprefix$test_name"
40                 return
41         }
42
43         if { $verbose > 0 } {
44                 send_user "$testprefix$test_name$note\n"
45         }
46         expect {
47                 "$start"        { }
48
49                 eof     { unresolved "$testprefix$test_name"; set aborted 1; }
50                 timeout { unresolved "$testprefix$test_name"; set aborted 1; }
51         }
52
53         if { $aborted > 0 } {
54                 send_user "sync failed: $testprefix$test_name$note -- $testprefix aborted!\n"
55                 return
56         }
57
58         if { $color } {
59                 set pat "(32mOK|31mfailed)"
60         } else {
61                 set pat "(OK|failed)"
62         }
63         expect {
64                 # need this because otherwise expect will skip over a "failed" and
65                 # grab the next "OK" (or the other way around)
66                 -re "$pat"  {
67                         if { "$expect_out(0,string)" == "32mOK" || "$expect_out(0,string)" == "OK" } {
68                                 pass "$testprefix$test_name"
69                         } else {
70                                 if { $xfail } {
71                                         xfail "$testprefix$test_name"
72                                 } else {
73                                         fail "$testprefix$test_name"
74                                 }
75                         }
76                         return
77                 }
78
79                 eof     { unresolved "$testprefix$test_name"; set aborted 1; }
80                 timeout { unresolved "$testprefix$test_name"; set aborted 1; }
81         }
82
83         if { $aborted > 0 } {
84                 send_user "failed: $testprefix$test_name$note -- $testprefix aborted!\n"
85                 return
86         }
87 }
88
89 proc headerline { line } {
90         global aborted
91         if { $aborted > 0 } { return; }
92         expect {
93                 $line   { return; }
94                 eof     { send_user "numbering mismatch!\n"; set aborted 1; }
95                 timeout { send_user "numbering mismatch!\n"; set aborted 1; }
96         }
97 }
98
99 proc simpletest { start } {
100         onetest "$start" "" "$start"
101 }
102