[pypy-commit] pypy reorder-map-attributes: a failing test of an example that reorders infinitely often

cfbolz pypy.commits at gmail.com
Mon Feb 15 05:11:12 EST 2016


Author: Carl Friedrich Bolz <cfbolz at gmx.de>
Branch: reorder-map-attributes
Changeset: r82254:433dbd99e066
Date: 2016-02-14 17:30 +0100
http://bitbucket.org/pypy/pypy/changeset/433dbd99e066/

Log:	a failing test of an example that reorders infinitely often

diff --git a/pypy/objspace/std/test/test_mapdict.py b/pypy/objspace/std/test/test_mapdict.py
--- a/pypy/objspace/std/test/test_mapdict.py
+++ b/pypy/objspace/std/test/test_mapdict.py
@@ -148,34 +148,35 @@
     obj2.setdictvalue(space, "a", 30)
     obj2.setdictvalue(space, "c", 40)
     obj2.setdictvalue(space, "b", 50)
-    
+
     obj3.setdictvalue(space, "c", 30)
     obj3.setdictvalue(space, "a", 40)
     obj3.setdictvalue(space, "b", 50)
-    
+
     obj4.setdictvalue(space, "c", 30)
     obj4.setdictvalue(space, "b", 40)
     obj4.setdictvalue(space, "a", 50)
-    
+
     obj5.setdictvalue(space, "b", 30)
     obj5.setdictvalue(space, "a", 40)
     obj5.setdictvalue(space, "c", 50)
-    
+
     obj6.setdictvalue(space, "b", 30)
     obj6.setdictvalue(space, "c", 40)
     obj6.setdictvalue(space, "a", 50)
-    
+
     assert obj.map is obj2.map
     assert obj.map is obj3.map
     assert obj.map is obj4.map
     assert obj.map is obj5.map
     assert obj.map is obj6.map
 
+
 def test_insert_different_orders_4():
     cls = Class()
     obj = cls.instantiate()
     obj2 = cls.instantiate()
-    
+
     obj.setdictvalue(space, "a", 10)
     obj.setdictvalue(space, "b", 20)
     obj.setdictvalue(space, "c", 30)
@@ -192,7 +193,7 @@
     cls = Class()
     obj = cls.instantiate()
     obj2 = cls.instantiate()
-    
+
     obj.setdictvalue(space, "a", 10)
     obj.setdictvalue(space, "b", 20)
     obj.setdictvalue(space, "c", 30)
@@ -211,6 +212,7 @@
 
     assert obj.map is obj3.map
 
+
 def test_bug_stack_overflow_insert_attributes():
     cls = Class()
     obj = cls.instantiate()
@@ -218,6 +220,7 @@
     for i in range(1000):
         obj.setdictvalue(space, str(i), i)
 
+
 def test_insert_different_orders_perm():
     from itertools import permutations
     cls = Class()
@@ -238,6 +241,19 @@
 
     print len(seen_maps)
 
+
+def test_bug_infinite_loop():
+    cls = Class()
+    obj = cls.instantiate()
+    obj.setdictvalue(space, "e", 1)
+    obj2 = cls.instantiate()
+    obj2.setdictvalue(space, "f", 2)
+    obj3 = cls.instantiate()
+    obj3.setdictvalue(space, "a", 3)
+    obj3.setdictvalue(space, "e", 4)
+    obj3.setdictvalue(space, "f", 5)
+
+
 def test_attr_immutability(monkeypatch):
     cls = Class()
     obj = cls.instantiate()
@@ -1272,4 +1288,4 @@
 
     def test_setdefault_fast(self):
         # mapdict can't pass this, which is fine
-        pass
\ No newline at end of file
+        pass


More information about the pypy-commit mailing list