Check if test has reportable output in process_test

Tom de Vries <[email protected]>
Newsgroups gmane.comp.sysutils.dejagnu.general
Message-ID <[email protected]>
Hi,

I found a problem in the dejagnu testsuite, with process_test.

If there is a problem running a .test file, then process_test is silent 
about it.

This minimal demonstrator patch adds basic reporting if there is a 
problem, by checking that at least a single clause in the expect command 
triggered. Using this patch we're able to demonstrate that there are 
problems in target.test and remote.test.

Thanks,
- Tom

_______________________________________________
DejaGnu mailing list
[email protected]
https://lists.gnu.org/mailman/listinfo/dejagnu
0001-Check-if-test-has-reportable-output-in-process_test.patch (text/x-patch, 2.4 KB)
Check if test has reportable output in process_test

Result:
...
Running target unix
Using ../src/testsuite/config/default.exp as tool-and-target-specific interface file.
Running ../src/testsuite/libdejagnu/tunit.exp ...
Running ../src/testsuite/runtest.all/libs.exp ...
ERROR: ../src/testsuite/runtest.all/target.test gives no reportable output
ERROR: ../src/testsuite/runtest.all/remote.test gives no reportable output
Running ../src/testsuite/runtest.all/load_lib.exp ...
Running ../src/testsuite/runtest.all/options.exp ...
Running ../src/testsuite/runtest.all/stats-sub.exp ...
Running ../src/testsuite/runtest.all/stats.exp ...
...

2017-06-03  Tom de Vries  <[email protected]>

	* testsuite/runtest.all/libs.exp (process_test): Check if test has
	reportable output.

---
 testsuite/runtest.all/libs.exp | 12 ++++++++++++
 1 file changed, 12 insertions(+)

diff --git a/testsuite/runtest.all/libs.exp b/testsuite/runtest.all/libs.exp
index 7520e12..c201258 100644
--- a/testsuite/runtest.all/libs.exp
+++ b/testsuite/runtest.all/libs.exp
@@ -31,40 +31,52 @@ proc process_test { test } {
 
     if [file exists $test] {
 	verbose "Processing test $test" 2
+	set n 0
 	spawn -open  [open "|$EXPECT $test $srcdir $subdir [pwd]" r]
 	expect {
 	    "No such file or directory" {
 		perror "$test wouldn't run" 0
+		set n [expr $n + 1]
 	    }
 	    -re "\[\r\n\]*NOTSUPPORTED: $text\[\r\n\]*" {
 		unsupported "[lrange $expect_out(0,string) 1 end]"
+		set n [expr $n + 1]
 		exp_continue
 	    }
 	    -re "\[\r\n\]*NOTTESTED: $text\[\r\n\]*" {
 		untested "[lrange $expect_out(0,string) 1 end]"
+		set n [expr $n + 1]
 		exp_continue
 	    }
 	    -re "\[\r\n\]*PASSED: $text\[\r\n\]*" {
 		pass "[lrange $expect_out(0,string) 1 end]"
+		set n [expr $n + 1]
 		exp_continue
 	    }
 	    -re "\[\r\n\]*FAILED: $text\[\r\n\]*" {
 		fail "[lrange $expect_out(0,string) 1 end]"
+		set n [expr $n + 1]
 		exp_continue
 	    }
 	    -re "\[\r\n\]*WARNED: $text\[\r\n\]*" {
 		verbose "$expect_out(0,string)" 2
+		set n [expr $n + 1]
 		exp_continue
 	    }
 	    -re "\[\r\n\]*ERRORED: $text\[\r\n\]*" {
 		verbose "$expect_out(0,string)" 2
+		set n [expr $n + 1]
 		exp_continue
 	    }
 	    timeout {
 		perror "$test timed out" 0
+		set n [expr $n + 1]
 		exp_continue
 	    }
 	    eof {
+		if { $n == 0 } {
+		    perror "$test gives no reportable output" 0
+		}
 		verbose "All Done" 3
 	    }
 	}
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.