Skip to content

Commit d2708fc

Browse files
authored
fix: properly propagate error messages (#306)
1 parent f34ae8b commit d2708fc

2 files changed

Lines changed: 28 additions & 4 deletions

File tree

src/twyn/cli.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -123,7 +123,7 @@ def run(
123123
load_config_from_file=True,
124124
)
125125
except TwynError as e:
126-
raise CliError(e.message) from e
126+
raise CliError(str(e)) from e
127127
except Exception as e:
128128
raise CliError("Unhandled exception occured.") from e
129129

tests/main/test_cli.py

Lines changed: 27 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -249,13 +249,37 @@ def test_dependency_file_name_has_to_be_recognized(self) -> None:
249249
assert "Dependency file name not supported." in result.output
250250

251251
@patch("twyn.cli.check_dependencies")
252-
def test_base_twyn_error_is_caught_and_wrapped_in_cli_error(self, mock_check_dependencies, caplog):
252+
def test_custom_twyn_error_is_caught_and_wrapped_in_cli_error(self, mock_check_dependencies, caplog):
253253
"""Test that BaseTwynError is caught and wrapped in CliError."""
254+
255+
class CustomError(TwynError):
256+
message = "Test base error message"
257+
258+
runner = CliRunner()
259+
260+
# Mock check_dependencies to raise a BaseTwynError
261+
test_error = CustomError("Custom error")
262+
mock_check_dependencies.side_effect = test_error
263+
264+
result = runner.invoke(cli.run, ["--dependency", "requests"])
265+
266+
assert result.exit_code == 1
267+
assert isinstance(result.exception, SystemExit)
268+
# Check that the error message was logged
269+
assert "Custom error" in caplog.text
270+
assert "Test base error mesasge " not in caplog.text
271+
272+
@patch("twyn.cli.check_dependencies")
273+
def test_default_twyn_error_is_caught_and_wrapped_in_cli_error(self, mock_check_dependencies, caplog):
274+
"""Test that BaseTwynError is caught and wrapped in CliError."""
275+
276+
class CustomError(TwynError):
277+
message = "Test base error message"
278+
254279
runner = CliRunner()
255280

256281
# Mock check_dependencies to raise a BaseTwynError
257-
test_error = TwynError("Test base error")
258-
test_error.message = "Test base error message"
282+
test_error = CustomError()
259283
mock_check_dependencies.side_effect = test_error
260284

261285
result = runner.invoke(cli.run, ["--dependency", "requests"])

0 commit comments

Comments
 (0)