feat: stabilize training package directory input error

This commit is contained in:
2026-05-01 12:04:26 -04:00
parent 07c02b5f84
commit a2c8f19e7a
2 changed files with 23 additions and 0 deletions
+2
View File
@@ -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):
+21
View File
@@ -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]