Fix bug in test driver
authorJacob Bachmeyer <jcb@gnu.org>
Sat, 25 Mar 2023 01:02:00 +0000 (20:02 -0500)
committerJacob Bachmeyer <jcb@gnu.org>
Sat, 25 Mar 2023 01:02:00 +0000 (20:02 -0500)
This bug was exposed in commit fc58d8e82444d9f949f2ac5cbbed928ad6b12c30,
but only affected testsuite runs when coverage data is collected.

The exact cause is unknown, but that commit changed the processing used
for verifying signatures and the bug caused the testsuite to prematurely
declare the gatekeeper run complete and move on to the next test when a
signature was verified.  Presumably, the improved signature verification
somehow interacted poorly with Expect.

Bizarrely, the issue only occurred when Devel::Cover was used to check
the coverage of the testsuite and did not occur under regular testing.
The root cause is surely timing related, since perl is much slower when
collecting code coverage data.  This is also the reason the bug went
unnoticed for so long:  coverage runs are infrequent except when making
improvements to the testsuite.

testsuite/lib/gatekeeper.exp

index e4c9f5ae2fdd8d3f9cd8938d839eeea6e922204b..e3a02202757b474ec2569af5e8e3d91931e53cf0 100644 (file)
@@ -311,7 +311,8 @@ proc run_upload_batch_test {} {
     lappend runcmd $GATEKEEPER_TOOL --testing-this-script
     eval $runcmd
     # copy any output produced to the log
-    expect { -re {.+} { exp_continue }  eof { wait } }
+    expect { -re {.+} { exp_continue }  eof }
+    wait -i $spawn_id
 }
 
 proc analyze_file_tree { base_dir name zones mode {itemlist {}} } {