/
test_init.exp
68 lines (51 loc) · 1.33 KB
/
test_init.exp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
#
# run a anyagent file
#
proc anyagent-run { src } {
set path [split $src "/"]
set filename [lindex $path [expr [llength $path]-1]]
# extract basename and check extension
set fname [split $filename "."]
if {[llength $fname] < 2} {
fail "Bad filename syntax '$src'"
return
}
if {[lindex $fname [expr [llength $fname]-1]] != "anyagent"} {
fail "Not .anyagent extension '$src'"
return
}
# setup filenames
set base_name [lindex $fname 0]
set stdout_name "tests/$base_name.out"
set stderr_name "tests/$base_name.err"
set tmpout_name "tmp.out.$base_name"
set tmperr_name "tmp.err.$base_name"
# run the test
puts "Running $base_name..."
set result ""
set oops [catch { set result [exec "../anyagent" "stdio" "anyagent" "<$src" ">$tmpout_name" "2>$tmperr_name"] } catched]
if {$oops != 0} {
fail "y2anyagent failed: $catched"
return
}
# check return code from y2anyagent
if {$result != ""} {
warning "Compilation of $base_name results in '$result'"
return
}
# check stdout
if {[diff $stdout_name $tmpout_name] != 1} {
fail "Wrong stdout for $base_name"
return
}
# check stderr
# D I S A B L E D
# if {[diff $stderr_name $tmperr_name] != 1} {
# fail "Wrong stderr for $base_name"
# return
# }
#
# ok, all is fine
pass $base_name
return
}