Skip to content
Snippets Groups Projects
Commit 979944bff9b8 authored by Bob Ippolito's avatar Bob Ippolito
Browse files

Merge pull request #78 from idank/master

fix pickle breakage with JSONDecodeError
No related branches found
No related tags found
No related merge requests found
...@@ -41,6 +41,9 @@ ...@@ -41,6 +41,9 @@
else: else:
self.endlineno, self.endcolno = None, None self.endlineno, self.endcolno = None, None
def __reduce__(self):
return self.__class__, (self.msg, self.doc, self.pos, self.end)
def linecol(doc, pos): def linecol(doc, pos):
lineno = doc.count('\n', 0, pos) + 1 lineno = doc.count('\n', 0, pos) + 1
......
import sys import sys, pickle
from unittest import TestCase from unittest import TestCase
import simplejson as json import simplejson as json
...@@ -33,3 +33,19 @@ ...@@ -33,3 +33,19 @@
self.fail('Expected JSONDecodeError') self.fail('Expected JSONDecodeError')
self.assertEqual(err.lineno, 1) self.assertEqual(err.lineno, 1)
self.assertEqual(err.colno, 10) self.assertEqual(err.colno, 10)
def test_error_is_pickable(self):
err = None
try:
json.loads('{}\na\nb')
except json.JSONDecodeError:
err = sys.exc_info()[1]
else:
self.fail('Expected JSONDecodeError')
s = pickle.dumps(err)
e = pickle.loads(s)
self.assertEquals(err.msg, e.msg)
self.assertEquals(err.doc, e.doc)
self.assertEquals(err.pos, e.pos)
self.assertEquals(err.end, e.end)
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment