annotate Lib/test/test_abc.py @ 78069:a8aa77458e12 3.2

Add c_size_t and c_ssize_t to the ctypes summary table.
author Antoine Pitrou <solipsis@pitrou.net>
date Thu, 12 Jul 2012 20:31:50 +0200
parents 3c9232a684ae
children b39270c6b8d1
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
42084
229c28cb9afb Merged revisions 55817-55961 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
diff changeset
1 # Copyright 2007 Google, Inc. All Rights Reserved.
229c28cb9afb Merged revisions 55817-55961 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
diff changeset
2 # Licensed to PSF under a Contributor Agreement.
229c28cb9afb Merged revisions 55817-55961 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
diff changeset
3
229c28cb9afb Merged revisions 55817-55961 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
diff changeset
4 """Unit tests for abc.py."""
229c28cb9afb Merged revisions 55817-55961 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
diff changeset
5
229c28cb9afb Merged revisions 55817-55961 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
diff changeset
6 import unittest
47201
9c930a32cebb #2621 rename test.test_support to test.support
Benjamin Peterson <benjamin@python.org>
parents: 45636
diff changeset
7 from test import support
42084
229c28cb9afb Merged revisions 55817-55961 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
diff changeset
8
229c28cb9afb Merged revisions 55817-55961 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
diff changeset
9 import abc
45636
25406b3ff97a Merged revisions 61203-61204 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 45471
diff changeset
10 from inspect import isabstract
42084
229c28cb9afb Merged revisions 55817-55961 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
diff changeset
11
229c28cb9afb Merged revisions 55817-55961 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
diff changeset
12
229c28cb9afb Merged revisions 55817-55961 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
diff changeset
13 class TestABC(unittest.TestCase):
229c28cb9afb Merged revisions 55817-55961 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
diff changeset
14
229c28cb9afb Merged revisions 55817-55961 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
diff changeset
15 def test_abstractmethod_basics(self):
229c28cb9afb Merged revisions 55817-55961 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
diff changeset
16 @abc.abstractmethod
229c28cb9afb Merged revisions 55817-55961 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
diff changeset
17 def foo(self): pass
64098
60a4777a73a0 Merged revisions 84125-84126 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 58535
diff changeset
18 self.assertTrue(foo.__isabstractmethod__)
42084
229c28cb9afb Merged revisions 55817-55961 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
diff changeset
19 def bar(self): pass
64098
60a4777a73a0 Merged revisions 84125-84126 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 58535
diff changeset
20 self.assertFalse(hasattr(bar, "__isabstractmethod__"))
42084
229c28cb9afb Merged revisions 55817-55961 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
diff changeset
21
42415
a6d26a4d672d Tests for @abstractproperty by Jeffrey Yasskin.
Guido van Rossum <guido@python.org>
parents: 42084
diff changeset
22 def test_abstractproperty_basics(self):
a6d26a4d672d Tests for @abstractproperty by Jeffrey Yasskin.
Guido van Rossum <guido@python.org>
parents: 42084
diff changeset
23 @abc.abstractproperty
a6d26a4d672d Tests for @abstractproperty by Jeffrey Yasskin.
Guido van Rossum <guido@python.org>
parents: 42084
diff changeset
24 def foo(self): pass
64098
60a4777a73a0 Merged revisions 84125-84126 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 58535
diff changeset
25 self.assertTrue(foo.__isabstractmethod__)
42415
a6d26a4d672d Tests for @abstractproperty by Jeffrey Yasskin.
Guido van Rossum <guido@python.org>
parents: 42084
diff changeset
26 def bar(self): pass
64098
60a4777a73a0 Merged revisions 84125-84126 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 58535
diff changeset
27 self.assertFalse(hasattr(bar, "__isabstractmethod__"))
42415
a6d26a4d672d Tests for @abstractproperty by Jeffrey Yasskin.
Guido van Rossum <guido@python.org>
parents: 42084
diff changeset
28
42084
229c28cb9afb Merged revisions 55817-55961 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
diff changeset
29 class C(metaclass=abc.ABCMeta):
42415
a6d26a4d672d Tests for @abstractproperty by Jeffrey Yasskin.
Guido van Rossum <guido@python.org>
parents: 42084
diff changeset
30 @abc.abstractproperty
a6d26a4d672d Tests for @abstractproperty by Jeffrey Yasskin.
Guido van Rossum <guido@python.org>
parents: 42084
diff changeset
31 def foo(self): return 3
42084
229c28cb9afb Merged revisions 55817-55961 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
diff changeset
32 class D(C):
42415
a6d26a4d672d Tests for @abstractproperty by Jeffrey Yasskin.
Guido van Rossum <guido@python.org>
parents: 42084
diff changeset
33 @property
a6d26a4d672d Tests for @abstractproperty by Jeffrey Yasskin.
Guido van Rossum <guido@python.org>
parents: 42084
diff changeset
34 def foo(self): return super().foo
a6d26a4d672d Tests for @abstractproperty by Jeffrey Yasskin.
Guido van Rossum <guido@python.org>
parents: 42084
diff changeset
35 self.assertEqual(D().foo, 3)
a6d26a4d672d Tests for @abstractproperty by Jeffrey Yasskin.
Guido van Rossum <guido@python.org>
parents: 42084
diff changeset
36
64094
b91059e59d0d add support for abstract class and static methods #5867
Benjamin Peterson <benjamin@python.org>
parents: 58533
diff changeset
37 def test_abstractclassmethod_basics(self):
b91059e59d0d add support for abstract class and static methods #5867
Benjamin Peterson <benjamin@python.org>
parents: 58533
diff changeset
38 @abc.abstractclassmethod
b91059e59d0d add support for abstract class and static methods #5867
Benjamin Peterson <benjamin@python.org>
parents: 58533
diff changeset
39 def foo(cls): pass
64095
745bd639ed4d use assertTrue/assertFalse
Benjamin Peterson <benjamin@python.org>
parents: 64094
diff changeset
40 self.assertTrue(foo.__isabstractmethod__)
64094
b91059e59d0d add support for abstract class and static methods #5867
Benjamin Peterson <benjamin@python.org>
parents: 58533
diff changeset
41 @classmethod
b91059e59d0d add support for abstract class and static methods #5867
Benjamin Peterson <benjamin@python.org>
parents: 58533
diff changeset
42 def bar(cls): pass
64095
745bd639ed4d use assertTrue/assertFalse
Benjamin Peterson <benjamin@python.org>
parents: 64094
diff changeset
43 self.assertFalse(hasattr(bar, "__isabstractmethod__"))
64094
b91059e59d0d add support for abstract class and static methods #5867
Benjamin Peterson <benjamin@python.org>
parents: 58533
diff changeset
44
b91059e59d0d add support for abstract class and static methods #5867
Benjamin Peterson <benjamin@python.org>
parents: 58533
diff changeset
45 class C(metaclass=abc.ABCMeta):
b91059e59d0d add support for abstract class and static methods #5867
Benjamin Peterson <benjamin@python.org>
parents: 58533
diff changeset
46 @abc.abstractclassmethod
b91059e59d0d add support for abstract class and static methods #5867
Benjamin Peterson <benjamin@python.org>
parents: 58533
diff changeset
47 def foo(cls): return cls.__name__
b91059e59d0d add support for abstract class and static methods #5867
Benjamin Peterson <benjamin@python.org>
parents: 58533
diff changeset
48 self.assertRaises(TypeError, C)
b91059e59d0d add support for abstract class and static methods #5867
Benjamin Peterson <benjamin@python.org>
parents: 58533
diff changeset
49 class D(C):
b91059e59d0d add support for abstract class and static methods #5867
Benjamin Peterson <benjamin@python.org>
parents: 58533
diff changeset
50 @classmethod
b91059e59d0d add support for abstract class and static methods #5867
Benjamin Peterson <benjamin@python.org>
parents: 58533
diff changeset
51 def foo(cls): return super().foo()
b91059e59d0d add support for abstract class and static methods #5867
Benjamin Peterson <benjamin@python.org>
parents: 58533
diff changeset
52 self.assertEqual(D.foo(), 'D')
b91059e59d0d add support for abstract class and static methods #5867
Benjamin Peterson <benjamin@python.org>
parents: 58533
diff changeset
53 self.assertEqual(D().foo(), 'D')
b91059e59d0d add support for abstract class and static methods #5867
Benjamin Peterson <benjamin@python.org>
parents: 58533
diff changeset
54
b91059e59d0d add support for abstract class and static methods #5867
Benjamin Peterson <benjamin@python.org>
parents: 58533
diff changeset
55 def test_abstractstaticmethod_basics(self):
b91059e59d0d add support for abstract class and static methods #5867
Benjamin Peterson <benjamin@python.org>
parents: 58533
diff changeset
56 @abc.abstractstaticmethod
b91059e59d0d add support for abstract class and static methods #5867
Benjamin Peterson <benjamin@python.org>
parents: 58533
diff changeset
57 def foo(): pass
64095
745bd639ed4d use assertTrue/assertFalse
Benjamin Peterson <benjamin@python.org>
parents: 64094
diff changeset
58 self.assertTrue(foo.__isabstractmethod__)
64094
b91059e59d0d add support for abstract class and static methods #5867
Benjamin Peterson <benjamin@python.org>
parents: 58533
diff changeset
59 @staticmethod
b91059e59d0d add support for abstract class and static methods #5867
Benjamin Peterson <benjamin@python.org>
parents: 58533
diff changeset
60 def bar(): pass
64095
745bd639ed4d use assertTrue/assertFalse
Benjamin Peterson <benjamin@python.org>
parents: 64094
diff changeset
61 self.assertFalse(hasattr(bar, "__isabstractmethod__"))
64094
b91059e59d0d add support for abstract class and static methods #5867
Benjamin Peterson <benjamin@python.org>
parents: 58533
diff changeset
62
b91059e59d0d add support for abstract class and static methods #5867
Benjamin Peterson <benjamin@python.org>
parents: 58533
diff changeset
63 class C(metaclass=abc.ABCMeta):
b91059e59d0d add support for abstract class and static methods #5867
Benjamin Peterson <benjamin@python.org>
parents: 58533
diff changeset
64 @abc.abstractstaticmethod
b91059e59d0d add support for abstract class and static methods #5867
Benjamin Peterson <benjamin@python.org>
parents: 58533
diff changeset
65 def foo(): return 3
b91059e59d0d add support for abstract class and static methods #5867
Benjamin Peterson <benjamin@python.org>
parents: 58533
diff changeset
66 self.assertRaises(TypeError, C)
b91059e59d0d add support for abstract class and static methods #5867
Benjamin Peterson <benjamin@python.org>
parents: 58533
diff changeset
67 class D(C):
b91059e59d0d add support for abstract class and static methods #5867
Benjamin Peterson <benjamin@python.org>
parents: 58533
diff changeset
68 @staticmethod
b91059e59d0d add support for abstract class and static methods #5867
Benjamin Peterson <benjamin@python.org>
parents: 58533
diff changeset
69 def foo(): return 4
b91059e59d0d add support for abstract class and static methods #5867
Benjamin Peterson <benjamin@python.org>
parents: 58533
diff changeset
70 self.assertEqual(D.foo(), 4)
b91059e59d0d add support for abstract class and static methods #5867
Benjamin Peterson <benjamin@python.org>
parents: 58533
diff changeset
71 self.assertEqual(D().foo(), 4)
b91059e59d0d add support for abstract class and static methods #5867
Benjamin Peterson <benjamin@python.org>
parents: 58533
diff changeset
72
42415
a6d26a4d672d Tests for @abstractproperty by Jeffrey Yasskin.
Guido van Rossum <guido@python.org>
parents: 42084
diff changeset
73 def test_abstractmethod_integration(self):
64094
b91059e59d0d add support for abstract class and static methods #5867
Benjamin Peterson <benjamin@python.org>
parents: 58533
diff changeset
74 for abstractthing in [abc.abstractmethod, abc.abstractproperty,
b91059e59d0d add support for abstract class and static methods #5867
Benjamin Peterson <benjamin@python.org>
parents: 58533
diff changeset
75 abc.abstractclassmethod,
b91059e59d0d add support for abstract class and static methods #5867
Benjamin Peterson <benjamin@python.org>
parents: 58533
diff changeset
76 abc.abstractstaticmethod]:
42415
a6d26a4d672d Tests for @abstractproperty by Jeffrey Yasskin.
Guido van Rossum <guido@python.org>
parents: 42084
diff changeset
77 class C(metaclass=abc.ABCMeta):
a6d26a4d672d Tests for @abstractproperty by Jeffrey Yasskin.
Guido van Rossum <guido@python.org>
parents: 42084
diff changeset
78 @abstractthing
a6d26a4d672d Tests for @abstractproperty by Jeffrey Yasskin.
Guido van Rossum <guido@python.org>
parents: 42084
diff changeset
79 def foo(self): pass # abstract
a6d26a4d672d Tests for @abstractproperty by Jeffrey Yasskin.
Guido van Rossum <guido@python.org>
parents: 42084
diff changeset
80 def bar(self): pass # concrete
a6d26a4d672d Tests for @abstractproperty by Jeffrey Yasskin.
Guido van Rossum <guido@python.org>
parents: 42084
diff changeset
81 self.assertEqual(C.__abstractmethods__, {"foo"})
a6d26a4d672d Tests for @abstractproperty by Jeffrey Yasskin.
Guido van Rossum <guido@python.org>
parents: 42084
diff changeset
82 self.assertRaises(TypeError, C) # because foo is abstract
55593
0bb232078b8c Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents: 48875
diff changeset
83 self.assertTrue(isabstract(C))
42415
a6d26a4d672d Tests for @abstractproperty by Jeffrey Yasskin.
Guido van Rossum <guido@python.org>
parents: 42084
diff changeset
84 class D(C):
a6d26a4d672d Tests for @abstractproperty by Jeffrey Yasskin.
Guido van Rossum <guido@python.org>
parents: 42084
diff changeset
85 def bar(self): pass # concrete override of concrete
a6d26a4d672d Tests for @abstractproperty by Jeffrey Yasskin.
Guido van Rossum <guido@python.org>
parents: 42084
diff changeset
86 self.assertEqual(D.__abstractmethods__, {"foo"})
a6d26a4d672d Tests for @abstractproperty by Jeffrey Yasskin.
Guido van Rossum <guido@python.org>
parents: 42084
diff changeset
87 self.assertRaises(TypeError, D) # because foo is still abstract
55593
0bb232078b8c Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents: 48875
diff changeset
88 self.assertTrue(isabstract(D))
42415
a6d26a4d672d Tests for @abstractproperty by Jeffrey Yasskin.
Guido van Rossum <guido@python.org>
parents: 42084
diff changeset
89 class E(D):
a6d26a4d672d Tests for @abstractproperty by Jeffrey Yasskin.
Guido van Rossum <guido@python.org>
parents: 42084
diff changeset
90 def foo(self): pass
a6d26a4d672d Tests for @abstractproperty by Jeffrey Yasskin.
Guido van Rossum <guido@python.org>
parents: 42084
diff changeset
91 self.assertEqual(E.__abstractmethods__, set())
a6d26a4d672d Tests for @abstractproperty by Jeffrey Yasskin.
Guido van Rossum <guido@python.org>
parents: 42084
diff changeset
92 E() # now foo is concrete, too
55593
0bb232078b8c Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents: 48875
diff changeset
93 self.assertFalse(isabstract(E))
42415
a6d26a4d672d Tests for @abstractproperty by Jeffrey Yasskin.
Guido van Rossum <guido@python.org>
parents: 42084
diff changeset
94 class F(E):
a6d26a4d672d Tests for @abstractproperty by Jeffrey Yasskin.
Guido van Rossum <guido@python.org>
parents: 42084
diff changeset
95 @abstractthing
a6d26a4d672d Tests for @abstractproperty by Jeffrey Yasskin.
Guido van Rossum <guido@python.org>
parents: 42084
diff changeset
96 def bar(self): pass # abstract override of concrete
a6d26a4d672d Tests for @abstractproperty by Jeffrey Yasskin.
Guido van Rossum <guido@python.org>
parents: 42084
diff changeset
97 self.assertEqual(F.__abstractmethods__, {"bar"})
a6d26a4d672d Tests for @abstractproperty by Jeffrey Yasskin.
Guido van Rossum <guido@python.org>
parents: 42084
diff changeset
98 self.assertRaises(TypeError, F) # because bar is abstract now
55593
0bb232078b8c Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents: 48875
diff changeset
99 self.assertTrue(isabstract(F))
42084
229c28cb9afb Merged revisions 55817-55961 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
diff changeset
100
65066
394e25382a59 Merged revisions 85154,85182 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 64098
diff changeset
101 def test_metaclass_abc(self):
394e25382a59 Merged revisions 85154,85182 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 64098
diff changeset
102 # Metaclasses can be ABCs, too.
394e25382a59 Merged revisions 85154,85182 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 64098
diff changeset
103 class A(metaclass=abc.ABCMeta):
394e25382a59 Merged revisions 85154,85182 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 64098
diff changeset
104 @abc.abstractmethod
394e25382a59 Merged revisions 85154,85182 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 64098
diff changeset
105 def x(self):
394e25382a59 Merged revisions 85154,85182 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 64098
diff changeset
106 pass
394e25382a59 Merged revisions 85154,85182 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 64098
diff changeset
107 self.assertEqual(A.__abstractmethods__, {"x"})
394e25382a59 Merged revisions 85154,85182 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 64098
diff changeset
108 class meta(type, A):
394e25382a59 Merged revisions 85154,85182 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 64098
diff changeset
109 def x(self):
394e25382a59 Merged revisions 85154,85182 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 64098
diff changeset
110 return 1
394e25382a59 Merged revisions 85154,85182 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 64098
diff changeset
111 class C(metaclass=meta):
394e25382a59 Merged revisions 85154,85182 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 64098
diff changeset
112 pass
394e25382a59 Merged revisions 85154,85182 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 64098
diff changeset
113
42084
229c28cb9afb Merged revisions 55817-55961 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
diff changeset
114 def test_registration_basics(self):
229c28cb9afb Merged revisions 55817-55961 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
diff changeset
115 class A(metaclass=abc.ABCMeta):
229c28cb9afb Merged revisions 55817-55961 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
diff changeset
116 pass
44568
305d7d2ce047 Copied doc for reload() from trunk's function.rst to imp.rst
Christian Heimes <christian@cheimes.de>
parents: 44067
diff changeset
117 class B(object):
42084
229c28cb9afb Merged revisions 55817-55961 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
diff changeset
118 pass
229c28cb9afb Merged revisions 55817-55961 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
diff changeset
119 b = B()
64098
60a4777a73a0 Merged revisions 84125-84126 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 58535
diff changeset
120 self.assertFalse(issubclass(B, A))
60a4777a73a0 Merged revisions 84125-84126 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 58535
diff changeset
121 self.assertFalse(issubclass(B, (A,)))
58473
71acd4482e65 Merged revisions 77727 via svnmerge from
Ezio Melotti <ezio.melotti@gmail.com>
parents: 55593
diff changeset
122 self.assertNotIsInstance(b, A)
71acd4482e65 Merged revisions 77727 via svnmerge from
Ezio Melotti <ezio.melotti@gmail.com>
parents: 55593
diff changeset
123 self.assertNotIsInstance(b, (A,))
42084
229c28cb9afb Merged revisions 55817-55961 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
diff changeset
124 A.register(B)
64098
60a4777a73a0 Merged revisions 84125-84126 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 58535
diff changeset
125 self.assertTrue(issubclass(B, A))
60a4777a73a0 Merged revisions 84125-84126 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 58535
diff changeset
126 self.assertTrue(issubclass(B, (A,)))
58473
71acd4482e65 Merged revisions 77727 via svnmerge from
Ezio Melotti <ezio.melotti@gmail.com>
parents: 55593
diff changeset
127 self.assertIsInstance(b, A)
71acd4482e65 Merged revisions 77727 via svnmerge from
Ezio Melotti <ezio.melotti@gmail.com>
parents: 55593
diff changeset
128 self.assertIsInstance(b, (A,))
42084
229c28cb9afb Merged revisions 55817-55961 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
diff changeset
129 class C(B):
229c28cb9afb Merged revisions 55817-55961 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
diff changeset
130 pass
229c28cb9afb Merged revisions 55817-55961 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
diff changeset
131 c = C()
64098
60a4777a73a0 Merged revisions 84125-84126 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 58535
diff changeset
132 self.assertTrue(issubclass(C, A))
60a4777a73a0 Merged revisions 84125-84126 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 58535
diff changeset
133 self.assertTrue(issubclass(C, (A,)))
58473
71acd4482e65 Merged revisions 77727 via svnmerge from
Ezio Melotti <ezio.melotti@gmail.com>
parents: 55593
diff changeset
134 self.assertIsInstance(c, A)
71acd4482e65 Merged revisions 77727 via svnmerge from
Ezio Melotti <ezio.melotti@gmail.com>
parents: 55593
diff changeset
135 self.assertIsInstance(c, (A,))
42084
229c28cb9afb Merged revisions 55817-55961 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
diff changeset
136
45333
e70f56cf6972 Merged revisions 60481,60485,60489-60492,60494-60496,60498-60499,60501-60503,60505-60506,60508-60509,60523-60524,60532,60543,60545,60547-60548,60552,60554,60556-60559,60561-60562,60569,60571-60572,60574,60576-60583,60585-60586,60589,60591,60594-60595,60597-60598,60600-60601,60606-60612,60615,60617,60619-60621,60623-60625,60627-60629,60631,60633,60635,60647,60650,60652,60654,60656,60658-60659,60664-60666,60668-60670,60672,60676,60678,60680-60683,60685-60686,60688,60690,60692-60694,60697-60700,60705-60706,60708,60711,60714,60720,60724-60730,60732,60736,60742,60744,60746,60748,60750-60766,60769-60786 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44568
diff changeset
137 def test_isinstance_invalidation(self):
e70f56cf6972 Merged revisions 60481,60485,60489-60492,60494-60496,60498-60499,60501-60503,60505-60506,60508-60509,60523-60524,60532,60543,60545,60547-60548,60552,60554,60556-60559,60561-60562,60569,60571-60572,60574,60576-60583,60585-60586,60589,60591,60594-60595,60597-60598,60600-60601,60606-60612,60615,60617,60619-60621,60623-60625,60627-60629,60631,60633,60635,60647,60650,60652,60654,60656,60658-60659,60664-60666,60668-60670,60672,60676,60678,60680-60683,60685-60686,60688,60690,60692-60694,60697-60700,60705-60706,60708,60711,60714,60720,60724-60730,60732,60736,60742,60744,60746,60748,60750-60766,60769-60786 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44568
diff changeset
138 class A(metaclass=abc.ABCMeta):
e70f56cf6972 Merged revisions 60481,60485,60489-60492,60494-60496,60498-60499,60501-60503,60505-60506,60508-60509,60523-60524,60532,60543,60545,60547-60548,60552,60554,60556-60559,60561-60562,60569,60571-60572,60574,60576-60583,60585-60586,60589,60591,60594-60595,60597-60598,60600-60601,60606-60612,60615,60617,60619-60621,60623-60625,60627-60629,60631,60633,60635,60647,60650,60652,60654,60656,60658-60659,60664-60666,60668-60670,60672,60676,60678,60680-60683,60685-60686,60688,60690,60692-60694,60697-60700,60705-60706,60708,60711,60714,60720,60724-60730,60732,60736,60742,60744,60746,60748,60750-60766,60769-60786 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44568
diff changeset
139 pass
e70f56cf6972 Merged revisions 60481,60485,60489-60492,60494-60496,60498-60499,60501-60503,60505-60506,60508-60509,60523-60524,60532,60543,60545,60547-60548,60552,60554,60556-60559,60561-60562,60569,60571-60572,60574,60576-60583,60585-60586,60589,60591,60594-60595,60597-60598,60600-60601,60606-60612,60615,60617,60619-60621,60623-60625,60627-60629,60631,60633,60635,60647,60650,60652,60654,60656,60658-60659,60664-60666,60668-60670,60672,60676,60678,60680-60683,60685-60686,60688,60690,60692-60694,60697-60700,60705-60706,60708,60711,60714,60720,60724-60730,60732,60736,60742,60744,60746,60748,60750-60766,60769-60786 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44568
diff changeset
140 class B:
e70f56cf6972 Merged revisions 60481,60485,60489-60492,60494-60496,60498-60499,60501-60503,60505-60506,60508-60509,60523-60524,60532,60543,60545,60547-60548,60552,60554,60556-60559,60561-60562,60569,60571-60572,60574,60576-60583,60585-60586,60589,60591,60594-60595,60597-60598,60600-60601,60606-60612,60615,60617,60619-60621,60623-60625,60627-60629,60631,60633,60635,60647,60650,60652,60654,60656,60658-60659,60664-60666,60668-60670,60672,60676,60678,60680-60683,60685-60686,60688,60690,60692-60694,60697-60700,60705-60706,60708,60711,60714,60720,60724-60730,60732,60736,60742,60744,60746,60748,60750-60766,60769-60786 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44568
diff changeset
141 pass
e70f56cf6972 Merged revisions 60481,60485,60489-60492,60494-60496,60498-60499,60501-60503,60505-60506,60508-60509,60523-60524,60532,60543,60545,60547-60548,60552,60554,60556-60559,60561-60562,60569,60571-60572,60574,60576-60583,60585-60586,60589,60591,60594-60595,60597-60598,60600-60601,60606-60612,60615,60617,60619-60621,60623-60625,60627-60629,60631,60633,60635,60647,60650,60652,60654,60656,60658-60659,60664-60666,60668-60670,60672,60676,60678,60680-60683,60685-60686,60688,60690,60692-60694,60697-60700,60705-60706,60708,60711,60714,60720,60724-60730,60732,60736,60742,60744,60746,60748,60750-60766,60769-60786 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44568
diff changeset
142 b = B()
64098
60a4777a73a0 Merged revisions 84125-84126 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 58535
diff changeset
143 self.assertFalse(isinstance(b, A))
60a4777a73a0 Merged revisions 84125-84126 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 58535
diff changeset
144 self.assertFalse(isinstance(b, (A,)))
45333
e70f56cf6972 Merged revisions 60481,60485,60489-60492,60494-60496,60498-60499,60501-60503,60505-60506,60508-60509,60523-60524,60532,60543,60545,60547-60548,60552,60554,60556-60559,60561-60562,60569,60571-60572,60574,60576-60583,60585-60586,60589,60591,60594-60595,60597-60598,60600-60601,60606-60612,60615,60617,60619-60621,60623-60625,60627-60629,60631,60633,60635,60647,60650,60652,60654,60656,60658-60659,60664-60666,60668-60670,60672,60676,60678,60680-60683,60685-60686,60688,60690,60692-60694,60697-60700,60705-60706,60708,60711,60714,60720,60724-60730,60732,60736,60742,60744,60746,60748,60750-60766,60769-60786 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44568
diff changeset
145 A.register(B)
64098
60a4777a73a0 Merged revisions 84125-84126 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 58535
diff changeset
146 self.assertTrue(isinstance(b, A))
60a4777a73a0 Merged revisions 84125-84126 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 58535
diff changeset
147 self.assertTrue(isinstance(b, (A,)))
45333
e70f56cf6972 Merged revisions 60481,60485,60489-60492,60494-60496,60498-60499,60501-60503,60505-60506,60508-60509,60523-60524,60532,60543,60545,60547-60548,60552,60554,60556-60559,60561-60562,60569,60571-60572,60574,60576-60583,60585-60586,60589,60591,60594-60595,60597-60598,60600-60601,60606-60612,60615,60617,60619-60621,60623-60625,60627-60629,60631,60633,60635,60647,60650,60652,60654,60656,60658-60659,60664-60666,60668-60670,60672,60676,60678,60680-60683,60685-60686,60688,60690,60692-60694,60697-60700,60705-60706,60708,60711,60714,60720,60724-60730,60732,60736,60742,60744,60746,60748,60750-60766,60769-60786 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44568
diff changeset
148
42084
229c28cb9afb Merged revisions 55817-55961 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
diff changeset
149 def test_registration_builtins(self):
229c28cb9afb Merged revisions 55817-55961 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
diff changeset
150 class A(metaclass=abc.ABCMeta):
229c28cb9afb Merged revisions 55817-55961 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
diff changeset
151 pass
229c28cb9afb Merged revisions 55817-55961 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
diff changeset
152 A.register(int)
58473
71acd4482e65 Merged revisions 77727 via svnmerge from
Ezio Melotti <ezio.melotti@gmail.com>
parents: 55593
diff changeset
153 self.assertIsInstance(42, A)
71acd4482e65 Merged revisions 77727 via svnmerge from
Ezio Melotti <ezio.melotti@gmail.com>
parents: 55593
diff changeset
154 self.assertIsInstance(42, (A,))
64098
60a4777a73a0 Merged revisions 84125-84126 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 58535
diff changeset
155 self.assertTrue(issubclass(int, A))
60a4777a73a0 Merged revisions 84125-84126 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 58535
diff changeset
156 self.assertTrue(issubclass(int, (A,)))
42084
229c28cb9afb Merged revisions 55817-55961 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
diff changeset
157 class B(A):
229c28cb9afb Merged revisions 55817-55961 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
diff changeset
158 pass
43577
ace45b361e87 Patch# 1258 by Christian Heimes: kill basestring.
Guido van Rossum <guido@python.org>
parents: 43334
diff changeset
159 B.register(str)
ace45b361e87 Patch# 1258 by Christian Heimes: kill basestring.
Guido van Rossum <guido@python.org>
parents: 43334
diff changeset
160 class C(str): pass
58473
71acd4482e65 Merged revisions 77727 via svnmerge from
Ezio Melotti <ezio.melotti@gmail.com>
parents: 55593
diff changeset
161 self.assertIsInstance("", A)
71acd4482e65 Merged revisions 77727 via svnmerge from
Ezio Melotti <ezio.melotti@gmail.com>
parents: 55593
diff changeset
162 self.assertIsInstance("", (A,))
64098
60a4777a73a0 Merged revisions 84125-84126 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 58535
diff changeset
163 self.assertTrue(issubclass(str, A))
60a4777a73a0 Merged revisions 84125-84126 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 58535
diff changeset
164 self.assertTrue(issubclass(str, (A,)))
60a4777a73a0 Merged revisions 84125-84126 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 58535
diff changeset
165 self.assertTrue(issubclass(C, A))
60a4777a73a0 Merged revisions 84125-84126 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 58535
diff changeset
166 self.assertTrue(issubclass(C, (A,)))
42084
229c28cb9afb Merged revisions 55817-55961 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
diff changeset
167
229c28cb9afb Merged revisions 55817-55961 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
diff changeset
168 def test_registration_edge_cases(self):
229c28cb9afb Merged revisions 55817-55961 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
diff changeset
169 class A(metaclass=abc.ABCMeta):
229c28cb9afb Merged revisions 55817-55961 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
diff changeset
170 pass
229c28cb9afb Merged revisions 55817-55961 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
diff changeset
171 A.register(A) # should pass silently
229c28cb9afb Merged revisions 55817-55961 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
diff changeset
172 class A1(A):
229c28cb9afb Merged revisions 55817-55961 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
diff changeset
173 pass
229c28cb9afb Merged revisions 55817-55961 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
diff changeset
174 self.assertRaises(RuntimeError, A1.register, A) # cycles not allowed
44568
305d7d2ce047 Copied doc for reload() from trunk's function.rst to imp.rst
Christian Heimes <christian@cheimes.de>
parents: 44067
diff changeset
175 class B(object):
42084
229c28cb9afb Merged revisions 55817-55961 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
diff changeset
176 pass
229c28cb9afb Merged revisions 55817-55961 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
diff changeset
177 A1.register(B) # ok
229c28cb9afb Merged revisions 55817-55961 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
diff changeset
178 A1.register(B) # should pass silently
229c28cb9afb Merged revisions 55817-55961 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
diff changeset
179 class C(A):
229c28cb9afb Merged revisions 55817-55961 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
diff changeset
180 pass
229c28cb9afb Merged revisions 55817-55961 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
diff changeset
181 A.register(C) # should pass silently
229c28cb9afb Merged revisions 55817-55961 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
diff changeset
182 self.assertRaises(RuntimeError, C.register, A) # cycles not allowed
229c28cb9afb Merged revisions 55817-55961 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
diff changeset
183 C.register(B) # ok
229c28cb9afb Merged revisions 55817-55961 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
diff changeset
184
58535
20070880ea48 Merged revisions 77791 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 55593
diff changeset
185 def test_register_non_class(self):
20070880ea48 Merged revisions 77791 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 55593
diff changeset
186 class A(metaclass=abc.ABCMeta):
20070880ea48 Merged revisions 77791 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 55593
diff changeset
187 pass
66581
38bec90fd8ab #10273: Rename assertRegexpMatches and assertRaisesRegexp to assertRegex and assertRaisesRegex.
Ezio Melotti <ezio.melotti@gmail.com>
parents: 65065
diff changeset
188 self.assertRaisesRegex(TypeError, "Can only register classes",
38bec90fd8ab #10273: Rename assertRegexpMatches and assertRaisesRegexp to assertRegex and assertRaisesRegex.
Ezio Melotti <ezio.melotti@gmail.com>
parents: 65065
diff changeset
189 A.register, 4)
58535
20070880ea48 Merged revisions 77791 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 55593
diff changeset
190
42084
229c28cb9afb Merged revisions 55817-55961 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
diff changeset
191 def test_registration_transitiveness(self):
229c28cb9afb Merged revisions 55817-55961 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
diff changeset
192 class A(metaclass=abc.ABCMeta):
229c28cb9afb Merged revisions 55817-55961 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
diff changeset
193 pass
55593
0bb232078b8c Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents: 48875
diff changeset
194 self.assertTrue(issubclass(A, A))
0bb232078b8c Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents: 48875
diff changeset
195 self.assertTrue(issubclass(A, (A,)))
42084
229c28cb9afb Merged revisions 55817-55961 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
diff changeset
196 class B(metaclass=abc.ABCMeta):
229c28cb9afb Merged revisions 55817-55961 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
diff changeset
197 pass
55593
0bb232078b8c Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents: 48875
diff changeset
198 self.assertFalse(issubclass(A, B))
0bb232078b8c Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents: 48875
diff changeset
199 self.assertFalse(issubclass(A, (B,)))
0bb232078b8c Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents: 48875
diff changeset
200 self.assertFalse(issubclass(B, A))
0bb232078b8c Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents: 48875
diff changeset
201 self.assertFalse(issubclass(B, (A,)))
42084
229c28cb9afb Merged revisions 55817-55961 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
diff changeset
202 class C(metaclass=abc.ABCMeta):
229c28cb9afb Merged revisions 55817-55961 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
diff changeset
203 pass
229c28cb9afb Merged revisions 55817-55961 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
diff changeset
204 A.register(B)
229c28cb9afb Merged revisions 55817-55961 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
diff changeset
205 class B1(B):
229c28cb9afb Merged revisions 55817-55961 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
diff changeset
206 pass
55593
0bb232078b8c Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents: 48875
diff changeset
207 self.assertTrue(issubclass(B1, A))
0bb232078b8c Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents: 48875
diff changeset
208 self.assertTrue(issubclass(B1, (A,)))
42084
229c28cb9afb Merged revisions 55817-55961 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
diff changeset
209 class C1(C):
229c28cb9afb Merged revisions 55817-55961 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
diff changeset
210 pass
229c28cb9afb Merged revisions 55817-55961 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
diff changeset
211 B1.register(C1)
55593
0bb232078b8c Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents: 48875
diff changeset
212 self.assertFalse(issubclass(C, B))
0bb232078b8c Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents: 48875
diff changeset
213 self.assertFalse(issubclass(C, (B,)))
0bb232078b8c Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents: 48875
diff changeset
214 self.assertFalse(issubclass(C, B1))
0bb232078b8c Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents: 48875
diff changeset
215 self.assertFalse(issubclass(C, (B1,)))
0bb232078b8c Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents: 48875
diff changeset
216 self.assertTrue(issubclass(C1, A))
0bb232078b8c Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents: 48875
diff changeset
217 self.assertTrue(issubclass(C1, (A,)))
0bb232078b8c Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents: 48875
diff changeset
218 self.assertTrue(issubclass(C1, B))
0bb232078b8c Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents: 48875
diff changeset
219 self.assertTrue(issubclass(C1, (B,)))
0bb232078b8c Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents: 48875
diff changeset
220 self.assertTrue(issubclass(C1, B1))
0bb232078b8c Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents: 48875
diff changeset
221 self.assertTrue(issubclass(C1, (B1,)))
42084
229c28cb9afb Merged revisions 55817-55961 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
diff changeset
222 C1.register(int)
229c28cb9afb Merged revisions 55817-55961 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
diff changeset
223 class MyInt(int):
229c28cb9afb Merged revisions 55817-55961 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
diff changeset
224 pass
55593
0bb232078b8c Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents: 48875
diff changeset
225 self.assertTrue(issubclass(MyInt, A))
0bb232078b8c Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents: 48875
diff changeset
226 self.assertTrue(issubclass(MyInt, (A,)))
58473
71acd4482e65 Merged revisions 77727 via svnmerge from
Ezio Melotti <ezio.melotti@gmail.com>
parents: 55593
diff changeset
227 self.assertIsInstance(42, A)
71acd4482e65 Merged revisions 77727 via svnmerge from
Ezio Melotti <ezio.melotti@gmail.com>
parents: 55593
diff changeset
228 self.assertIsInstance(42, (A,))
42084
229c28cb9afb Merged revisions 55817-55961 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
diff changeset
229
43334
e82876a621b5 Thomas Wouters pointed out that _Abstract.__new__ should use super().__new__()
Guido van Rossum <guido@python.org>
parents: 42415
diff changeset
230 def test_all_new_methods_are_called(self):
e82876a621b5 Thomas Wouters pointed out that _Abstract.__new__ should use super().__new__()
Guido van Rossum <guido@python.org>
parents: 42415
diff changeset
231 class A(metaclass=abc.ABCMeta):
e82876a621b5 Thomas Wouters pointed out that _Abstract.__new__ should use super().__new__()
Guido van Rossum <guido@python.org>
parents: 42415
diff changeset
232 pass
44568
305d7d2ce047 Copied doc for reload() from trunk's function.rst to imp.rst
Christian Heimes <christian@cheimes.de>
parents: 44067
diff changeset
233 class B(object):
43334
e82876a621b5 Thomas Wouters pointed out that _Abstract.__new__ should use super().__new__()
Guido van Rossum <guido@python.org>
parents: 42415
diff changeset
234 counter = 0
e82876a621b5 Thomas Wouters pointed out that _Abstract.__new__ should use super().__new__()
Guido van Rossum <guido@python.org>
parents: 42415
diff changeset
235 def __new__(cls):
e82876a621b5 Thomas Wouters pointed out that _Abstract.__new__ should use super().__new__()
Guido van Rossum <guido@python.org>
parents: 42415
diff changeset
236 B.counter += 1
e82876a621b5 Thomas Wouters pointed out that _Abstract.__new__ should use super().__new__()
Guido van Rossum <guido@python.org>
parents: 42415
diff changeset
237 return super().__new__(cls)
e82876a621b5 Thomas Wouters pointed out that _Abstract.__new__ should use super().__new__()
Guido van Rossum <guido@python.org>
parents: 42415
diff changeset
238 class C(A, B):
e82876a621b5 Thomas Wouters pointed out that _Abstract.__new__ should use super().__new__()
Guido van Rossum <guido@python.org>
parents: 42415
diff changeset
239 pass
e82876a621b5 Thomas Wouters pointed out that _Abstract.__new__ should use super().__new__()
Guido van Rossum <guido@python.org>
parents: 42415
diff changeset
240 self.assertEqual(B.counter, 0)
e82876a621b5 Thomas Wouters pointed out that _Abstract.__new__ should use super().__new__()
Guido van Rossum <guido@python.org>
parents: 42415
diff changeset
241 C()
e82876a621b5 Thomas Wouters pointed out that _Abstract.__new__ should use super().__new__()
Guido van Rossum <guido@python.org>
parents: 42415
diff changeset
242 self.assertEqual(B.counter, 1)
e82876a621b5 Thomas Wouters pointed out that _Abstract.__new__ should use super().__new__()
Guido van Rossum <guido@python.org>
parents: 42415
diff changeset
243
42084
229c28cb9afb Merged revisions 55817-55961 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
diff changeset
244
229c28cb9afb Merged revisions 55817-55961 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
diff changeset
245 def test_main():
47201
9c930a32cebb #2621 rename test.test_support to test.support
Benjamin Peterson <benjamin@python.org>
parents: 45636
diff changeset
246 support.run_unittest(TestABC)
42084
229c28cb9afb Merged revisions 55817-55961 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
diff changeset
247
229c28cb9afb Merged revisions 55817-55961 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
diff changeset
248
229c28cb9afb Merged revisions 55817-55961 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
diff changeset
249 if __name__ == "__main__":
229c28cb9afb Merged revisions 55817-55961 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
diff changeset
250 unittest.main()