Since the SIGINT handler now just sets a flag that must be checked in the
main controller loop, make sure that runs periodically. Rather than
blocking on a response from a test runner near the end of the test run,
add a short timeout to allow it.
}
# See if a test runner needs attention
- # If we could be running more tests, wait just a moment so we can schedule
- # a new one shortly. If all runners are busy, wait indefinitely for one to
- # finish.
- my $runnerwait = scalar(@runnersidle) && scalar(@runtests) ? 0 : undef;
+ # If we could be running more tests, don't wait so we can schedule a new
+ # one immediately. If all runners are busy, wait a fraction of a second
+ # for one to finish so we can still loop around to check the abort flag.
+ my $runnerwait = scalar(@runnersidle) && scalar(@runtests) ? 0 : 0.5;
my $ridready = runnerar_ready($runnerwait);
if($ridready) {
# This runner is ready to be serviced