MCPcopy Index your code
hub / github.com/RustPython/RustPython / test_mutable_bases

Method test_mutable_bases

Lib/test/test_descr.py:4071–4134  ·  view source on GitHub ↗
(self)

Source from the content-addressed store, hash-verified

4069 int().__rpow__, 1, 2, 3)
4070
4071 def test_mutable_bases(self):
4072 # Testing mutable bases...
4073
4074 # stuff that should work:
4075 class C(object):
4076 pass
4077 class C2(object):
4078 def __getattribute__(self, attr):
4079 if attr == 'a':
4080 return 2
4081 else:
4082 return super(C2, self).__getattribute__(attr)
4083 def meth(self):
4084 return 1
4085 class D(C):
4086 pass
4087 class E(D):
4088 pass
4089 d = D()
4090 e = E()
4091 D.__bases__ = (C,)
4092 D.__bases__ = (C2,)
4093 self.assertEqual(d.meth(), 1)
4094 self.assertEqual(e.meth(), 1)
4095 self.assertEqual(d.a, 2)
4096 self.assertEqual(e.a, 2)
4097 self.assertEqual(C2.__subclasses__(), [D])
4098
4099 try:
4100 del D.__bases__
4101 except (TypeError, AttributeError):
4102 pass
4103 else:
4104 self.fail("shouldn't be able to delete .__bases__")
4105
4106 try:
4107 D.__bases__ = ()
4108 except TypeError as msg:
4109 if str(msg) == "a new-style class can't have only classic bases":
4110 self.fail("wrong error message for .__bases__ = ()")
4111 else:
4112 self.fail("shouldn't be able to set .__bases__ to ()")
4113
4114 try:
4115 D.__bases__ = (D,)
4116 except TypeError:
4117 pass
4118 else:
4119 # actually, we'll have crashed by here...
4120 self.fail("shouldn't be able to create inheritance cycles")
4121
4122 try:
4123 D.__bases__ = (C, C)
4124 except TypeError:
4125 pass
4126 else:
4127 self.fail("didn't detect repeated base classes")
4128

Callers

nothing calls this directly

Calls 8

methMethod · 0.95
methMethod · 0.95
strFunction · 0.85
__subclasses__Method · 0.80
DClass · 0.70
EClass · 0.70
assertEqualMethod · 0.45
failMethod · 0.45

Tested by

no test coverage detected