Skip to content

Commit

Permalink
And now tidy up the tests.
Browse files Browse the repository at this point in the history
  • Loading branch information
Julian committed Oct 15, 2020
1 parent 9502934 commit d106511
Showing 1 changed file with 45 additions and 45 deletions.
90 changes: 45 additions & 45 deletions jsonschema/tests/test_cli.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
from io import StringIO
from json import JSONDecodeError
from pathlib import Path
from textwrap import dedent
from unittest import TestCase
import errno
Expand Down Expand Up @@ -688,72 +689,69 @@ def test_successful_validation_of_just_the_schema_pretty_output(self):
stderr="",
)

def test_successful_validate_with_specifying_base_uri_absolute_path(self):
try:
schema_file = tempfile.NamedTemporaryFile(
mode='w+',
delete=False
)
self.addCleanup(os.remove, schema_file.name)
schema = """
{"$ref": "%s#definitions/num"}
""" % (os.path.basename(schema_file.name))
tmp_schema = """{"definitions": {"num": {"type": "integer"}}}"""
schema_file.write(tmp_schema)
finally:
schema_file.close()
def test_successful_validation_via_explicit_base_uri(self):
ref_schema_file = tempfile.NamedTemporaryFile(delete=False)
self.addCleanup(os.remove, ref_schema_file.name)

ref_path = Path(ref_schema_file.name)
ref_path.write_text('{"definitions": {"num": {"type": "integer"}}}')

schema = f'{{"$ref": "{ref_path.name}#definitions/num"}}'

file_prefix = "file:///{}/" if "nt" == os.name else "file://{}/"
absolute_dir_path = file_prefix.format(
os.path.dirname(schema_file.name)
)
self.assertOutputs(
files=dict(some_schema=schema, some_instance='1'),
argv=[
"-i", "some_instance",
"--base-uri", absolute_dir_path,
"--base-uri", ref_path.parent.as_uri() + "/",
"some_schema",
],
stdout="",
stderr="",
)

def test_failure_validate_with_specifying_base_uri_absolute_path(self):
try:
schema_file = tempfile.NamedTemporaryFile(
mode='w+',
delete=False
)
self.addCleanup(os.remove, schema_file.name)
schema = """
{"$ref": "%s#definitions/num"}
""" % (os.path.basename(schema_file.name))
tmp_schema = """{"definitions": {"num": {"type": "integer"}}}"""
schema_file.write(tmp_schema)
finally:
schema_file.close()
def test_unsuccessful_validation_via_explicit_base_uri(self):
ref_schema_file = tempfile.NamedTemporaryFile(delete=False)
self.addCleanup(os.remove, ref_schema_file.name)

ref_path = Path(ref_schema_file.name)
ref_path.write_text('{"definitions": {"num": {"type": "integer"}}}')

schema = f'{{"$ref": "{ref_path.name}#definitions/num"}}'

file_prefix = "file:///{}/" if "nt" == os.name else "file://{}/"
absolute_dir_path = file_prefix.format(
os.path.dirname(schema_file.name)
)
self.assertOutputs(
files=dict(some_schema=schema, some_instance='"1"'),
argv=[
"-i", "some_instance",
"--base-uri", absolute_dir_path,
"--base-uri", ref_path.parent.as_uri() + "/",
"some_schema",
],
exit_code=1,
stdout="",
stderr="1: '1' is not of type 'integer'\n",
)

def test_validate_with_specifying_invalid_base_uri(self):
schema = """
{"$ref": "foo.json#definitions/num"}
"""
instance = '1'
def test_nonexistent_file_with_explicit_base_uri(self):
schema = '{"$ref": "someNonexistentFile.json#definitions/num"}'
instance = "1"

with self.assertRaises(RefResolutionError) as e:
self.assertOutputs(
files=dict(
some_schema=schema,
some_instance=instance,
),
argv=[
"-i", "some_instance",
"--base-uri", Path.cwd().as_uri(),
"some_schema",
],
)
error = str(e.exception)
self.assertIn("/someNonexistentFile.json'", error)

def test_invalid_exlicit_base_uri(self):
schema = '{"$ref": "foo.json#definitions/num"}'
instance = "1"

with self.assertRaises(RefResolutionError) as e:
self.assertOutputs(
Expand All @@ -763,12 +761,14 @@ def test_validate_with_specifying_invalid_base_uri(self):
),
argv=[
"-i", "some_instance",
"--base-uri", ".",
"--base-uri", "not@UR1",
"some_schema",
],
)
error = str(e.exception)
self.assertEqual(error, "unknown url type: 'foo.json'")
self.assertEqual(
error, "unknown url type: 'foo.json'",
)

def test_it_validates_using_the_latest_validator_when_unspecified(self):
# There isn't a better way now I can think of to ensure that the
Expand Down

0 comments on commit d106511

Please sign in to comment.