summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorkafkaf- <thekafkaf@gmail.com>2014-11-14 16:18:39 +0200
committerkafkaf- <thekafkaf@gmail.com>2014-11-14 16:18:39 +0200
commit4c5cb493f2a8e41fd05b9b25df419701e215812a (patch)
tree83fe53df28d1b0d26d82906a00d129507c981d25
parent8a371c786fc77139be2a325c05e0a5c95ea83246 (diff)
downloadpython-json-pointer-4c5cb493f2a8e41fd05b9b25df419701e215812a.tar.gz
Using the same handling for the case in which the doc is a mapping or an object that support __getitem__(but not a sequence), Updated the tests
-rw-r--r--jsonpointer.py18
-rwxr-xr-xtests.py3
2 files changed, 9 insertions, 12 deletions
diff --git a/jsonpointer.py b/jsonpointer.py
index b3f0362..06d2cb7 100644
--- a/jsonpointer.py
+++ b/jsonpointer.py
@@ -225,15 +225,7 @@ class JsonPointer(object):
assert (type(doc) in (dict, list) or hasattr(doc, '__getitem__')), "invalid document type %s" % (type(doc),)
- if isinstance(doc, Mapping):
- try:
- return doc[part]
-
- except KeyError:
- raise JsonPointerException("member '%s' not found in %s" % (part, doc))
-
- elif isinstance(doc, Sequence):
-
+ if isinstance(doc, Sequence):
if part == '-':
return EndOfList(doc)
@@ -243,10 +235,14 @@ class JsonPointer(object):
except IndexError:
raise JsonPointerException("index '%s' is out of bounds" % (part, ))
- else:
- # Object supports __getitem__, assume custom indexing
+ # Else the object is a mapping or supports __getitem__(so assume custom indexing)
+ try:
return doc[part]
+ except KeyError:
+ raise JsonPointerException("member '%s' not found in %s" % (part, doc))
+
+
def contains(self, ptr):
""" Returns True if self contains the given ptr """
return len(self.parts) > len(ptr.parts) and \
diff --git a/tests.py b/tests.py
index 3bec626..246b507 100755
--- a/tests.py
+++ b/tests.py
@@ -277,7 +277,8 @@ class AltTypesTests(unittest.TestCase):
def test_mock_dict_raises_key_error(self):
doc = self.mdict
- self.assertRaises(KeyError, resolve_pointer, doc, '/foo')
+ self.assertRaises(JsonPointerException, resolve_pointer, doc, '/foo')
+ self.assertRaises(JsonPointerException, resolve_pointer, doc, '/root/1/2/3/4')