From a2976b7afc0fc931b70bf8868d8982d6e5dae8a7 Mon Sep 17 00:00:00 2001 From: Karl Dubost Date: Wed, 12 May 2021 22:05:45 +0900 Subject: [PATCH] bpo-25479: add unit test for __subclasshook__ in test_abc.py (GH-24034) Co-authored-by: Szymon Trapp (cherry picked from commit 5010c044c73ee55d0fd578cfecd3f4c3f01a4140) Co-authored-by: Karl Dubost --- 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 7e9c47b3cacb96..3f668e9187d9bd 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