summaryrefslogtreecommitdiffstats
path: root/Lib/test/test_inspect.py
diff options
context:
space:
mode:
authorYury Selivanov <yselivanov@sprymix.com>2014-02-21 23:30:53 (GMT)
committerYury Selivanov <yselivanov@sprymix.com>2014-02-21 23:30:53 (GMT)
commit8dfb4576a9a74a35f71a2f68a7236f2f0b1a7e63 (patch)
treefba3299799c958d3ff6247ce9c90d29c18d60673 /Lib/test/test_inspect.py
parente2df3ea682e4b51ed6357ed9e105b2618616e839 (diff)
downloadcpython-8dfb4576a9a74a35f71a2f68a7236f2f0b1a7e63.zip
cpython-8dfb4576a9a74a35f71a2f68a7236f2f0b1a7e63.tar.gz
cpython-8dfb4576a9a74a35f71a2f68a7236f2f0b1a7e63.tar.bz2
inspect.signature: Check for function-like objects before builtins. Issue #17159
Diffstat (limited to 'Lib/test/test_inspect.py')
-rw-r--r--Lib/test/test_inspect.py16
1 files changed, 16 insertions, 0 deletions
diff --git a/Lib/test/test_inspect.py b/Lib/test/test_inspect.py
index 95c1b32..0dc7451 100644
--- a/Lib/test/test_inspect.py
+++ b/Lib/test/test_inspect.py
@@ -14,6 +14,7 @@ import sys
import types
import unicodedata
import unittest
+import unittest.mock
try:
from concurrent.futures import ThreadPoolExecutor
@@ -1836,6 +1837,21 @@ class TestSignatureObject(unittest.TestCase):
('kwargs', ..., ..., "var_keyword")),
...))
+ # Test with cython-like builtins:
+ _orig_isdesc = inspect.ismethoddescriptor
+ def _isdesc(obj):
+ if hasattr(obj, '_builtinmock'):
+ return True
+ return _orig_isdesc(obj)
+
+ with unittest.mock.patch('inspect.ismethoddescriptor', _isdesc):
+ builtin_func = funclike(func)
+ # Make sure that our mock setup is working
+ self.assertFalse(inspect.ismethoddescriptor(builtin_func))
+ builtin_func._builtinmock = True
+ self.assertTrue(inspect.ismethoddescriptor(builtin_func))
+ self.assertEqual(inspect.signature(builtin_func), sig_func)
+
def test_signature_functionlike_class(self):
# We only want to duck type function-like objects,
# not classes.