From 17e486e6624669747163167babf27a4cd617546f Mon Sep 17 00:00:00 2001 From: Karl Dubost Date: Fri, 1 Jan 2021 09:48:22 +0900 Subject: [PATCH] bpo-25479: Patch to increase __subclasshook__ test coverage of abc.py Converted the patch previously submitted by szymon to extend the coverage of ABC tests into a github PR. Co-authored-by: Szymon Trapp --- Lib/test/test_abc.py | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/Lib/test/test_abc.py b/Lib/test/test_abc.py index 3d603e7734d870..c1d750dba83f99 100644 --- a/Lib/test/test_abc.py +++ b/Lib/test/test_abc.py @@ -459,6 +459,24 @@ class S(metaclass=abc_ABCMeta): with self.assertRaisesRegex(Exception, exc_msg): issubclass(int, S) + def test_subclasshook(self): + class A(metaclass=abc.ABCMeta): + @classmethod + def __subclasshook__(cls, C): + if cls is A: + return 'foo' in C.__dict__ + return NotImplemented + self.assertFalse(issubclass(A, A)) + self.assertFalse(issubclass(A, (A,))) + class B: + foo = 42 + self.assertTrue(issubclass(B, A)) + self.assertTrue(issubclass(B, (A,))) + class C: + spam = 42 + self.assertFalse(issubclass(C, A)) + self.assertFalse(issubclass(C, (A,))) + def test_all_new_methods_are_called(self): class A(metaclass=abc_ABCMeta): pass