From: Richard Oudkerk Date: Thu, 22 Aug 2013 22:37:23 +0000 (+0100) Subject: Make test for semaphore tracker capture and check the debug output. X-Git-Tag: v3.4.0a2~148 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=67e5198dbf0dd184fba751540574963ace294ced;p=python Make test for semaphore tracker capture and check the debug output. --- diff --git a/Lib/test/_test_multiprocessing.py b/Lib/test/_test_multiprocessing.py index d1c7f0ba00..d7e5332ac8 100644 --- a/Lib/test/_test_multiprocessing.py +++ b/Lib/test/_test_multiprocessing.py @@ -3580,16 +3580,11 @@ class TestSemaphoreTracker(unittest.TestCase): os.write(%d, lock2._semlock.name.encode("ascii") + b"\\n") time.sleep(10) ''' - print("\nTestSemaphoreTracker will output warnings a bit like:\n" - " ... There appear to be 2 leaked semaphores" - " to clean up at shutdown\n" - " ... '/mp-03jgqz': [Errno 2] No such file or directory", - file=sys.stderr) r, w = os.pipe() p = subprocess.Popen([sys.executable, - #'-W', 'ignore:semaphore_tracker', '-c', cmd % (w, w)], - pass_fds=[w]) + pass_fds=[w], + stderr=subprocess.PIPE) os.close(w) with open(r, 'rb', closefd=True) as f: name1 = f.readline().rstrip().decode('ascii') @@ -3602,6 +3597,11 @@ class TestSemaphoreTracker(unittest.TestCase): _multiprocessing.sem_unlink(name2) # docs say it should be ENOENT, but OSX seems to give EINVAL self.assertIn(ctx.exception.errno, (errno.ENOENT, errno.EINVAL)) + err = p.stderr.read().decode('utf-8') + p.stderr.close() + expected = 'semaphore_tracker: There appear to be 2 leaked semaphores' + self.assertRegex(err, expected) + self.assertRegex(err, 'semaphore_tracker: %r: \[Errno' % name1) # # Mixins