diff options
author | Victor Stinner <vstinner@python.org> | 2019-10-02 11:35:11 (GMT) |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-10-02 11:35:11 (GMT) |
commit | 2ea71a07d0a720707094ee55f78fd232c40724bc (patch) | |
tree | fb4b9586f6f7defa3859ef633c6421e573ecf1b2 /Lib | |
parent | b9a8b8296cd7be22f8b5bf92af686a788c47c7bf (diff) | |
download | cpython-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.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 |