[Python-checkins] bpo-25479: add unit test for __subclasshook__ in test_abc.py (GH-24034)

iritkatriel webhook-mailer at python.org
Wed May 12 09:05:51 EDT 2021


https://github.com/python/cpython/commit/5010c044c73ee55d0fd578cfecd3f4c3f01a4140
commit: 5010c044c73ee55d0fd578cfecd3f4c3f01a4140
branch: main
author: Karl Dubost <karl+github at la-grange.net>
committer: iritkatriel <iritkatriel at yahoo.com>
date: 2021-05-12T14:05:45+01:00
summary:

bpo-25479: add unit test for __subclasshook__ in test_abc.py (GH-24034)

Co-authored-by: Szymon Trapp

files:
M Lib/test/test_abc.py

diff --git a/Lib/test/test_abc.py b/Lib/test/test_abc.py
index 3d603e7734d87..c1d750dba83f9 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



More information about the Python-checkins mailing list