diff --git a/dev-python/funcsigs/files/funcsigs-1.0.2-fix-pypy3-tests.patch b/dev-python/funcsigs/files/funcsigs-1.0.2-fix-pypy3-tests.patch new file mode 100644 index 00000000000000..f4ecec3b6137db --- /dev/null +++ b/dev-python/funcsigs/files/funcsigs-1.0.2-fix-pypy3-tests.patch @@ -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)), diff --git a/dev-python/funcsigs/funcsigs-1.0.2-r1.ebuild b/dev-python/funcsigs/funcsigs-1.0.2-r1.ebuild index 01f0536d3ea159..ea3b7a6b6f986c 100644 --- a/dev-python/funcsigs/funcsigs-1.0.2-r1.ebuild +++ b/dev-python/funcsigs/funcsigs-1.0.2-r1.ebuild @@ -22,6 +22,13 @@ DEPEND=" test? ( dev-python/unittest2[${PYTHON_USEDEP}] )" RDEPEND="" +PATCHES=( + # This patch disables some tests for pypy as they do not work as expected. + # This has been reported upstream + # https://github.com/testing-cabal/funcsigs/issues/10 + "${FILESDIR}/${P}-fix-pypy3-tests.patch" +) + python_test() { esetup.py test }