cpython: 2407ecebcf7d (original) (raw)

--- a/Lib/test/test_descr.py +++ b/Lib/test/test_descr.py @@ -388,13 +388,21 @@ class OperatorsTest(unittest.TestCase): class ClassPropertiesAndMethods(unittest.TestCase):

+

+ def test_python_dicts(self): # Testing Python subclass of dict... self.assertTrue(issubclass(dict, dict)) self.assertIsInstance({}, dict) d = dict() self.assertEqual(d, {})

@@ -572,7 +580,7 @@ class ClassPropertiesAndMethods(unittest def _set_x(self, x): self.__x = -x a = A()

@@ -998,14 +1006,14 @@ order (MRO) for bases """ self.assertEqual(type(a), object) b = object() self.assertNotEqual(a, b)

class Cdict(object): pass @@ -1020,28 +1028,28 @@ order (MRO) for bases """ class C0(object): slots = [] x = C0()

class C1(object): slots = ['a'] x = C1()

class C3(object): slots = ['a', 'b', 'c'] x = C3()

@@ -1057,8 +1065,8 @@ order (MRO) for bases """ def get(self): return self.__a x = C4(5)

@@ -1130,7 +1138,7 @@ order (MRO) for bases """ x = C() x.foo = 5 self.assertEqual(x.foo, 5)

@@ -1222,16 +1230,16 @@ order (MRO) for bases """ class D(object): slots = ["dict"] a = D()

class W(object): slots = ["weakref"] a = W()

@@ -1242,16 +1250,16 @@ order (MRO) for bases """ class C1(W, D): slots = [] a = C1()

class C2(D, W): slots = [] a = C2()

@@ -1289,7 +1297,7 @@ order (MRO) for bases """ class C(object): pass a = C()

@@ -1299,7 +1307,7 @@ order (MRO) for bases """ C.int = lambda self: 100 self.assertEqual(int(a), 100) self.assertEqual(a.foobar, 2)

@@ -1450,7 +1458,7 @@ order (MRO) for bases """ self.assertEqual(cm.x, 42) self.assertEqual(cm.dict, {"x" : 42}) del cm.x

@support.impl_detail("the module 'xxsubtype' is internal") def test_classmethods_in_c(self): @@ -1505,7 +1513,7 @@ order (MRO) for bases """ self.assertEqual(sm.x, 42) self.assertEqual(sm.dict, {"x" : 42}) del sm.x

@support.impl_detail("the module 'xxsubtype' is internal") def test_staticmethods_in_c(self): @@ -1575,7 +1583,7 @@ order (MRO) for bases """ self.assertEqual(a.x, 10) self.assertEqual(a.x, 11) del a.x

def test_newslots(self): # Testing new slot override... @@ -1845,17 +1853,17 @@ order (MRO) for bases """ raise IndexError c1 = C() c2 = C()

@@ -1868,17 +1876,17 @@ order (MRO) for bases """ raise IndexError d1 = D() d2 = D()

@@ -1914,11 +1922,11 @@ order (MRO) for bases """ p1 = Proxy(1) p_1 = Proxy(-1) self.assertFalse(p0)

@@ -1950,7 +1958,7 @@ order (MRO) for bases """ try: weakref.ref(no) except TypeError as msg:

@@ -1974,17 +1982,17 @@ order (MRO) for bases """ del self.__x x = property(getx, setx, delx, doc="I'm the x property.") a = C()

raw = C.dict['x'] self.assertIsInstance(raw, property) @@ -1996,9 +2004,9 @@ order (MRO) for bases """ self.assertIn("fdel", attrs) self.assertEqual(raw.doc, "I'm the x property.")

for attr in "doc", "fget", "fset", "fdel": try: @@ -2062,14 +2070,14 @@ order (MRO) for bases """ del self._foo c = C() self.assertEqual(C.foo.doc, "hello")

class D(C): @C.foo.deleter @@ -2421,13 +2429,13 @@ order (MRO) for bases """ a = hexint(12345) self.assertEqual(a, 12345) self.assertEqual(int(a), 12345)

class octlong(int): slots = [] @@ -2444,31 +2452,31 @@ order (MRO) for bases """ self.assertEqual(a, 12345) self.assertEqual(int(a), 12345) self.assertEqual(hash(a), hash(12345))

# Because octlong overrides add, we can't check the absence of +0 # optimizations using octlong. class longclone(int): pass a = longclone(1)

# Check that negative clones don't segfault a = longclone(-1) @@ -2485,9 +2493,9 @@ order (MRO) for bases """ a = precfloat(12345) self.assertEqual(a, 12345.0) self.assertEqual(float(a), 12345.0)

class madcomplex(complex): def repr(self): @@ -2535,20 +2543,20 @@ order (MRO) for bases """ self.assertEqual(v, t) a = madtuple((1,2,3,4,5)) self.assertEqual(tuple(a), (1,2,3,4,5))

class madstring(str): _rev = None @@ -2570,48 +2578,48 @@ order (MRO) for bases """ self.assertEqual(u, s) s = madstring("12345") self.assertEqual(str(s), "12345")

base = "\x00" * 5 s = madstring(base) self.assertEqual(s, base) self.assertEqual(str(s), base)

class madunicode(str): @@ -2630,47 +2638,47 @@ order (MRO) for bases """ base = "12345" u = madunicode(base) self.assertEqual(str(u), base)

class sublist(list): @@ -2846,13 +2854,13 @@ order (MRO) for bases """ for x in 1, 2, 3: for y in 1, 2, 3: for op in "<", "<=", "==", "!=", ">", ">=":

@@ -2925,12 +2933,15 @@ order (MRO) for bases """ for x in 1, 2, 3: for y in 1, 2, 3: for op in "<", "<=", "==", "!=", ">", ">=":

def test_descrdoc(self): # Testing descriptor doc strings... @@ -2969,9 +2980,9 @@ order (MRO) for bases """ for cls2 in C, D, E, F: x = cls() x.class = cls2

@@ -3027,11 +3038,11 @@ order (MRO) for bases """ x = cls() x.a = 1 x.class = cls2

@@ -3200,7 +3211,7 @@ order (MRO) for bases """ for cls in C, C1, C2: s = pickle.dumps(cls, bin) cls2 = pickle.loads(s)

a = C1(1, 2); a.append(42); a.append(24) b = C2("hello", "world", 42) @@ -3230,7 +3241,7 @@ order (MRO) for bases """ import copy for cls in C, C1, C2: cls2 = copy.deepcopy(cls)

a = C1(1, 2); a.append(42); a.append(24) b = C2("hello", "world", 42) @@ -3290,7 +3301,7 @@ order (MRO) for bases """ # Now it should work x = C() y = pickle.loads(pickle.dumps(x))

@@ -3590,9 +3601,9 @@ order (MRO) for bases """ from types import ModuleType as M m = M.new(M) str(m)

@@ -3772,8 +3783,8 @@ order (MRO) for bases """ slots=() if support.check_impl_detail(): self.assertEqual(C.basicsize, B.basicsize)

def test_rmul(self): @@ -4251,7 +4262,7 @@ order (MRO) for bases """ self.assertEqual(c.attr, 1) # this makes a crash more likely: support.gc_collect()

def test_init(self): # SF 1155938 @@ -4274,17 +4285,17 @@ order (MRO) for bases """ l = [] self.assertEqual(l.add, l.add) self.assertEqual(l.add, [].add)

@@ -4451,7 +4462,7 @@ order (MRO) for bases """ fake_str = FakeStr() # isinstance() reads class

# call a method descriptor with self.assertRaises(TypeError):