Skip to content

Commit d106511

Browse files
committed
And now tidy up the tests.
1 parent 9502934 commit d106511

File tree

1 file changed

+45
-45
lines changed

1 file changed

+45
-45
lines changed

jsonschema/tests/test_cli.py

Lines changed: 45 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
from io import StringIO
22
from json import JSONDecodeError
3+
from pathlib import Path
34
from textwrap import dedent
45
from unittest import TestCase
56
import errno
@@ -688,72 +689,69 @@ def test_successful_validation_of_just_the_schema_pretty_output(self):
688689
stderr="",
689690
)
690691

691-
def test_successful_validate_with_specifying_base_uri_absolute_path(self):
692-
try:
693-
schema_file = tempfile.NamedTemporaryFile(
694-
mode='w+',
695-
delete=False
696-
)
697-
self.addCleanup(os.remove, schema_file.name)
698-
schema = """
699-
{"$ref": "%s#definitions/num"}
700-
""" % (os.path.basename(schema_file.name))
701-
tmp_schema = """{"definitions": {"num": {"type": "integer"}}}"""
702-
schema_file.write(tmp_schema)
703-
finally:
704-
schema_file.close()
692+
def test_successful_validation_via_explicit_base_uri(self):
693+
ref_schema_file = tempfile.NamedTemporaryFile(delete=False)
694+
self.addCleanup(os.remove, ref_schema_file.name)
695+
696+
ref_path = Path(ref_schema_file.name)
697+
ref_path.write_text('{"definitions": {"num": {"type": "integer"}}}')
698+
699+
schema = f'{{"$ref": "{ref_path.name}#definitions/num"}}'
705700

706-
file_prefix = "file:///{}/" if "nt" == os.name else "file://{}/"
707-
absolute_dir_path = file_prefix.format(
708-
os.path.dirname(schema_file.name)
709-
)
710701
self.assertOutputs(
711702
files=dict(some_schema=schema, some_instance='1'),
712703
argv=[
713704
"-i", "some_instance",
714-
"--base-uri", absolute_dir_path,
705+
"--base-uri", ref_path.parent.as_uri() + "/",
715706
"some_schema",
716707
],
717708
stdout="",
718709
stderr="",
719710
)
720711

721-
def test_failure_validate_with_specifying_base_uri_absolute_path(self):
722-
try:
723-
schema_file = tempfile.NamedTemporaryFile(
724-
mode='w+',
725-
delete=False
726-
)
727-
self.addCleanup(os.remove, schema_file.name)
728-
schema = """
729-
{"$ref": "%s#definitions/num"}
730-
""" % (os.path.basename(schema_file.name))
731-
tmp_schema = """{"definitions": {"num": {"type": "integer"}}}"""
732-
schema_file.write(tmp_schema)
733-
finally:
734-
schema_file.close()
712+
def test_unsuccessful_validation_via_explicit_base_uri(self):
713+
ref_schema_file = tempfile.NamedTemporaryFile(delete=False)
714+
self.addCleanup(os.remove, ref_schema_file.name)
715+
716+
ref_path = Path(ref_schema_file.name)
717+
ref_path.write_text('{"definitions": {"num": {"type": "integer"}}}')
718+
719+
schema = f'{{"$ref": "{ref_path.name}#definitions/num"}}'
735720

736-
file_prefix = "file:///{}/" if "nt" == os.name else "file://{}/"
737-
absolute_dir_path = file_prefix.format(
738-
os.path.dirname(schema_file.name)
739-
)
740721
self.assertOutputs(
741722
files=dict(some_schema=schema, some_instance='"1"'),
742723
argv=[
743724
"-i", "some_instance",
744-
"--base-uri", absolute_dir_path,
725+
"--base-uri", ref_path.parent.as_uri() + "/",
745726
"some_schema",
746727
],
747728
exit_code=1,
748729
stdout="",
749730
stderr="1: '1' is not of type 'integer'\n",
750731
)
751732

752-
def test_validate_with_specifying_invalid_base_uri(self):
753-
schema = """
754-
{"$ref": "foo.json#definitions/num"}
755-
"""
756-
instance = '1'
733+
def test_nonexistent_file_with_explicit_base_uri(self):
734+
schema = '{"$ref": "someNonexistentFile.json#definitions/num"}'
735+
instance = "1"
736+
737+
with self.assertRaises(RefResolutionError) as e:
738+
self.assertOutputs(
739+
files=dict(
740+
some_schema=schema,
741+
some_instance=instance,
742+
),
743+
argv=[
744+
"-i", "some_instance",
745+
"--base-uri", Path.cwd().as_uri(),
746+
"some_schema",
747+
],
748+
)
749+
error = str(e.exception)
750+
self.assertIn("/someNonexistentFile.json'", error)
751+
752+
def test_invalid_exlicit_base_uri(self):
753+
schema = '{"$ref": "foo.json#definitions/num"}'
754+
instance = "1"
757755

758756
with self.assertRaises(RefResolutionError) as e:
759757
self.assertOutputs(
@@ -763,12 +761,14 @@ def test_validate_with_specifying_invalid_base_uri(self):
763761
),
764762
argv=[
765763
"-i", "some_instance",
766-
"--base-uri", ".",
764+
"--base-uri", "not@UR1",
767765
"some_schema",
768766
],
769767
)
770768
error = str(e.exception)
771-
self.assertEqual(error, "unknown url type: 'foo.json'")
769+
self.assertEqual(
770+
error, "unknown url type: 'foo.json'",
771+
)
772772

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

0 commit comments

Comments
 (0)