From 62f68ed31f6ace44f524797787df2eb66ffb306c Mon Sep 17 00:00:00 2001
From: Antoine Pitrou <solipsis@pitrou.net>
Date: Wed, 4 Aug 2010 11:48:56 +0000
Subject: [PATCH] Factor out stripping of interpreter debug output in
 test.support.strip_python_stderr()

---
 Lib/test/support.py         | 10 ++++++++++
 Lib/test/test_subprocess.py |  2 +-
 Lib/test/test_threading.py  |  4 ++--
 3 files changed, 13 insertions(+), 3 deletions(-)

diff --git a/Lib/test/support.py b/Lib/test/support.py
index 558fbc2a18..0372f16842 100644
--- a/Lib/test/support.py
+++ b/Lib/test/support.py
@@ -1243,3 +1243,13 @@ def swap_item(obj, item, new_val):
             yield
         finally:
             del obj[item]
+
+def strip_python_stderr(stderr):
+    """Strip the stderr of a Python process from potential debug output
+    emitted by the interpreter.
+
+    This will typically be run on the result of the communicate() method
+    of a subprocess.Popen object.
+    """
+    stderr = re.sub(br"\[\d+ refs\]\r?\n?$", b"", stderr).strip()
+    return stderr
diff --git a/Lib/test/test_subprocess.py b/Lib/test/test_subprocess.py
index e6ba8cb1ea..eb0f5d73ab 100644
--- a/Lib/test/test_subprocess.py
+++ b/Lib/test/test_subprocess.py
@@ -53,7 +53,7 @@ class BaseTestCase(unittest.TestCase):
         # In a debug build, stuff like "[6580 refs]" is printed to stderr at
         # shutdown time.  That frustrates tests trying to check stderr produced
         # from a spawned Python process.
-        actual = re.sub("\[\d+ refs\]\r?\n?$", "", stderr.decode()).encode()
+        actual = support.strip_python_stderr(stderr)
         self.assertEqual(actual, expected, msg)
 
 
diff --git a/Lib/test/test_threading.py b/Lib/test/test_threading.py
index bf9f90d3b1..39c5a17231 100644
--- a/Lib/test/test_threading.py
+++ b/Lib/test/test_threading.py
@@ -1,7 +1,7 @@
 # Very rudimentary test of threading module
 
 import test.support
-from test.support import verbose
+from test.support import verbose, strip_python_stderr
 import random
 import re
 import sys
@@ -350,7 +350,7 @@ class ThreadTests(BaseTestCase):
         stdout, stderr = p.communicate()
         self.assertEqual(stdout.strip(),
             b"Woke up, sleep function is: <built-in function sleep>")
-        stderr = re.sub(br"^\[\d+ refs\]", b"", stderr, re.MULTILINE).strip()
+        stderr = strip_python_stderr(stderr)
         self.assertEqual(stderr, b"")
 
     def test_enumerate_after_join(self):
-- 
2.40.0