Skip to content

Commit b63feb5

Browse files
committed
[GR-23218] Make test_descr pass - set __bases__/best_base().
PullRequest: graalpython/1124
2 parents 65e9374 + 3c590c6 commit b63feb5

File tree

8 files changed

+568
-272
lines changed

8 files changed

+568
-272
lines changed

graalpython/com.oracle.graal.python.test/src/tests/test_type.py

Lines changed: 104 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -37,40 +37,116 @@
3737
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
3838
# SOFTWARE.
3939

40+
def assert_raises(err, fn, *args, **kwargs):
41+
raised = False
42+
try:
43+
fn(*args, **kwargs)
44+
except err:
45+
raised = True
46+
assert raised
4047

4148
def test_base():
4249
A = type('A', (), {})
4350
assert A.__base__ == object
4451

45-
# class B:
46-
# def ham(self):
47-
# return 'ham%d' % self
48-
#
49-
# class A(object):
50-
# pass
51-
#
52-
# class B(dict):
53-
# pass
54-
#
55-
# class C(A, B):
56-
# pass
57-
#
58-
# assert C.__base__ == B
59-
#
60-
# class A(object):
61-
# pass
62-
#
63-
# class B(object):
64-
# pass
65-
#
66-
# class C(A, B):
67-
# pass
68-
#
69-
# assert C.__base__ == A
70-
#
71-
# C = type('C', (B, int), {'spam': lambda self: 'spam%s' % self})
72-
# assert C.__base__ == int
52+
class B:
53+
def ham(self):
54+
return 'ham%d' % self
7355

56+
class A(object):
57+
pass
58+
59+
class B(dict):
60+
pass
61+
62+
class C(A, B):
63+
pass
64+
65+
assert C.__base__ == B
66+
67+
#-----------------------------------------------
68+
69+
class A(object):
70+
pass
71+
72+
class B(object):
73+
pass
74+
75+
class C(A, B):
76+
pass
77+
78+
assert C.__base__ == A
79+
80+
C = type('C', (B, int), {'spam': lambda self: 'spam%s' % self})
81+
assert C.__base__ == int
82+
83+
#-----------------------------------------------
84+
85+
class A (object): pass
86+
87+
class BB (A): pass
88+
89+
class B(BB): pass
90+
91+
class C (A):
92+
__slots__ = ['a']
93+
94+
class D (B, C): pass
95+
96+
assert D.__base__ == C
97+
98+
#-----------------------------------------------
99+
100+
class A: pass
101+
102+
class B: pass
103+
104+
class C(A): pass
105+
106+
C.__bases__ = (A, B)
107+
108+
assert C.__bases__ == (A, B)
109+
assert A.__subclasses__() == [C]
110+
assert B.__subclasses__() == [C]
111+
112+
#-----------------------------------------------
113+
114+
class A: pass
115+
116+
class B: pass
117+
118+
class C(A, B): pass
119+
120+
C.__bases__ == (A, B)
121+
A.__subclasses__() == [C]
122+
B.__subclasses__() == [C]
123+
124+
raised = False
125+
try:
126+
C.__bases__ = (int,)
127+
except TypeError:
128+
raised = True
129+
assert raised
130+
131+
assert C.__bases__ == (A, B)
132+
assert A.__subclasses__() == [C]
133+
assert B.__subclasses__() == [C]
134+
135+
#-----------------------------------------------
136+
137+
# class A: pass
138+
#
139+
# class B: pass
140+
#
141+
# class C: pass
142+
#
143+
# raised = False
144+
# try:
145+
# C.__bases__ = (A, B)
146+
# except TypeError:
147+
# raised = True
148+
# assert raised
149+
# assert C.__bases__ == [object]
74150

75151
def test_namespace_with_non_string_keys():
76152
class MyStr(str):

