Merge pull request #61529 from thoughtpolice/nixpkgs/pypy3-fix-funcsigs
pythonPackages.funcsigs: fix tests on pypy3
This commit is contained in:
commit
b0c2352a30
@ -1,5 +1,6 @@
|
|||||||
{ stdenv, buildPythonPackage, fetchPypi
|
{ stdenv, buildPythonPackage, fetchPypi
|
||||||
, unittest2 }:
|
, isPyPy, isPy3k, unittest2
|
||||||
|
}:
|
||||||
|
|
||||||
buildPythonPackage rec {
|
buildPythonPackage rec {
|
||||||
pname = "funcsigs";
|
pname = "funcsigs";
|
||||||
@ -12,6 +13,9 @@ buildPythonPackage rec {
|
|||||||
|
|
||||||
buildInputs = [ unittest2 ];
|
buildInputs = [ unittest2 ];
|
||||||
|
|
||||||
|
# https://github.com/testing-cabal/funcsigs/issues/10
|
||||||
|
patches = stdenv.lib.optional (isPyPy && isPy3k) [ ./fix-pypy3-tests.patch ];
|
||||||
|
|
||||||
meta = with stdenv.lib; {
|
meta = with stdenv.lib; {
|
||||||
description = "Python function signatures from PEP362 for Python 2.6, 2.7 and 3.2+";
|
description = "Python function signatures from PEP362 for Python 2.6, 2.7 and 3.2+";
|
||||||
homepage = https://github.com/aliles/funcsigs;
|
homepage = https://github.com/aliles/funcsigs;
|
||||||
|
@ -0,0 +1,94 @@
|
|||||||
|
diff --git a/tests/test_inspect.py b/tests/test_inspect.py
|
||||||
|
index 98d6592..3a2a1f2 100644
|
||||||
|
--- a/tests/test_inspect.py
|
||||||
|
+++ b/tests/test_inspect.py
|
||||||
|
@@ -8,6 +8,7 @@ import unittest2 as unittest
|
||||||
|
|
||||||
|
import funcsigs as inspect
|
||||||
|
|
||||||
|
+import platform
|
||||||
|
|
||||||
|
class TestSignatureObject(unittest.TestCase):
|
||||||
|
@staticmethod
|
||||||
|
@@ -409,7 +410,7 @@ def test_signature_on_decorated(self):
|
||||||
|
Ellipsis))
|
||||||
|
""")
|
||||||
|
|
||||||
|
- if sys.version_info[0] > 2:
|
||||||
|
+ if sys.version_info[0] > 2 and platform.python_implementation() != "PyPy":
|
||||||
|
exec("""
|
||||||
|
def test_signature_on_class(self):
|
||||||
|
class C:
|
||||||
|
@@ -493,41 +494,44 @@ def test_signature_on_class(self):
|
||||||
|
Ellipsis))
|
||||||
|
""")
|
||||||
|
|
||||||
|
- def test_signature_on_callable_objects(self):
|
||||||
|
- class Foo(object):
|
||||||
|
- def __call__(self, a):
|
||||||
|
- pass
|
||||||
|
+ if platform.python_implementation() != "PyPy":
|
||||||
|
+ exec("""
|
||||||
|
+def test_signature_on_callable_objects(self):
|
||||||
|
+ class Foo(object):
|
||||||
|
+ def __call__(self, a):
|
||||||
|
+ pass
|
||||||
|
|
||||||
|
- self.assertEqual(self.signature(Foo()),
|
||||||
|
- ((('a', Ellipsis, Ellipsis, "positional_or_keyword"),),
|
||||||
|
- Ellipsis))
|
||||||
|
+ self.assertEqual(self.signature(Foo()),
|
||||||
|
+ ((('a', Ellipsis, Ellipsis, "positional_or_keyword"),),
|
||||||
|
+ Ellipsis))
|
||||||
|
|
||||||
|
- class Spam(object):
|
||||||
|
- pass
|
||||||
|
- with self.assertRaisesRegex(TypeError, "is not a callable object"):
|
||||||
|
- inspect.signature(Spam())
|
||||||
|
+ class Spam(object):
|
||||||
|
+ pass
|
||||||
|
+ with self.assertRaisesRegex(TypeError, "is not a callable object"):
|
||||||
|
+ inspect.signature(Spam())
|
||||||
|
|
||||||
|
- class Bar(Spam, Foo):
|
||||||
|
- pass
|
||||||
|
+ class Bar(Spam, Foo):
|
||||||
|
+ pass
|
||||||
|
|
||||||
|
- self.assertEqual(self.signature(Bar()),
|
||||||
|
- ((('a', Ellipsis, Ellipsis, "positional_or_keyword"),),
|
||||||
|
- Ellipsis))
|
||||||
|
+ self.assertEqual(self.signature(Bar()),
|
||||||
|
+ ((('a', Ellipsis, Ellipsis, "positional_or_keyword"),),
|
||||||
|
+ Ellipsis))
|
||||||
|
|
||||||
|
- class ToFail(object):
|
||||||
|
- __call__ = type
|
||||||
|
- with self.assertRaisesRegex(ValueError, "not supported by signature"):
|
||||||
|
- inspect.signature(ToFail())
|
||||||
|
+ class ToFail(object):
|
||||||
|
+ __call__ = type
|
||||||
|
+ with self.assertRaisesRegex(ValueError, "not supported by signature"):
|
||||||
|
+ inspect.signature(ToFail())
|
||||||
|
|
||||||
|
- if sys.version_info[0] < 3:
|
||||||
|
- return
|
||||||
|
+ if sys.version_info[0] < 3:
|
||||||
|
+ return
|
||||||
|
|
||||||
|
- class Wrapped(object):
|
||||||
|
- pass
|
||||||
|
- Wrapped.__wrapped__ = lambda a: None
|
||||||
|
- self.assertEqual(self.signature(Wrapped),
|
||||||
|
- ((('a', Ellipsis, Ellipsis, "positional_or_keyword"),),
|
||||||
|
- Ellipsis))
|
||||||
|
+ class Wrapped(object):
|
||||||
|
+ pass
|
||||||
|
+ Wrapped.__wrapped__ = lambda a: None
|
||||||
|
+ self.assertEqual(self.signature(Wrapped),
|
||||||
|
+ ((('a', Ellipsis, Ellipsis, "positional_or_keyword"),),
|
||||||
|
+ Ellipsis))
|
||||||
|
+""")
|
||||||
|
|
||||||
|
def test_signature_on_lambdas(self):
|
||||||
|
self.assertEqual(self.signature((lambda a=10: a)),
|
Loading…
x
Reference in New Issue
Block a user