diff mbox series

jit: Fix random truncation of testsuite output

Message ID 20200720111036.jnvu6qu3z4sbj2ns@arm.com
State New
Headers show
Series jit: Fix random truncation of testsuite output | expand

Commit Message

Alex Coplan July 20, 2020, 11:10 a.m. UTC
Hello,

This patch fixes a bug in jit.exp which causes the DejaGnu output of the
libgccjit testsuite to be nondeterministically truncated. This bug was
copied from DejaGnu's own implementation of the host_execute function.
See the upstream bug report [0] where the maintainers point out that the
regex patterns in host_execute should (but don't currently) explicitly
match newlines to avoid relying on DejaGnu not reading more than one
line of the output (which is not guaranteed).

To reproduce the bug, run:

$ make check-jit RUNTESTFLAGS="jit.exp=test-arith-overflow.c"
$ grep -v iteration testsuite/jit/jit.sum

and you should see some lines that have been truncated (I see the word
iteration partially or fully truncated). Alternatively, simply run the
testsuite twice (saving a copy of testsuite/jit/jit.sum from the first
run) and diff the two jit.sum files to observe the random truncations to
the output.

This patch should make it easier to test jit patches in the future,
since it makes it possible to reliably compare the output of two jit.sum
files (as with the other tests in GCC).

Testing:
 * Ran the testsuite before and after the patch, observing that the only
   differences in jit.sum were in test-threads.c (nondeterministic test)
   and where the truncated output from the first run was no longer
   truncated.
 * Ran the testsuite twice after the patch, observing that the only
   differences in jit.sum between the two runs were in test-threads.c.

OK for master?

Thanks,
Alex

---

2020-07-20  Alex Coplan  <alex.coplan@arm.com>

gcc/testsuite/ChangeLog:

	* jit.dg/jit.exp (fixed_host_execute): Fix regex patterns to
	always explicitly match newlines.


[0] : https://debbugs.gnu.org/cgi/bugreport.cgi?bug=42399

Comments

David Malcolm July 20, 2020, 2:44 p.m. UTC | #1
On Mon, 2020-07-20 at 12:10 +0100, Alex Coplan wrote:
> Hello,
> 
> This patch fixes a bug in jit.exp which causes the DejaGnu output of
> the
> libgccjit testsuite to be nondeterministically truncated. This bug
> was
> copied from DejaGnu's own implementation of the host_execute
> function.
> See the upstream bug report [0] where the maintainers point out that
> the
> regex patterns in host_execute should (but don't currently)
> explicitly
> match newlines to avoid relying on DejaGnu not reading more than one
> line of the output (which is not guaranteed).
> 
> To reproduce the bug, run:
> 
> $ make check-jit RUNTESTFLAGS="jit.exp=test-arith-overflow.c"
> $ grep -v iteration testsuite/jit/jit.sum
> 
> and you should see some lines that have been truncated (I see the
> word
> iteration partially or fully truncated). Alternatively, simply run
> the
> testsuite twice (saving a copy of testsuite/jit/jit.sum from the
> first
> run) and diff the two jit.sum files to observe the random truncations
> to
> the output.
> 
> This patch should make it easier to test jit patches in the future,
> since it makes it possible to reliably compare the output of two
> jit.sum
> files (as with the other tests in GCC).
> 
> Testing:
>  * Ran the testsuite before and after the patch, observing that the
> only
>    differences in jit.sum were in test-threads.c (nondeterministic
> test)
>    and where the truncated output from the first run was no longer
>    truncated.
>  * Ran the testsuite twice after the patch, observing that the only
>    differences in jit.sum between the two runs were in test-
> threads.c.
> 
> OK for master?
> 
> Thanks,
> Alex
> 
> ---
> 
> 2020-07-20  Alex Coplan  <alex.coplan@arm.com>
> 
> gcc/testsuite/ChangeLog:
> 
> 	* jit.dg/jit.exp (fixed_host_execute): Fix regex patterns to
> 	always explicitly match newlines.
> 
> 
> [0] : https://debbugs.gnu.org/cgi/bugreport.cgi?bug=42399
`
Thanks for chasing this up. This looks a lot like the issues being
tracked in PR jit/69435, so please add that to the ChangeLog when
committing.

OK for master.
Dave
diff mbox series

Patch

diff --git a/gcc/testsuite/jit.dg/jit.exp b/gcc/testsuite/jit.dg/jit.exp
index 2f54681713b..2d8c884b6b8 100644
--- a/gcc/testsuite/jit.dg/jit.exp
+++ b/gcc/testsuite/jit.dg/jit.exp
@@ -202,37 +202,37 @@  proc fixed_host_execute {args} {
 	    set timetol 0
 	    exp_continue
 	}
-	-re "^$prefix\tNOTE:${text}*" {
+	-re "^$prefix\tNOTE:\[^\r\n\]+\r\n" {
 	    regsub "\[\n\r\t\]*NOTE: $text\r\n" $expect_out(0,string) "" output
-	    set output [string range $output 6 end]
+	    set output [string range $output 6 end-2]
 	    verbose "$output" 2
 	    set timetol 0
 	    exp_continue
 	}
-	-re "^$prefix\tPASSED:${text}*" {
+	-re "^$prefix\tPASSED:\[^\r\n\]+\r\n" {
 	    regsub "\[\n\r\t\]*PASSED: $text\r\n" $expect_out(0,string) "" output
-	    set output [string range $output 8 end]
+	    set output [string range $output 8 end-2]
 	    pass "$output"
 	    set timetol 0
 	    exp_continue
 	}
-	-re "^$prefix\tFAILED:${text}*" {
+	-re "^$prefix\tFAILED:\[^\r\n\]+\r\n" {
 	    regsub "\[\n\r\t\]*FAILED: $text\r\n" $expect_out(0,string) "" output
-	    set output [string range $output 8 end]
+	    set output [string range $output 8 end-2]
 	    fail "$output"
 	    set timetol 0
 	    exp_continue
 	}
-	-re "^$prefix\tUNTESTED:${text}*" {
+	-re "^$prefix\tUNTESTED:\[^\r\n\]+\r\n" {
 	    regsub "\[\n\r\t\]*TESTED: $text\r\n" $expect_out(0,string) "" output
-	    set output [string range $output 8 end]
+	    set output [string range $output 8 end-2]
 	    untested "$output"
 	    set timetol 0
 	    exp_continue
 	}
-	-re "^$prefix\tUNRESOLVED:${text}*" {
+	-re "^$prefix\tUNRESOLVED:\[^\r\n\]+\r\n" {
 	    regsub "\[\n\r\t\]*UNRESOLVED: $text\r\n" $expect_out(0,string) "" output
-	    set output [string range $output 8 end]
+	    set output [string range $output 8 end-2]
 	    unresolved "$output"
 	    set timetol 0
 	    exp_continue