]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
[3.12] gh-88118: Fix some test_multiprocessing flakiness. (GH-116434) (GH-116440)
authorMiss Islington (bot) <31488909+miss-islington@users.noreply.github.com>
Wed, 6 Mar 2024 22:13:49 +0000 (23:13 +0100)
committerGitHub <noreply@github.com>
Wed, 6 Mar 2024 22:13:49 +0000 (22:13 +0000)
Fix some test_multiprocessing flakiness.

Potentially introduced by https://github.com/python/cpython/pull/25845

not joining that thread likely leads to recently observed "environment
changed" logically passing but overall failing tests seen on some
buildbots similar to:

```
1 test altered the execution environment (env changed):
    test.test_multiprocessing_fork.test_processes

2 re-run tests:
    test.test_multiprocessing_fork.test_processes
    test.test_multiprocessing_forkserver.test_processes
```
(cherry picked from commit ea1803e608a7aaf9cf2c07e510d8540d46d3b9ad)

Co-authored-by: Gregory P. Smith <greg@krypto.org>
Lib/test/_test_multiprocessing.py

index 54ee93ae4d3ca0da7945522433b70aaec3c69dba..9e688efb1e469bfd2fffba8e501cc3c6eeb9a056 100644 (file)
@@ -3475,15 +3475,20 @@ class _TestListener(BaseTestCase):
             client = self.connection.Client(addr, authkey=authkey)
             client.send(1729)
 
-        key = b""
+        key = b''
 
         with self.connection.Listener(authkey=key) as listener:
-            threading.Thread(target=run, args=(listener.address, key)).start()
-            with listener.accept() as d:
-                self.assertEqual(d.recv(), 1729)
+            thread = threading.Thread(target=run, args=(listener.address, key))
+            thread.start()
+            try:
+                with listener.accept() as d:
+                    self.assertEqual(d.recv(), 1729)
+            finally:
+                thread.join()
 
         if self.TYPE == 'processes':
-            self.assertRaises(OSError, listener.accept)
+            with self.assertRaises(OSError):
+                listener.accept()
 
     @unittest.skipUnless(util.abstract_sockets_supported,
                          "test needs abstract socket support")