diff options
author | Miss Islington (bot) <31488909+miss-islington@users.noreply.github.com> | 2023-08-25 16:18:24 (GMT) |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-08-25 16:18:24 (GMT) |
commit | 0eb6d87304b5ca8ed84e5c885e2cef3eb24a3e3a (patch) | |
tree | 548ff5c18a1d408e12074b09d7611a094cfb5d19 | |
parent | 22621907eea3f0ed4ccf5a69bcef70a70396b36b (diff) | |
download | cpython-0eb6d87304b5ca8ed84e5c885e2cef3eb24a3e3a.zip cpython-0eb6d87304b5ca8ed84e5c885e2cef3eb24a3e3a.tar.gz cpython-0eb6d87304b5ca8ed84e5c885e2cef3eb24a3e3a.tar.bz2 |
[3.12] gh-80527: Change support.requires_legacy_unicode_capi() (GH-108438) (#108446)
gh-80527: Change support.requires_legacy_unicode_capi() (GH-108438)
The decorator now requires to be called with parenthesis:
@support.requires_legacy_unicode_capi()
instead of:
@support.requires_legacy_unicode_capi
The implementation now only imports _testcapi when the decorator is
called, so "import test.support" no longer imports the _testcapi
extension.
(cherry picked from commit 995f4c48e11349fbfb9233e02b732d4534d3008e)
Co-authored-by: Victor Stinner <vstinner@python.org>
-rw-r--r-- | Lib/test/support/__init__.py | 15 | ||||
-rw-r--r-- | Lib/test/test_capi/test_getargs.py | 8 | ||||
-rw-r--r-- | Lib/test/test_csv.py | 2 | ||||
-rw-r--r-- | Lib/test/test_decimal.py | 4 | ||||
-rw-r--r-- | Lib/test/test_unicode.py | 4 |
5 files changed, 17 insertions, 16 deletions
diff --git a/Lib/test/support/__init__.py b/Lib/test/support/__init__.py index c3c3cf0..ef7b5c8 100644 --- a/Lib/test/support/__init__.py +++ b/Lib/test/support/__init__.py @@ -21,11 +21,6 @@ import warnings from .testresult import get_test_runner -try: - from _testcapi import unicode_legacy_string -except ImportError: - unicode_legacy_string = None - __all__ = [ # globals "PIPE_MAX_SIZE", "verbose", "max_memuse", "use_resources", "failfast", @@ -507,8 +502,14 @@ def has_no_debug_ranges(): def requires_debug_ranges(reason='requires co_positions / debug_ranges'): return unittest.skipIf(has_no_debug_ranges(), reason) -requires_legacy_unicode_capi = unittest.skipUnless(unicode_legacy_string, - 'requires legacy Unicode C API') +def requires_legacy_unicode_capi(): + try: + from _testcapi import unicode_legacy_string + except ImportError: + unicode_legacy_string = None + + return unittest.skipUnless(unicode_legacy_string, + 'requires legacy Unicode C API') # Is not actually used in tests, but is kept for compatibility. is_jython = sys.platform.startswith('java') diff --git a/Lib/test/test_capi/test_getargs.py b/Lib/test/test_capi/test_getargs.py index 3792d1a..ec4100e 100644 --- a/Lib/test/test_capi/test_getargs.py +++ b/Lib/test/test_capi/test_getargs.py @@ -1021,7 +1021,7 @@ class String_TestCase(unittest.TestCase): buf = bytearray() self.assertRaises(ValueError, getargs_et_hash, 'abc\xe9', 'latin1', buf) - @support.requires_legacy_unicode_capi + @support.requires_legacy_unicode_capi() def test_u(self): from _testcapi import getargs_u with self.assertWarns(DeprecationWarning): @@ -1037,7 +1037,7 @@ class String_TestCase(unittest.TestCase): with self.assertWarns(DeprecationWarning): self.assertRaises(TypeError, getargs_u, None) - @support.requires_legacy_unicode_capi + @support.requires_legacy_unicode_capi() def test_u_hash(self): from _testcapi import getargs_u_hash with self.assertWarns(DeprecationWarning): @@ -1053,7 +1053,7 @@ class String_TestCase(unittest.TestCase): with self.assertWarns(DeprecationWarning): self.assertRaises(TypeError, getargs_u_hash, None) - @support.requires_legacy_unicode_capi + @support.requires_legacy_unicode_capi() def test_Z(self): from _testcapi import getargs_Z with self.assertWarns(DeprecationWarning): @@ -1069,7 +1069,7 @@ class String_TestCase(unittest.TestCase): with self.assertWarns(DeprecationWarning): self.assertIsNone(getargs_Z(None)) - @support.requires_legacy_unicode_capi + @support.requires_legacy_unicode_capi() def test_Z_hash(self): from _testcapi import getargs_Z_hash with self.assertWarns(DeprecationWarning): diff --git a/Lib/test/test_csv.py b/Lib/test/test_csv.py index de7ac97..bc9961e 100644 --- a/Lib/test/test_csv.py +++ b/Lib/test/test_csv.py @@ -282,7 +282,7 @@ class Test_Csv(unittest.TestCase): self.assertRaises(OSError, writer.writerows, BadIterable()) @support.cpython_only - @support.requires_legacy_unicode_capi + @support.requires_legacy_unicode_capi() @warnings_helper.ignore_warnings(category=DeprecationWarning) def test_writerows_legacy_strings(self): import _testcapi diff --git a/Lib/test/test_decimal.py b/Lib/test/test_decimal.py index d0ba348..4d3ea73 100644 --- a/Lib/test/test_decimal.py +++ b/Lib/test/test_decimal.py @@ -587,7 +587,7 @@ class ExplicitConstructionTest: self.assertRaises(InvalidOperation, Decimal, "1_2_\u00003") @cpython_only - @requires_legacy_unicode_capi + @requires_legacy_unicode_capi() @warnings_helper.ignore_warnings(category=DeprecationWarning) def test_from_legacy_strings(self): import _testcapi @@ -2919,7 +2919,7 @@ class ContextAPItests: Overflow]) @cpython_only - @requires_legacy_unicode_capi + @requires_legacy_unicode_capi() @warnings_helper.ignore_warnings(category=DeprecationWarning) def test_from_legacy_strings(self): import _testcapi diff --git a/Lib/test/test_unicode.py b/Lib/test/test_unicode.py index 4ebbb9d..2fd66c9 100644 --- a/Lib/test/test_unicode.py +++ b/Lib/test/test_unicode.py @@ -814,7 +814,7 @@ class UnicodeTest(string_tests.CommonTest, self.assertFalse("0".isidentifier()) @support.cpython_only - @support.requires_legacy_unicode_capi + @support.requires_legacy_unicode_capi() @unittest.skipIf(_testcapi is None, 'need _testcapi module') def test_isidentifier_legacy(self): u = '𝖀𝖓𝖎𝖈𝖔𝖉𝖊' @@ -2491,7 +2491,7 @@ class UnicodeTest(string_tests.CommonTest, self.assertEqual(len(args), 1) @support.cpython_only - @support.requires_legacy_unicode_capi + @support.requires_legacy_unicode_capi() @unittest.skipIf(_testcapi is None, 'need _testcapi module') def test_resize(self): for length in range(1, 100, 7): |