summaryrefslogtreecommitdiffstats
path: root/Lib/test
diff options
context:
space:
mode:
authorVictor Stinner <vstinner@python.org>2023-08-31 21:14:23 (GMT)
committerGitHub <noreply@github.com>2023-08-31 21:14:23 (GMT)
commitc6d56135e151a19c79d002cb1f1dbcd1c766c51d (patch)
treeef2576000fef9a67ccd973ea7731758ce01560c6 /Lib/test
parentd48760b2f1e28dd3c1a35721939f400a8ab619b8 (diff)
downloadcpython-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.py28
-rw-r--r--Lib/test/test_pydoc.py8
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):