summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChase Sterling <chase.sterling@gmail.com>2013-08-25 12:37:05 -0400
committerChase Sterling <chase.sterling@gmail.com>2013-08-25 12:37:05 -0400
commitd60b7b4057b3209a5858a7ed2304f6257392bd12 (patch)
treeb32b30bc97349f90d638ac7ca9ae2abda1eeb0aa
parent7bd85c5aafefaeb7638bfa8159bf07c9194eb9d8 (diff)
downloadjsonschema-d60b7b4057b3209a5858a7ed2304f6257392bd12.tar.gz
Cleanups to last commit
Add new additionalItems test instead of replacing old one
-rw-r--r--jsonschema/_validators.py4
-rw-r--r--jsonschema/tests/test_validators.py17
2 files changed, 19 insertions, 2 deletions
diff --git a/jsonschema/_validators.py b/jsonschema/_validators.py
index 4735d8d..bfcd1c1 100644
--- a/jsonschema/_validators.py
+++ b/jsonschema/_validators.py
@@ -61,8 +61,8 @@ def additionalItems(validator, aI, instance, schema):
len_items = len(schema.get("items", []))
if validator.is_type(aI, "object"):
- for index, item in enumerate(instance[len_items:]):
- for error in validator.descend(item, aI, path=index+len_items):
+ for index, item in enumerate(instance[len_items:], start=len_items):
+ for error in validator.descend(item, aI, path=index):
yield error
elif not aI and len(instance) > len(schema.get("items", [])):
error = "Additional items are not allowed (%s %s unexpected)"
diff --git a/jsonschema/tests/test_validators.py b/jsonschema/tests/test_validators.py
index 9e31d1f..357e388 100644
--- a/jsonschema/tests/test_validators.py
+++ b/jsonschema/tests/test_validators.py
@@ -484,6 +484,23 @@ class TestValidationErrorDetails(unittest.TestCase):
self.assertEqual(e2.validator, "minimum")
def test_additionalItems(self):
+ instance = ["foo", 1]
+ schema = {
+ "items": [],
+ "additionalItems" : {"type": "integer", "minimum": 5}
+ }
+
+ validator = Draft3Validator(schema)
+ errors = validator.iter_errors(instance)
+ e1, e2 = sorted_errors(errors)
+
+ self.assertEqual(list(e1.path), [0])
+ self.assertEqual(list(e2.path), [1])
+
+ self.assertEqual(e1.validator, "type")
+ self.assertEqual(e2.validator, "minimum")
+
+ def test_additionalItems_with_items(self):
instance = ["foo", "bar", 1]
schema = {
"items": [{}],