From: Miss Islington (bot) <31488909+miss-islington@users.noreply.github.com> Date: Tue, 25 Jun 2019 22:49:31 +0000 (-0700) Subject: bpo-37244: Fix test_multiprocessing.test_resource_tracker() (GH-14288) X-Git-Tag: v3.8.0b2~51 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=dd4edbc5ad4cdb47e051e7cc0801d31d3786588b;p=python bpo-37244: Fix test_multiprocessing.test_resource_tracker() (GH-14288) Increase robustness of test_resource_tracker(): retry for 60 seconds. (cherry picked from commit e1a63c4f21011a3ae77dff624196561070c83446) Co-authored-by: Pierre Glaser --- diff --git a/Lib/test/_test_multiprocessing.py b/Lib/test/_test_multiprocessing.py index 07cf09aaa4..eef262d723 100644 --- a/Lib/test/_test_multiprocessing.py +++ b/Lib/test/_test_multiprocessing.py @@ -5010,12 +5010,21 @@ class TestResourceTracker(unittest.TestCase): _resource_unlink(name1, rtype) p.terminate() p.wait() - time.sleep(2.0) - with self.assertRaises(OSError) as ctx: - _resource_unlink(name2, rtype) - # docs say it should be ENOENT, but OSX seems to give EINVAL - self.assertIn( - ctx.exception.errno, (errno.ENOENT, errno.EINVAL)) + + deadline = time.monotonic() + 60 + while time.monotonic() < deadline: + time.sleep(.5) + try: + _resource_unlink(name2, rtype) + except OSError as e: + # docs say it should be ENOENT, but OSX seems to give + # EINVAL + self.assertIn(e.errno, (errno.ENOENT, errno.EINVAL)) + break + else: + raise AssertionError( + f"A {rtype} resource was leaked after a process was " + f"abruptly terminated.") err = p.stderr.read().decode('utf-8') p.stderr.close() expected = ('resource_tracker: There appear to be 2 leaked {} '