summaryrefslogtreecommitdiffstats
path: root/Lib
diff options
context:
space:
mode:
authorVictor Stinner <vstinner@python.org>2019-10-02 11:35:11 (GMT)
committerGitHub <noreply@github.com>2019-10-02 11:35:11 (GMT)
commit2ea71a07d0a720707094ee55f78fd232c40724bc (patch)
treefb4b9586f6f7defa3859ef633c6421e573ecf1b2 /Lib
parentb9a8b8296cd7be22f8b5bf92af686a788c47c7bf (diff)
downloadcpython-2ea71a07d0a720707094ee55f78fd232c40724bc.zip
cpython-2ea71a07d0a720707094ee55f78fd232c40724bc.tar.gz
cpython-2ea71a07d0a720707094ee55f78fd232c40724bc.tar.bz2
bpo-36670: regrtest bug fixes (GH-16537)
* Fix TestWorkerProcess.__repr__(): start_time is only valid if _popen is not None. * Fix _kill(): don't set _killed to True if _popen is None. * _run_process(): only set _killed to False after calling run_test_in_subprocess().
Diffstat (limited to 'Lib')
-rw-r--r--Lib/test/libregrtest/runtest_mp.py22
1 files changed, 12 insertions, 10 deletions
diff --git a/Lib/test/libregrtest/runtest_mp.py b/Lib/test/libregrtest/runtest_mp.py
index 38b0578..a46c782 100644
--- a/Lib/test/libregrtest/runtest_mp.py
+++ b/Lib/test/libregrtest/runtest_mp.py
@@ -120,27 +120,28 @@ class TestWorkerProcess(threading.Thread):
def __repr__(self):
info = [f'TestWorkerProcess #{self.worker_id}']
if self.is_alive():
- dt = time.monotonic() - self.start_time
- info.append("running for %s" % format_duration(dt))
+ info.append("running")
else:
info.append('stopped')
test = self.current_test_name
if test:
info.append(f'test={test}')
popen = self._popen
- if popen:
- info.append(f'pid={popen.pid}')
+ if popen is not None:
+ dt = time.monotonic() - self.start_time
+ info.extend((f'pid={self._popen.pid}',
+ f'time={format_duration(dt)}'))
return '<%s>' % ' '.join(info)
def _kill(self):
- if self._killed:
- return
- self._killed = True
-
popen = self._popen
if popen is None:
return
+ if self._killed:
+ return
+ self._killed = True
+
print(f"Kill {self}", file=sys.stderr, flush=True)
try:
popen.kill()
@@ -177,9 +178,10 @@ class TestWorkerProcess(threading.Thread):
self.current_test_name = test_name
try:
+ popen = run_test_in_subprocess(test_name, self.ns)
+
self._killed = False
- self._popen = run_test_in_subprocess(test_name, self.ns)
- popen = self._popen
+ self._popen = popen
except:
self.current_test_name = None
raise