Author: Ronan Lamy <ronan.l...@gmail.com>
Branch: py3.5
Changeset: r87720:217511d75da2
Date: 2016-10-11 23:46 +0100
http://bitbucket.org/pypy/pypy/changeset/217511d75da2/

Log:    Clean up pickle tests to better match CPython

diff --git a/pypy/interpreter/test/test_zzpickle_and_slow.py 
b/pypy/interpreter/test/test_zzpickle_and_slow.py
--- a/pypy/interpreter/test/test_zzpickle_and_slow.py
+++ b/pypy/interpreter/test/test_zzpickle_and_slow.py
@@ -74,6 +74,14 @@
     spaceconfig = {
         "usemodules": ["struct", "binascii"]
     }
+    def setup_class(cls):
+        runappdirect = py.test.config.option.runappdirect
+        cls.w_runappdirect = cls.space.wrap(runappdirect)
+
+    def w_skip_on_cpython(self):
+        import sys
+        if self.runappdirect and '__pypy__' not in sys.modules:
+            skip('Does not work on CPython')
 
     def test_pickle_basic(self):
         import pickle
@@ -82,6 +90,7 @@
         assert result == (u'abc', 0)
 
     def test_pickle_code(self):
+        self.skip_on_cpython()
         def f():
             return 42
         import pickle
@@ -100,6 +109,7 @@
                 return 42
             mod.__dict__['func'] = func
             func.__module__ = 'mod'
+            func.__qualname__ = 'func'
             import pickle
             pckl = pickle.dumps(func)
             result = pickle.loads(pckl)
@@ -108,6 +118,7 @@
             del sys.modules['mod']
 
     def test_pickle_not_imported_module(self):
+        self.skip_on_cpython()
         import types
         mod = types.ModuleType('mod')
         mod.__dict__['a'] = 1
@@ -124,6 +135,7 @@
         assert map is result
 
     def test_pickle_non_top_reachable_func(self):
+        self.skip_on_cpython()
         def func():
             return 42
         global a
@@ -141,6 +153,7 @@
         assert func.__globals__  == result.__globals__
 
     def test_pickle_cell(self):
+        self.skip_on_cpython()
         def g():
             x = [42]
             def f():
@@ -155,40 +168,34 @@
         assert not (cell != result)
 
     def test_pickle_module(self):
+        self.skip_on_cpython()
         import pickle
-        mod    = pickle
-        pckl   = pickle.dumps(mod)
+        mod = pickle
+        pckl = pickle.dumps(mod)
         result = pickle.loads(pckl)
         assert mod is result
 
     def test_pickle_moduledict(self):
+        self.skip_on_cpython()
         import pickle
-        moddict  = pickle.__dict__
-        pckl     = pickle.dumps(moddict)
-        result   = pickle.loads(pckl)
+        moddict = pickle.__dict__
+        pckl = pickle.dumps(moddict)
+        result = pickle.loads(pckl)
         assert moddict is result
 
     def test_pickle_bltins_module(self):
+        self.skip_on_cpython()
         import pickle
-        mod  = __builtins__
-        pckl     = pickle.dumps(mod)
-        result   = pickle.loads(pckl)
+        mod = __builtins__
+        pckl = pickle.dumps(mod)
+        result = pickle.loads(pckl)
         assert mod is result
 
-    def test_pickle_buffer(self):
-        skip("Can't pickle buffer objects on top of CPython either.  "
-             "Do we really need it?")
-        import pickle
-        a = buffer('ABCDEF')
-        pckl     = pickle.dumps(a)
-        result   = pickle.loads(pckl)
-        assert a == result
-
     def test_pickle_complex(self):
         import pickle
         a = complex(1.23,4.567)
-        pckl     = pickle.dumps(a)
-        result   = pickle.loads(pckl)
+        pckl = pickle.dumps(a)
+        result = pickle.loads(pckl)
         assert a == result
 
     def test_pickle_method(self):
@@ -199,28 +206,30 @@
                 return (myclass, ())
         import pickle, sys, types
         myclass.__module__ = 'mod'
+        myclass.__qualname__ = 'myclass'
         myclass_inst = myclass()
         mod = types.ModuleType('mod')
         mod.myclass = myclass
         sys.modules['mod'] = mod
         try:
-            method   = myclass_inst.f
-            pckl     = pickle.dumps(method)
-            result   = pickle.loads(pckl)
+            method = myclass_inst.f
+            pckl = pickle.dumps(method)
+            result = pickle.loads(pckl)
             # we cannot compare the objects, because the method will be a 
fresh one
             assert method() == result()
         finally:
             del sys.modules['mod']
 
     def test_pickle_staticmethod(self):
