Update with current status
[gnash.git] / testsuite / simple.exp
blob9451f454f8c4f7b992dd0f480c0b5f64fa3f8312
2 load_lib "dejagnu.exp"
5 # If tracing has been enabled at the top level, then turn it on here
6 # too.
7 if $tracelevel {
8     strace $tracelevel
11 # After these many seconds of execution the test script is aborted
12 # with a failure.
13 # This is to handle deadlocks. We don't reset the timeout when a match is
14 # found to avoid hanging in case of a testcase sending matches in an
15 # infinite loops.
16 # (not unlikely as it seems, think about flash movies...)
18 # Expressed in seconds.
20 set timeout 300
21 set file all
22 set params ""
24 global env
26 # testcases is set by the Makefile in the site.exp data file.
27 foreach file $testcases {
29     verbose "Running test $file"
31     # spawn the executable and look for the DejaGnu output messages from the
32     # test case.
34     # this version of the call allows use of 'wait' to check return code
35     # -open [open "|cmd" "r"] doesn't work for that
36   
37     # Ignore SIGHUP or we'd get a lot of them on Debian stable
38     set PID [spawn -noecho -ignore SIGHUP ./$file]
40     expect {
41         -re "^\[^\n]*NOTE:\[^\n]*\n" {
42             regsub ".*NOTE: " $expect_out(0,string) "" output
43             set output [string range $output 0 end-2]
44             verbose "${file} $output" 
45             # notes tipically come from the test runner, so we'll trust it to mean 
46             # things are someone not too bad...
47             # -continue_timer
48             exp_continue
49         }
50         -re "^\[^\n]* ERROR:\[^\n]*\n" {
51             regsub ".* ERROR: " $expect_out(0,string) "" output
52             set output [string range $output 0 end-2]
53             verbose "ERROR: ${file}: $output" 
54             exp_continue -continue_timer
55         }
56         -re "^\[^\n]*XPASSED:\[^\n]*\n" {
57             regsub ".*XPASSED: " $expect_out(0,string) "" output
58             set output [string range $output 0 end-2]
59             xpass "${file}: $output"
60             exp_continue -continue_timer
61         }
62         -re "^\[^\n]*PASSED:\[^\n]*\n" {
63             regsub ".*PASSED: " $expect_out(0,string) "" output
64             set output [string range $output 0 end-2]
65             pass "${file}: $output"
66             exp_continue -continue_timer
67         }
68         -re "^\[^\n]*XFAILED:\[^\n]*\n" {
69             regsub ".*XFAILED: " $expect_out(0,string) "" output
70             set output [string range $output 0 end-2] 
71             xfail "${file}: $output"
72             exp_continue -continue_timer
73         }
74         -re "^\[^\n]*FAILED:\[^\n]*\n" {
75             regsub ".*FAILED: " $expect_out(0,string) "" output
76             set output [string range $output 0 end-2] 
77             fail "${file}: $output"
78             exp_continue -continue_timer
79         }
80         -re "^\[^\n]*UNTESTED:\[^\n]*\n" {
81             regsub ".*UNTESTED: " $expect_out(0,string) "" output
82             set output [string range $output 0 end-2]
83             untested "${file}: $output"
84             exp_continue -continue_timer
85         }
86         -re "^\[^\n]*UNRESOLVED:\[^\n]*\n" {
87             regsub ".*UNRESOLVED: " $expect_out(0,string) "" output
88             set output [string range $output 0 end-2]
89             unresolved "${file}: $output"
90             exp_continue -continue_timer
91         }
92         -re "^\[^\n]*\n" {
93             # just remove non-matching lines!
94             exp_continue -continue_timer
95         }
96         eof {
97             #       unresolved "${file} died prematurely"
98             #       catch close
99             #       return "${file} died prematurely"
100         }
101         timeout {
102                 fail "Test case ${file} still running after ${timeout} seconds, killing it (deadlock?)"
103                 exec kill -9 $PID
104                 catch close
105                 continue;
106         }
107    }
109         # wait for the process to coplete to
110         # check return code
111         set retcode [wait]
113         # debugging
114         #set i 0; foreach j $retcode { print "${file} wait($i) $j"; incr i }
116         # This snippet catches segfaults and aborts.
117         # Would also catch SIGHUP, but we're ignoring them
118         # as on Debian Stable we unexpectedly get them for no apparent reason
119         #
120         if { [ llength $retcode ] > 5 } {
121                 fail "${file} died prematurely ([lindex $retcode 6])"
122         }
124         # This snippet catches non-zero returns
125         if { [ lindex $retcode 3 ] != 0 } {
126                 fail "${file} exited with non-zero code ([lindex $retcode 3])"
127         }
129     # force a close of the executable to be safe.
130     catch close