def test_unknown_output(self): # Avoid the help message on stdout with captured_output() as (stdout, stderr): with self.assertRaises(SystemExit): cli.parse_args([ "--output", "foo", "mem://some/schema", ]) self.assertIn("invalid choice: 'foo'", stderr.getvalue()) self.assertFalse(stdout.getvalue())
def test_useless_error_format(self): # Avoid the help message on stdout with captured_output() as (stdout, stderr): with self.assertRaises(SystemExit): cli.parse_args([ "--output", "pretty", "--error-format", "foo", "mem://some/schema", ]) self.assertIn( "--error-format can only be used with --output plain", stderr.getvalue(), ) self.assertFalse(stdout.getvalue())
def test_latest_validator_is_the_default(self): arguments = cli.parse_args([ "--instance", "mem://some/instance", "mem://some/schema", ]) self.assertIs(arguments["validator"], _LATEST_VERSION)
def test_find_validator_in_jsonschema(self): arguments = cli.parse_args([ "--validator", "Draft4Validator", "--instance", "foo.json", "schema.json", ]) self.assertIs(arguments["validator"], Draft4Validator)
def test_find_validator_by_fully_qualified_object_name(self): arguments = cli.parse_args([ "--validator", "jsonschema.tests.test_cli.TestParser.FakeValidator", "--instance", "foo.json", "schema.json", ]) self.assertIs(arguments["validator"], self.FakeValidator)
def test_find_validator_in_jsonschema(self): arguments = cli.parse_args( [ "--validator", "Draft4Validator", "--instance", "foo.json", "schema.json", ] ) self.assertIs(arguments["validator"], Draft4Validator)
def test_find_validator_in_jsonschema(self): arguments = cli.parse_args( [ "--validator", "Draft4Validator", "--instance", "mem://some/instance", "mem://some/schema", ], ) self.assertIs(arguments["validator"], Draft4Validator)
def test_find_validator_by_fully_qualified_object_name(self): arguments = cli.parse_args( [ "--validator", "jsonschema.tests.test_cli.TestParser.FakeValidator", "--instance", "foo.json", "schema.json", ] ) self.assertIs(arguments["validator"], self.FakeValidator)
def run_cli(self, argv, files={}, stdin=StringIO(), exit_code=0, **override): arguments = cli.parse_args(argv) arguments.update(override) self.assertFalse(hasattr(cli, "open")) cli.open = fake_open(files) try: stdout, stderr = StringIO(), StringIO() actual_exit_code = cli.run( arguments, stdin=stdin, stdout=stdout, stderr=stderr, ) finally: del cli.open self.assertEqual( actual_exit_code, exit_code, msg=dedent( """ Expected an exit code of {} != {}. stdout: {} stderr: {} """.format( exit_code, actual_exit_code, stdout.getvalue(), stderr.getvalue(), ), ), ) return stdout.getvalue(), stderr.getvalue()
def cli_output_for(self, *argv): stdout, stderr = StringIO(), StringIO() with redirect_stdout(stdout), redirect_stderr(stderr): with self.assertRaises(SystemExit): cli.parse_args(argv) return stdout.getvalue(), stderr.getvalue()