Browse Source

stdpy: Add PicklingError to pickle module

rdb 5 years ago
parent
commit
65c1ef968c
2 changed files with 13 additions and 1 deletions
  1. 2 0
      direct/src/stdpy/pickle.py
  2. 11 1
      tests/stdpy/test_pickle.py

+ 2 - 0
direct/src/stdpy/pickle.py

@@ -33,6 +33,8 @@ else:
 # with the local pickle.py.
 pickle = __import__('pickle')
 
+PicklingError = pickle.PicklingError
+
 if sys.version_info >= (3, 0):
     BasePickler = pickle._Pickler
     BaseUnpickler = pickle._Unpickler

+ 11 - 1
tests/stdpy/test_pickle.py

@@ -1,4 +1,5 @@
-from direct.stdpy.pickle import dumps, loads
+from direct.stdpy.pickle import dumps, loads, PicklingError
+import pytest
 
 
 def test_reduce_persist():
@@ -9,3 +10,12 @@ def test_reduce_persist():
 
     parent2, child2 = loads(dumps([parent, child]))
     assert tuple(parent2.children) == (child2,)
+
+
+def test_pickle_error():
+    class ErroneousPickleable(object):
+        def __reduce__(self):
+            return 12345
+
+    with pytest.raises(PicklingError):
+        dumps(ErroneousPickleable())