diff options
-rw-r--r-- | jsonschema/tests/test_validators.py | 11 | ||||
-rw-r--r-- | jsonschema/validators.py | 15 |
2 files changed, 18 insertions, 8 deletions
diff --git a/jsonschema/tests/test_validators.py b/jsonschema/tests/test_validators.py index 00e0c40..1228078 100644 --- a/jsonschema/tests/test_validators.py +++ b/jsonschema/tests/test_validators.py @@ -2333,8 +2333,15 @@ class TestRefResolver(TestCase): See #1085. """ schema = validators.Draft7Validator.META_SCHEMA - resolver = validators._RefResolver("", schema) - validator = validators.Draft7Validator(schema, resolver=resolver) + one = validators._RefResolver("", schema) + validator = validators.Draft7Validator(schema, resolver=one) + self.assertFalse(validator.is_valid({"maxLength": "foo"})) + + another = { + "allOf": [{"$ref": validators.Draft7Validator.META_SCHEMA["$id"]}], + } + two = validators._RefResolver("", another) + validator = validators.Draft7Validator(another, resolver=two) self.assertFalse(validator.is_valid({"maxLength": "foo"})) diff --git a/jsonschema/validators.py b/jsonschema/validators.py index 5b16fdc..262113b 100644 --- a/jsonschema/validators.py +++ b/jsonschema/validators.py @@ -387,11 +387,14 @@ def create( ) return - if resolver is None: - resolver = self._resolver.in_subresource( - specification.create_resource(schema), - ) - evolved = self.evolve(schema=schema, _resolver=resolver) + if self._ref_resolver is not None: + evolved = self.evolve(schema=schema) + else: + if resolver is None: + resolver = self._resolver.in_subresource( + specification.create_resource(schema), + ) + evolved = self.evolve(schema=schema, _resolver=resolver) for k, v in applicable_validators(schema): validator = evolved.VALIDATORS.get(k) @@ -448,7 +451,7 @@ def create( self._ref_resolver.push_scope(scope) try: - return self.descend(instance, resolved) + return list(self.descend(instance, resolved)) finally: self._ref_resolver.pop_scope() |