]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
[3.11] gh-88118: Fix some test_multiprocessing flakiness. (GH-116434) (GH-116441)
authorMiss Islington (bot) <31488909+miss-islington@users.noreply.github.com>
Wed, 6 Mar 2024 22:20:37 +0000 (23:20 +0100)
committerGitHub <noreply@github.com>
Wed, 6 Mar 2024 22:20:37 +0000 (22:20 +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 60e7000c48fa7970b49e6c0e905ba6564a0e3db7..e096401c4cf3162a74174bcb2c56db42dbc26a1f 100644 (file)
@@ -3474,15 +3474,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")