runtests: better handle ^C during slow tests

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.
This commit is contained in:
Dan Fandrich 2023-06-14 15:18:36 -07:00
Родитель 1177c741b9
Коммит 847e42d868
1 изменённых файлов: 4 добавлений и 4 удалений

Просмотреть файл

@ -2775,10 +2775,10 @@ while () {
}
# 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