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
|
set self parse-semko
set test_suffix "parse-semko"
# Make sure that we can *parse* all semko test files, to ensure that
# it is semantic (elaboration) (-p2) checks that fail, not parse
# errors (-p1).
foreach file [lsort [glob -nocomplain $srcdir/semko/*.stp]] {
set test "semko/[file tail $file]"
set full_test "${test} ${test_suffix}"
# Most of the test cases use '#! stap ...'. Try to read this
# information.
set f [open $file r]
set firstbits [gets $f]
close $f
if {[regexp -line {\#! (stap .+)} $firstbits -> stap_cmd]} {
# First, we need to substitute pass 1 for pass 2.
if {! [regsub {p2} $stap_cmd {p1} stap_cmd]} {
fail "${full_test} - pass 1 substitute"
continue
}
pass "${full_test} - pass 1 substitute"
# Now run the script using '-p1'.
set cmd [concat ${stap_cmd} ${file}]
verbose -log "Running $cmd"
if {[catch {eval exec ${cmd}} res]} {
verbose -log "$res"
fail "${full_test} - parsing"
continue
}
pass "${full_test} - parsing"
} else {
# If "stap" wasn't on the first line of the script, this isn't
# a systemtap script, but a shell script that will run
# systemtap. We'll have to skip these.
untested "$full_test - shell script"
continue
}
}
|