diff -r f020a27b5391 Lib/test/test_abc.py --- a/Lib/test/test_abc.py Mon Oct 19 00:56:59 2015 +0300 +++ b/Lib/test/test_abc.py Sun Oct 25 19:55:28 2015 -0700 @@ -389,6 +389,24 @@ self.assertIsInstance(42, A) self.assertIsInstance(42, (A,)) + 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