]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
[3.11] gh-110918: Fix side effects of regrtest test_match_tests() (GH-116718) (#116727)
authorMiss Islington (bot) <31488909+miss-islington@users.noreply.github.com>
Wed, 13 Mar 2024 14:35:59 +0000 (15:35 +0100)
committerGitHub <noreply@github.com>
Wed, 13 Mar 2024 14:35:59 +0000 (14:35 +0000)
gh-110918: Fix side effects of regrtest test_match_tests() (GH-116718)

test_match_tests now saves and restores patterns.

Add get_match_tests() function to libregrtest.filter.

Previously, running test_regrtest multiple times in a row only ran
tests once: "./python -m test test_regrtest -R 3:3.
(cherry picked from commit 612f1ec988314bc0bc42a1b908751950331e2ede)

Co-authored-by: Victor Stinner <vstinner@python.org>
Lib/test/libregrtest/filter.py
Lib/test/test_regrtest.py

index 817624d79e926320a5687f8a687a38462e0888c5..41372e427ffd037e4f98151a019694485a2e28ff 100644 (file)
@@ -27,6 +27,11 @@ def _is_full_match_test(pattern):
     return ('.' in pattern) and (not re.search(r'[?*\[\]]', pattern))
 
 
+def get_match_tests():
+    global _test_patterns
+    return _test_patterns
+
+
 def set_match_tests(patterns):
     global _test_matchers, _test_patterns
 
index 2ab6f6a9862d6fc9ed18add136478e9f5146875a..08b3f144380bf362891df7fe4db13c4f1a657f9d 100644 (file)
@@ -27,7 +27,7 @@ from test.libregrtest import cmdline
 from test.libregrtest import main
 from test.libregrtest import setup
 from test.libregrtest import utils
-from test.libregrtest.filter import set_match_tests, match_test
+from test.libregrtest.filter import get_match_tests, set_match_tests, match_test
 from test.libregrtest.result import TestStats
 from test.libregrtest.utils import normalize_test_name
 
@@ -2234,6 +2234,10 @@ class TestUtils(unittest.TestCase):
             def id(self):
                 return self.test_id
 
+        # Restore patterns once the test completes
+        patterns = get_match_tests()
+        self.addCleanup(set_match_tests, patterns)
+
         test_access = Test('test.test_os.FileTests.test_access')
         test_chdir = Test('test.test_os.Win32ErrorTests.test_chdir')
         test_copy = Test('test.test_shutil.TestCopy.test_copy')