def run_cli(self,
                argv,
                files={},
                stdin=NativeIO(),
                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 = NativeIO(), NativeIO()
            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()
Exemple #2
0
 def test_successful_validation(self):
     stdout, stderr = NativeIO(), NativeIO()
     exit_code = cli.run(
         {
             "validator": fake_validator(),
             "schema": {},
             "instances": [1],
             "error_format": "{error.message}",
         },
         stdout=stdout,
         stderr=stderr,
     )
     self.assertFalse(stdout.getvalue())
     self.assertFalse(stderr.getvalue())
     self.assertEqual(exit_code, 0)
Exemple #3
0
 def test_successful_validation(self):
     stdout, stderr = NativeIO(), NativeIO()
     exit_code = cli.run(
         {
             "validator": fake_validator(),
             "schema": {},
             "instances": [1],
             "error_format": "{error.message}",
         },
         stdout=stdout,
         stderr=stderr,
     )
     self.assertFalse(stdout.getvalue())
     self.assertFalse(stderr.getvalue())
     self.assertEqual(exit_code, 0)
Exemple #4
0
 def test_unsuccessful_validation(self):
     error = ValidationError("I am an error!", instance=1)
     stdout, stderr = NativeIO(), NativeIO()
     exit_code = cli.run(
         {
             "validator": fake_validator([error]),
             "schema": {},
             "instances": [1],
             "error_format": "{error.instance} - {error.message}",
         },
         stdout=stdout,
         stderr=stderr,
     )
     self.assertFalse(stdout.getvalue())
     self.assertEqual(stderr.getvalue(), "1 - I am an error!")
     self.assertEqual(exit_code, 1)
Exemple #5
0
 def test_unsuccessful_validation(self):
     error = ValidationError("I am an error!", instance=1)
     stdout, stderr = NativeIO(), NativeIO()
     exit_code = cli.run(
         {
             "validator": fake_validator([error]),
             "schema": {},
             "instances": [1],
             "error_format": "{error.instance} - {error.message}",
         },
         stdout=stdout,
         stderr=stderr,
     )
     self.assertFalse(stdout.getvalue())
     self.assertEqual(stderr.getvalue(), "1 - I am an error!")
     self.assertEqual(exit_code, 1)
Exemple #6
0
 def test_unsuccessful_validation_multiple_instances(self):
     first_errors = [
         ValidationError("9", instance=1),
         ValidationError("8", instance=1),
     ]
     second_errors = [ValidationError("7", instance=2)]
     stdout, stderr = NativeIO(), NativeIO()
     exit_code = cli.run(
         {
             "validator": fake_validator(first_errors, second_errors),
             "schema": {},
             "instances": [1, 2],
             "error_format": "{error.instance} - {error.message}\t",
         },
         stdout=stdout,
         stderr=stderr,
     )
     self.assertFalse(stdout.getvalue())
     self.assertEqual(stderr.getvalue(), "1 - 9\t1 - 8\t2 - 7\t")
     self.assertEqual(exit_code, 1)
Exemple #7
0
 def test_unsuccessful_validation_multiple_instances(self):
     first_errors = [
         ValidationError("9", instance=1),
         ValidationError("8", instance=1),
     ]
     second_errors = [ValidationError("7", instance=2)]
     stdout, stderr = NativeIO(), NativeIO()
     exit_code = cli.run(
         {
             "validator": fake_validator(first_errors, second_errors),
             "schema": {},
             "instances": [1, 2],
             "error_format": "{error.instance} - {error.message}\t",
         },
         stdout=stdout,
         stderr=stderr,
     )
     self.assertFalse(stdout.getvalue())
     self.assertEqual(stderr.getvalue(), "1 - 9\t1 - 8\t2 - 7\t")
     self.assertEqual(exit_code, 1)