Author: Brian Kearns <[email protected]>
Branch:
Changeset: r70077:e9a9d862dd67
Date: 2014-03-19 00:24 -0400
http://bitbucket.org/pypy/pypy/changeset/e9a9d862dd67/
Log: fix test_marshal
diff --git a/pypy/module/marshal/interp_marshal.py
b/pypy/module/marshal/interp_marshal.py
--- a/pypy/module/marshal/interp_marshal.py
+++ b/pypy/module/marshal/interp_marshal.py
@@ -7,7 +7,7 @@
Py_MARSHAL_VERSION = 2
-@unwrap_spec(w_version = WrappedDefault(Py_MARSHAL_VERSION))
+@unwrap_spec(w_version=WrappedDefault(Py_MARSHAL_VERSION))
def dump(space, w_data, w_f, w_version):
"""Write the 'data' object into the open file 'f'."""
# special case real files for performance
@@ -24,7 +24,7 @@
finally:
writer.finished()
-@unwrap_spec(w_version = WrappedDefault(Py_MARSHAL_VERSION))
+@unwrap_spec(w_version=WrappedDefault(Py_MARSHAL_VERSION))
def dumps(space, w_data, w_version):
"""Return the string that would have been written to a file
by dump(data, file)."""
@@ -217,6 +217,16 @@
self.space.marshal_w(w_obj, self)
def dump_w_obj(self, w_obj):
+ space = self.space
+ if space.type(w_obj).is_heaptype():
+ try:
+ buf = space.buffer_w(w_obj)
+ except OperationError as e:
+ if not e.match(space, space.w_TypeError):
+ raise
+ self.raise_exc("unmarshallable object")
+ else:
+ w_obj = space.newbuffer(buf)
try:
self.put_w_obj(w_obj)
except rstackovf.StackOverflow:
diff --git a/pypy/module/marshal/test/test_marshal.py
b/pypy/module/marshal/test/test_marshal.py
--- a/pypy/module/marshal/test/test_marshal.py
+++ b/pypy/module/marshal/test/test_marshal.py
@@ -173,10 +173,13 @@
import marshal
types = (float, complex, int, long, tuple, list, dict, set, frozenset)
for cls in types:
+ print cls
class subtype(cls):
pass
exc = raises(ValueError, marshal.dumps, subtype)
assert str(exc.value) == 'unmarshallable object'
+ exc = raises(ValueError, marshal.dumps, subtype())
+ assert str(exc.value) == 'unmarshallable object'
def test_valid_subtypes(self):
import marshal
_______________________________________________
pypy-commit mailing list
[email protected]
https://mail.python.org/mailman/listinfo/pypy-commit