sim; testsuite: allow tests to set no output
authorMike Frysinger <vapier@gentoo.org>
Sun, 29 Mar 2015 20:41:59 +0000 (16:41 -0400)
committerMike Frysinger <vapier@gentoo.org>
Sun, 29 Mar 2015 20:41:59 +0000 (16:41 -0400)
If a test doesn't write anything at all to stdout, the current test
framework can't support that.  Even if you put a blank output line:
# output:
the setup happily clobbers that with a default pass/fail string.

Tweak the parsing logic so we only set the output to pass/fail when
the test has no output marker.

sim/testsuite/ChangeLog
sim/testsuite/lib/sim-defs.exp

index 6de8bdc1a26c64fd23690a5cf180bb3a6890a20a..55ef16951ee7fcbb348e4196bfd10469e34243bc 100644 (file)
@@ -1,3 +1,9 @@
+2015-03-29  Mike Frysinger  <vapier@gentoo.org>
+
+       * lib/sim-defs.exp (run_sim_test): Declare seen_output as 0.  When
+       the test has an output keyword, set it to 1.  Set default output only
+       when seen_output is 0.
+
 2015-03-29  Mike Frysinger  <vapier@gentoo.org>
 
        * configure: Regenerate.
index c8093a25566ffd67ca6c008e86091c0fbffeffe8..fb2346a60da01ab9cfbd9426dbd3ee997d77829a 100644 (file)
@@ -218,6 +218,7 @@ proc run_sim_test { name requested_machs } {
     set opts(xerror) "no"
     set opts(xfail) ""
     set opts(kfail) ""
+    set seen_output 0
 
     if ![info exists global_as_options] {
         set global_as_options ""
@@ -260,6 +261,7 @@ proc run_sim_test { name requested_machs } {
        # Multiple "output" specifications concatenate, they don't override.
        if { $opt_name == "output" } {
            set opt_val "$opts(output)$opt_val"
+           set seen_output 1
        }
        # Similar with "xfail" and "kfail", but arguments are space-separated.
        if { $opt_name == "xfail" || $opt_name == "kfail" } {
@@ -276,7 +278,7 @@ proc run_sim_test { name requested_machs } {
 
     set testname $name
     set sourcefile $file
-    if { $opts(output) == "" } {
+    if { $seen_output == 0 } {
        if { "$opts(xerror)" == "no" } {
            set opts(output) "pass\n"
        } else {