bpo-37531: Fix regrtest timeout for subprocesses (GH-15072)
Co-Authored-By: Joannah Nanjekye <joannah.nanjekye@ibm.com>
diff --git a/Lib/test/libregrtest/runtest.py b/Lib/test/libregrtest/runtest.py
index a43b766..e7dce18 100644
--- a/Lib/test/libregrtest/runtest.py
+++ b/Lib/test/libregrtest/runtest.py
@@ -13,7 +13,7 @@
from test import support
from test.libregrtest.refleak import dash_R, clear_caches
from test.libregrtest.save_env import saved_test_environment
-from test.libregrtest.utils import print_warning
+from test.libregrtest.utils import format_duration, print_warning
# Test result constants.
@@ -25,6 +25,7 @@
INTERRUPTED = -4
CHILD_ERROR = -5 # error in a child process
TEST_DID_NOT_RUN = -6
+TIMEOUT = -7
_FORMAT_TEST_RESULT = {
PASSED: '%s passed',
@@ -35,6 +36,7 @@
INTERRUPTED: '%s interrupted',
CHILD_ERROR: '%s crashed',
TEST_DID_NOT_RUN: '%s run no tests',
+ TIMEOUT: '%s timed out',
}
# Minimum duration of a test to display its duration or to mention that
@@ -75,7 +77,10 @@
def format_test_result(result):
fmt = _FORMAT_TEST_RESULT.get(result.result, "%s")
- return fmt % result.test_name
+ text = fmt % result.test_name
+ if result.result == TIMEOUT:
+ text = '%s (%s)' % (text, format_duration(result.test_time))
+ return text
def findtestdir(path=None):
@@ -179,6 +184,7 @@
FAILED test failed
PASSED test passed
EMPTY_TEST_SUITE test ran no subtests.
+ TIMEOUT test timed out.
If ns.xmlpath is not None, xml_data is a list containing each
generated testsuite element.