diff options
author | Miss Islington (bot) <31488909+miss-islington@users.noreply.github.com> | 2019-10-02 11:54:18 (GMT) |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-10-02 11:54:18 (GMT) |
commit | a72de9338882b8013a4bb8adb930fe3308682e28 (patch) | |
tree | 15b34ed77b4ce478c1547306e6b99ef4be34e3c5 /Lib/test/libregrtest | |
parent | a11df75269b5d47248be617ed02e96c1d1938fd1 (diff) | |
download | cpython-a72de9338882b8013a4bb8adb930fe3308682e28.zip cpython-a72de9338882b8013a4bb8adb930fe3308682e28.tar.gz cpython-a72de9338882b8013a4bb8adb930fe3308682e28.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().
(cherry picked from commit 2ea71a07d0a720707094ee55f78fd232c40724bc)
Co-authored-by: Victor Stinner <vstinner@python.org>
Diffstat (limited to 'Lib/test/libregrtest')
-rw-r--r-- | Lib/test/libregrtest/runtest_mp.py | 22 |
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 |