Address review comments.

This commit is contained in:
Itamar Turner-Trauring 2017-01-26 12:58:19 -05:00
parent 822c75f653
commit 124b81a129
2 changed files with 16 additions and 9 deletions

View File

@ -30,13 +30,16 @@ def additionalProperties(validator, aP, instance, schema):
yield error
elif not aP and extras:
if "patternProperties" in schema:
patterns = sorted(schema["patternProperties"].keys())
patterns = sorted(schema["patternProperties"])
if len(extras) == 1:
verb = "does"
else:
verb = "do"
error = "%s %s not match any of the regexs: %s" % (
", ".join(map(repr, sorted(extras))), verb, ", ".join(patterns))
error = "%s %s not match any of the regexes: %s" % (
", ".join(map(repr, sorted(extras))),
verb,
", ".join(map(repr, patterns)),
)
yield ValidationError(error)
else:
error = "Additional properties are not allowed (%s %s unexpected)"

View File

@ -195,21 +195,25 @@ class TestValidationErrorMessages(unittest.TestCase):
schema = {u"type": u"object",
u"additionalProperties": False,
u"patternProperties": {
u"$abc^": {u"type": u"string"},
u"$def^": {u"type": u"string"}
u"^abc$": {u"type": u"string"},
u"^def$": {u"type": u"string"}
}}
message = self.message_for({u"zebra": 123}, schema,
cls=Draft4Validator)
self.assertEqual(
message,
"{} does not match any of the regexs: $abc^, $def^".format(
repr(u"zebra")))
"{} does not match any of the regexes: {}, {}".format(
repr(u"zebra"), repr(u"^abc$"), repr(u"^def$"),
),
)
message = self.message_for({u"zebra": 123, u"fish": 456}, schema,
cls=Draft4Validator)
self.assertEqual(
message,
"{}, {} do not match any of the regexs: $abc^, $def^".format(
repr(u"fish"), repr(u"zebra")))
"{}, {} do not match any of the regexes: {}, {}".format(
repr(u"fish"), repr(u"zebra"), repr(u"^abc$"), repr(u"^def$")
),
)
class TestValidationErrorDetails(unittest.TestCase):