]> granicus.if.org Git - python/commitdiff
bpo-36670: regrtest bug fixes (GH-16537)
authorMiss Islington (bot) <31488909+miss-islington@users.noreply.github.com>
Wed, 2 Oct 2019 11:54:18 +0000 (04:54 -0700)
committerGitHub <noreply@github.com>
Wed, 2 Oct 2019 11:54:18 +0000 (04:54 -0700)
* 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>
Lib/test/libregrtest/runtest_mp.py

index 38b05781de5fc7538919d3b83375f73a532efbec..a46c78248de39e60d8cf64521ee7c11a3136cc95 100644 (file)
@@ -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