]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
gh-119659: Move `@no_rerun` to `test.support` (#119660)
authorNikita Sobolev <mail@sobolevn.me>
Tue, 28 May 2024 15:50:50 +0000 (18:50 +0300)
committerGitHub <noreply@github.com>
Tue, 28 May 2024 15:50:50 +0000 (18:50 +0300)
Lib/test/datetimetester.py
Lib/test/support/__init__.py
Lib/test/test_import/__init__.py

index ba7f185a092629a45db0055ec76ca62b3ef8d5a5..535b17d0727611302f6dd21d6e6d636c62c833ad 100644 (file)
@@ -22,7 +22,7 @@ from operator import lt, le, gt, ge, eq, ne, truediv, floordiv, mod
 
 from test import support
 from test.support import is_resource_enabled, ALWAYS_EQ, LARGEST, SMALLEST
-from test.support import warnings_helper
+from test.support import warnings_helper, no_rerun
 
 import datetime as datetime_module
 from datetime import MINYEAR, MAXYEAR
@@ -47,26 +47,6 @@ except ImportError:
     pass
 #
 
-# This is copied from test_import/__init__.py.
-# XXX Move it to support/__init__.py.
-def no_rerun(reason):
-    """Skip rerunning for a particular test.
-
-    WARNING: Use this decorator with care; skipping rerunning makes it
-    impossible to find reference leaks. Provide a clear reason for skipping the
-    test using the 'reason' parameter.
-    """
-    def deco(func):
-        _has_run = False
-        def wrapper(self):
-            nonlocal _has_run
-            if _has_run:
-                self.skipTest(reason)
-            func(self)
-            _has_run = True
-        return wrapper
-    return deco
-
 pickle_loads = {pickle.loads, pickle._loads}
 
 pickle_choices = [(pickle, pickle, proto)
index e2a854663ddb7d203fcaf6e87832aedf167adea6..5825efadffcb29bf0bc9c64dcaeaec44b5750332 100644 (file)
@@ -1189,6 +1189,25 @@ def no_tracing(func):
     return coverage_wrapper
 
 
+def no_rerun(reason):
+    """Skip rerunning for a particular test.
+
+    WARNING: Use this decorator with care; skipping rerunning makes it
+    impossible to find reference leaks. Provide a clear reason for skipping the
+    test using the 'reason' parameter.
+    """
+    def deco(func):
+        _has_run = False
+        def wrapper(self):
+            nonlocal _has_run
+            if _has_run:
+                self.skipTest(reason)
+            func(self)
+            _has_run = True
+        return wrapper
+    return deco
+
+
 def refcount_test(test):
     """Decorator for tests which involve reference counting.
 
index b09065f812c0e499b6f5070b309d129a7f8918bd..97e262cfdb90239906fb68161d8693117b1eb8ae 100644 (file)
@@ -31,7 +31,7 @@ from test.support import os_helper
 from test.support import (
     STDLIB_DIR, swap_attr, swap_item, cpython_only, is_apple_mobile, is_emscripten,
     is_wasi, run_in_subinterp, run_in_subinterp_with_config, Py_TRACE_REFS,
-    requires_gil_enabled, Py_GIL_DISABLED)
+    requires_gil_enabled, Py_GIL_DISABLED, no_rerun)
 from test.support.import_helper import (
     forget, make_legacy_pyc, unlink, unload, ready_to_import,
     DirsOnSysPath, CleanImport, import_module)
@@ -120,25 +120,6 @@ def remove_files(name):
     rmtree('__pycache__')
 
 
-def no_rerun(reason):
-    """Skip rerunning for a particular test.
-
-    WARNING: Use this decorator with care; skipping rerunning makes it
-    impossible to find reference leaks. Provide a clear reason for skipping the
-    test using the 'reason' parameter.
-    """
-    def deco(func):
-        _has_run = False
-        def wrapper(self):
-            nonlocal _has_run
-            if _has_run:
-                self.skipTest(reason)
-            func(self)
-            _has_run = True
-        return wrapper
-    return deco
-
-
 if _testsinglephase is not None:
     def restore__testsinglephase(*, _orig=_testsinglephase):
         # We started with the module imported and want to restore