+        self.skip_on_cpython()
         class myclass(object):
             def f():
                 return 42
             f = staticmethod(f)
         import pickle
-        method   = myclass.f
-        pckl     = pickle.dumps(method)
-        result   = pickle.loads(pckl)
+        method = myclass.f
+        pckl = pickle.dumps(method)
+        result = pickle.loads(pckl)
         assert method() == result()
 
     def test_pickle_classmethod(self):
@@ -230,6 +239,7 @@
             f = classmethod(f)
         import pickle, sys, types
         myclass.__module__ = 'mod'
+        myclass.__qualname__ = 'myclass'
         mod = types.ModuleType('mod')
         mod.myclass = myclass
         sys.modules['mod'] = mod
@@ -248,9 +258,9 @@
         test_pickle_tupleiter here, just this test.
         '''
         import pickle
-        liter  = iter([3,9,6,12,15,17,19,111])
+        liter = iter([3,9,6,12,15,17,19,111])
         next(liter)
-        pckl   = pickle.dumps(liter)
+        pckl = pickle.dumps(liter)
         result = pickle.loads(pckl)
         next(liter)
         next(result)
@@ -262,7 +272,7 @@
         import pickle
         liter  = reversed([3,9,6,12,15,17,19,111])
         next(liter)
-        pckl   = pickle.dumps(liter)
+        pckl = pickle.dumps(liter)
         result = pickle.loads(pckl)
         next(liter)
         next(result)
@@ -274,16 +284,14 @@
         import pickle
         iter = reversed([])
         raises(StopIteration, next, iter)
-        pckl   = pickle.dumps(iter)
+        pckl = pickle.dumps(iter)
         result = pickle.loads(pckl)
         raises(StopIteration, next, result)
 
-    # This test used to be marked xfail and it tried to test for the past
-    # support of pickling dictiter objects.
     def test_pickle_dictiter(self):
         import pickle
         tdict = {'2':2, '3':3, '5':5}
-        diter  = iter(tdict)
+        diter = iter(tdict)
         seen = next(diter)
         pckl = pickle.dumps(diter)
         result = pickle.loads(pckl)
@@ -311,7 +319,7 @@
         for it in (), IE():
             iter = reversed(it)
             raises(StopIteration, next, iter)
-            pckl   = pickle.dumps(iter)
+            pckl = pickle.dumps(iter)
             result = pickle.loads(pckl)
             raises(StopIteration, next, result)
 
@@ -320,7 +328,7 @@
         e = enumerate(range(100, 106))
         next(e)
         next(e)
-        pckl   = pickle.dumps(e)
+        pckl = pickle.dumps(e)
         result = pickle.loads(pckl)
         res = next(e)
         assert res == (2, 102)
@@ -356,11 +364,11 @@
             import pickle
             mod.giveme = giveme
             giveme.__module__ = mod
-            g1   = mod.giveme(10)
+            g1 = mod.giveme(10)
             #next(g1)
             #next(g1)
             pckl = pickle.dumps(g1)
-            g2   = pickle.loads(pckl)
+            g2 = pickle.loads(pckl)
             assert list(g1) == list(g2)
         finally:
             del sys.modules['mod']
@@ -380,11 +388,12 @@
             import pickle
             mod.giveme = giveme
             giveme.__module__ = mod
-            g1   = mod.giveme(10)
+            giveme.__qualname__ = 'giveme'
+            g1 = mod.giveme(10)
             next(g1)
             next(g1)
             pckl = pickle.dumps(g1)
-            g2   = pickle.loads(pckl)
+            g2 = pickle.loads(pckl)
             assert list(g1) == list(g2)
         finally:
             del sys.modules['mod']
@@ -401,15 +410,8 @@
         assert a_list == [1, 1]
         assert meth2.__self__ == [1, 2]
 
-    def test_pickle_builtin_method_unbound(self):
-        skip('we no longer have unbound methods in py3k: is this test still 
valid?')
-        unbound_meth = list.append
-        unbound_meth2 = pickle.loads(pickle.dumps(unbound_meth))
-        l = []
-        unbound_meth2(l, 1)
-        assert l == [1]
-
     def test_pickle_submodule(self):
+        self.skip_on_cpython()
         import pickle
         import sys, types
 
@@ -431,7 +433,9 @@
         sys.modules['mod'] = mod = types.ModuleType('mod')
         try:
             class MyDict(dict):
-                __module__ = 'mod'
+                pass
+            MyDict.__module__ = 'mod'
+            MyDict.__qualname__ = MyDict.__name__
             mod.MyDict = MyDict
             obj = MyDict()
             pckl = pickle.dumps(obj)
_______________________________________________
pypy-commit mailing list
pypy-commit@python.org
https://mail.python.org/mailman/listinfo/pypy-commit

Reply via email to