diff options
author | Victor Stinner <vstinner@python.org> | 2023-08-31 21:14:23 (GMT) |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-08-31 21:14:23 (GMT) |
commit | c6d56135e151a19c79d002cb1f1dbcd1c766c51d (patch) | |
tree | ef2576000fef9a67ccd973ea7731758ce01560c6 /Lib/test | |
parent | d48760b2f1e28dd3c1a35721939f400a8ab619b8 (diff) | |
download | cpython-c6d56135e151a19c79d002cb1f1dbcd1c766c51d.zip cpython-c6d56135e151a19c79d002cb1f1dbcd1c766c51d.tar.gz cpython-c6d56135e151a19c79d002cb1f1dbcd1c766c51d.tar.bz2 |
gh-108638: Fix tests when _stat extension is missing (#108689)
Fix test_inspect and test_pydoc when the _stat extension is missing.
Skip tests relying on _stat when _stat is missing.
Diffstat (limited to 'Lib/test')
-rw-r--r-- | Lib/test/test_inspect.py | 28 | ||||
-rw-r--r-- | Lib/test/test_pydoc.py | 8 |
2 files changed, 29 insertions, 7 deletions
diff --git a/Lib/test/test_inspect.py b/Lib/test/test_inspect.py index 9cb92c0..78ef817 100644 --- a/Lib/test/test_inspect.py +++ b/Lib/test/test_inspect.py @@ -1186,7 +1186,7 @@ class TestClassesAndFunctions(unittest.TestCase): cls = _testcapi.DocStringNoSignatureTest obj = _testcapi.DocStringNoSignatureTest() - for builtin, template in [ + tests = [ (_testcapi.docstring_no_signature_noargs, meth_noargs), (_testcapi.docstring_no_signature_o, meth_o), (cls.meth_noargs, meth_self_noargs), @@ -1201,7 +1201,6 @@ class TestClassesAndFunctions(unittest.TestCase): (cls.meth_o_coexist, meth_self_o), (time.time, meth_noargs), - (stat.S_IMODE, meth_o), (str.lower, meth_self_noargs), (''.lower, meth_self_noargs), (set.add, meth_self_o), @@ -1212,7 +1211,16 @@ class TestClassesAndFunctions(unittest.TestCase): (datetime.datetime.utcnow, meth_type_noargs), (dict.__dict__['__class_getitem__'], meth_type_o), (dict.__class_getitem__, meth_type_o), - ]: + ] + try: + import _stat + except ImportError: + # if the _stat extension is not available, stat.S_IMODE() is + # implemented in Python, not in C + pass + else: + tests.append((stat.S_IMODE, meth_o)) + for builtin, template in tests: with self.subTest(builtin): self.assertEqual(inspect.getfullargspec(builtin), inspect.getfullargspec(template)) @@ -2934,7 +2942,7 @@ class TestSignatureObject(unittest.TestCase): cls = _testcapi.DocStringNoSignatureTest obj = _testcapi.DocStringNoSignatureTest() - for builtin, template in [ + tests = [ (_testcapi.docstring_no_signature_noargs, meth_noargs), (_testcapi.docstring_no_signature_o, meth_o), (cls.meth_noargs, meth_self_noargs), @@ -2949,7 +2957,6 @@ class TestSignatureObject(unittest.TestCase): (cls.meth_o_coexist, meth_self_o), (time.time, meth_noargs), - (stat.S_IMODE, meth_o), (str.lower, meth_self_noargs), (''.lower, meth_noargs), (set.add, meth_self_o), @@ -2960,7 +2967,16 @@ class TestSignatureObject(unittest.TestCase): (datetime.datetime.utcnow, meth_noargs), (dict.__dict__['__class_getitem__'], meth_type_o), (dict.__class_getitem__, meth_o), - ]: + ] + try: + import _stat + except ImportError: + # if the _stat extension is not available, stat.S_IMODE() is + # implemented in Python, not in C + pass + else: + tests.append((stat.S_IMODE, meth_o)) + for builtin, template in tests: with self.subTest(builtin): self.assertEqual(inspect.signature(builtin), inspect.signature(template)) diff --git a/Lib/test/test_pydoc.py b/Lib/test/test_pydoc.py index 9b5c11bf..499eeb9 100644 --- a/Lib/test/test_pydoc.py +++ b/Lib/test/test_pydoc.py @@ -1187,7 +1187,13 @@ class TestDescriptions(unittest.TestCase): "time()") def test_module_level_callable_o(self): - self.assertEqual(self._get_summary_line(stat.S_IMODE), + try: + import _stat + except ImportError: + # stat.S_IMODE() and _stat.S_IMODE() have a different signature + self.skipTest('_stat extension is missing') + + self.assertEqual(self._get_summary_line(_stat.S_IMODE), "S_IMODE(object, /)") def test_unbound_builtin_method_noargs(self): |