feat: stabilize training package directory input error
This commit is contained in:
@@ -116,6 +116,8 @@ def _display_path(path: Optional[Path]) -> Optional[str]:
|
||||
|
||||
|
||||
def _public_error(exc: Exception) -> str:
|
||||
if isinstance(exc, IsADirectoryError):
|
||||
return "input_path_is_directory"
|
||||
if isinstance(exc, FileNotFoundError):
|
||||
return "input_file_not_found"
|
||||
if isinstance(exc, json.JSONDecodeError):
|
||||
|
||||
@@ -152,6 +152,27 @@ class TrainingCaseCliM6Tests(unittest.TestCase):
|
||||
self.assertNotIn("\n", line)
|
||||
self.assertNotIn("[Errno", line)
|
||||
|
||||
def test_cli_error_summary_uses_stable_code_for_directory_input_path(self) -> None:
|
||||
with tempfile.TemporaryDirectory() as tmpdir:
|
||||
input_path = Path(tmpdir)
|
||||
output_path = Path(tmpdir) / "public_training_case_package.json"
|
||||
stdout = io.StringIO()
|
||||
|
||||
with contextlib.redirect_stdout(stdout):
|
||||
exit_code = training_cli.main(["--input", str(input_path), "--output", str(output_path)])
|
||||
|
||||
line = stdout.getvalue().strip()
|
||||
summary = json.loads(line)
|
||||
|
||||
self.assertEqual(exit_code, 2)
|
||||
self.assertEqual(list(summary), ["passed", "input", "output", "error"])
|
||||
self.assertFalse(summary["passed"])
|
||||
self.assertEqual(summary["input"], str(input_path))
|
||||
self.assertEqual(summary["output"], str(output_path))
|
||||
self.assertEqual(summary["error"], "input_path_is_directory")
|
||||
self.assertNotIn("\n", line)
|
||||
self.assertNotIn("[Errno", line)
|
||||
|
||||
def test_cli_exported_public_package_is_offline_projection_without_solution_fields(self) -> None:
|
||||
fixture_item = json.loads(FIXTURE.read_text(encoding="utf-8"))["items"][0]
|
||||
|
||||
|
||||
Reference in New Issue
Block a user