Skip to content

Commit 7bd85c5

Browse files
committed
Fix error paths when additionalItems is used with items keyword. fix #122
1 parent 55af59e commit 7bd85c5

File tree

2 files changed

+7
-6
lines changed

2 files changed

+7
-6
lines changed

jsonschema/_validators.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -59,9 +59,10 @@ def additionalItems(validator, aI, instance, schema):
5959
):
6060
return
6161

62+
len_items = len(schema.get("items", []))
6263
if validator.is_type(aI, "object"):
63-
for index, item in enumerate(instance[len(schema.get("items", [])):]):
64-
for error in validator.descend(item, aI, path=index):
64+
for index, item in enumerate(instance[len_items:]):
65+
for error in validator.descend(item, aI, path=index+len_items):
6566
yield error
6667
elif not aI and len(instance) > len(schema.get("items", [])):
6768
error = "Additional items are not allowed (%s %s unexpected)"

jsonschema/tests/test_validators.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -484,18 +484,18 @@ def test_patternProperties(self):
484484
self.assertEqual(e2.validator, "minimum")
485485

486486
def test_additionalItems(self):
487-
instance = ["foo", 1]
487+
instance = ["foo", "bar", 1]
488488
schema = {
489-
"items": [],
489+
"items": [{}],
490490
"additionalItems" : {"type": "integer", "minimum": 5}
491491
}
492492

493493
validator = Draft3Validator(schema)
494494
errors = validator.iter_errors(instance)
495495
e1, e2 = sorted_errors(errors)
496496

497-
self.assertEqual(list(e1.path), [0])
498-
self.assertEqual(list(e2.path), [1])
497+
self.assertEqual(list(e1.path), [1])
498+
self.assertEqual(list(e2.path), [2])
499499

500500
self.assertEqual(e1.validator, "type")
501501
self.assertEqual(e2.validator, "minimum")

0 commit comments

Comments
 (0)