graalpython/com.oracle.graal.python.test/src/tests/unittest_tags/test_descr.txt

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
*graalpython.lib-python.3.test.test_descr.ClassPropertiesAndMethods.test_bpo25750
55
*graalpython.lib-python.3.test.test_descr.ClassPropertiesAndMethods.test_buffer_inheritance
66
*graalpython.lib-python.3.test.test_descr.ClassPropertiesAndMethods.test_builtin_function_or_method
7+
*graalpython.lib-python.3.test.test_descr.ClassPropertiesAndMethods.test_classic
78
*graalpython.lib-python.3.test.test_descr.ClassPropertiesAndMethods.test_classic_comparisons
89
*graalpython.lib-python.3.test.test_descr.ClassPropertiesAndMethods.test_classmethods
910
*graalpython.lib-python.3.test.test_descr.ClassPropertiesAndMethods.test_classmethods_in_c
@@ -27,16 +28,21 @@
2728
*graalpython.lib-python.3.test.test_descr.ClassPropertiesAndMethods.test_keywords
2829
*graalpython.lib-python.3.test.test_descr.ClassPropertiesAndMethods.test_meth_class_get
2930
*graalpython.lib-python.3.test.test_descr.ClassPropertiesAndMethods.test_method_wrapper
31+
*graalpython.lib-python.3.test.test_descr.ClassPropertiesAndMethods.test_methods
3032
*graalpython.lib-python.3.test.test_descr.ClassPropertiesAndMethods.test_methods_in_c
3133
*graalpython.lib-python.3.test.test_descr.ClassPropertiesAndMethods.test_mixing_slot_wrappers
3234
*graalpython.lib-python.3.test.test_descr.ClassPropertiesAndMethods.test_monotonicity
3335
*graalpython.lib-python.3.test.test_descr.ClassPropertiesAndMethods.test_mro_disagreement
3436
*graalpython.lib-python.3.test.test_descr.ClassPropertiesAndMethods.test_multiple_inheritance
35-
*graalpython.lib-python.3.test.test_descr.ClassPropertiesAndMethods.test_mutable_bases_with_failing_mro
37+
*graalpython.lib-python.3.test.test_descr.ClassPropertiesAndMethods.test_mutable_bases
38+
*graalpython.lib-python.3.test.test_descr.ClassPropertiesAndMethods.test_mutable_bases_catch_mro_conflict
3639
*graalpython.lib-python.3.test.test_descr.ClassPropertiesAndMethods.test_mutable_names
3740
*graalpython.lib-python.3.test.test_descr.ClassPropertiesAndMethods.test_newslots
3841
*graalpython.lib-python.3.test.test_descr.ClassPropertiesAndMethods.test_not_implemented
3942
*graalpython.lib-python.3.test.test_descr.ClassPropertiesAndMethods.test_object_class
43+
*graalpython.lib-python.3.test.test_descr.ClassPropertiesAndMethods.test_overloading
44+
*graalpython.lib-python.3.test.test_descr.ClassPropertiesAndMethods.test_properties_doc_attrib
45+
*graalpython.lib-python.3.test.test_descr.ClassPropertiesAndMethods.test_properties_plus
4046
*graalpython.lib-python.3.test.test_descr.ClassPropertiesAndMethods.test_proxy_super
4147
*graalpython.lib-python.3.test.test_descr.ClassPropertiesAndMethods.test_python_dicts
4248
*graalpython.lib-python.3.test.test_descr.ClassPropertiesAndMethods.test_python_lists
@@ -67,6 +73,7 @@
6773
*graalpython.lib-python.3.test.test_descr.MroTest.test_incomplete_extend
6874
*graalpython.lib-python.3.test.test_descr.MroTest.test_incomplete_set_bases_on_self
6975
*graalpython.lib-python.3.test.test_descr.MroTest.test_incomplete_super
76+
*graalpython.lib-python.3.test.test_descr.MroTest.test_reent_set_bases_on_base
7077
*graalpython.lib-python.3.test.test_descr.MroTest.test_reent_set_bases_on_direct_base
7178
*graalpython.lib-python.3.test.test_descr.OperatorsTest.test_complexes
7279
*graalpython.lib-python.3.test.test_descr.OperatorsTest.test_dicts

0 commit comments

Comments
 (0)