Skip to content

Commit a039d8e

Browse files
committed
test_type.py add test for checking if TypeError (instance layout conflict) is not raised on multiple inheritance when __slots__ is set
1 parent 64b0743 commit a039d8e

File tree

1 file changed

+49
-4
lines changed
  • graalpython/com.oracle.graal.python.test/src/tests

1 file changed

+49
-4
lines changed

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

Lines changed: 49 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -153,6 +153,7 @@ class C(A, B): pass
153153
# assert raised
154154
# assert C.__bases__ == [object]
155155

156+
156157
def test_namespace_with_non_string_keys():
157158
class MyStr(str):
158159
pass
@@ -162,6 +163,7 @@ class MyStr(str):
162163
})
163164
assert any(type(k) == MyStr for k in A.__dict__.keys())
164165

166+
165167
def test_mro():
166168
class M(type):
167169
def mro(cls):
@@ -173,7 +175,8 @@ class B: pass
173175
class C(A, B, metaclass = M): pass
174176

175177
assert C.__mro__ == (C, B, A, object)
176-
178+
179+
177180
def test_dir_sorted():
178181
class C:
179182
b = 1
@@ -253,6 +256,7 @@ class MyDict(dict):
253256
]:
254257
assert type(x).__flags__ & flag, "masked __flags__ = {}, expected {}".format(type(x).__flags__ & flag, flag)
255258

259+
256260
def test_dict():
257261
def dict_element_raises(o, err):
258262
raised = False
@@ -295,7 +299,8 @@ class SubSlots(BaseSlots, Base):
295299

296300
str(type(SubSlots.__dict__['__dict__'])) == "<class 'get_set_desc'>"
297301
assert SubSlots().__dict__ == {}
298-
302+
303+
299304
def test_itemsize():
300305
assert object.__itemsize__ == 0
301306
assert list.__itemsize__ == 0
@@ -330,7 +335,8 @@ class C():
330335
class C(tuple):
331336
__itemsize__ = 42
332337
assert C.__itemsize__ == 8
333-
338+
339+
334340
def test_descr_name_qualname():
335341
assert float.real.__qualname__ == 'float.real'
336342
assert float.real.__name__ == 'real'
@@ -349,7 +355,8 @@ class C: __slots__ = ['a']
349355
except AttributeError:
350356
raised = True
351357
assert raised
352-
358+
359+
353360
def test_cant_set_builtin_attributes():
354361
raised = False
355362
try:
@@ -392,3 +399,41 @@ def test_cant_set_builtin_attributes():
392399
except TypeError:
393400
raised = True
394401
assert raised
402+
403+
404+
def test_slots_no_instance_layout_conflict():
405+
# with slots
406+
class A(object):
407+
__slots__ = ("a", "b")
408+
409+
class B(A):
410+
pass
411+
412+
class C(A):
413+
pass
414+
415+
raised = False
416+
try:
417+
class D(B, C):
418+
pass
419+
except TypeError:
420+
raised = True
421+
assert not raised
422+
423+
# without slots
424+
class A(object):
425+
pass
426+
427+
class B(A):
428+
pass
429+
430+
class C(A):
431+
pass
432+
433+
raised = False
434+
try:
435+
class D(B, C):
436+
pass
437+
except TypeError:
438+
raised = True
439+
assert not raised

0 commit comments

Comments
 (0)