Use print_command_output for CommandFailedError output

This commit is contained in:
Kivi Kaitaniemi
2025-12-18 22:44:27 +02:00
parent d084f826f1
commit dd192d5871
9 changed files with 16 additions and 8 deletions
+1 -2
View File
@@ -120,8 +120,7 @@ def prg(
if code != 0:
output.print_warning(f"Command '{shlex.join(cmd)}' returned with an exit code {code}.")
if not pty:
for line in command_output.strip().split("\n"):
output.print_continuation(line.strip())
output.print_command_output(command_output)
return command_output
+1
View File
@@ -84,6 +84,7 @@ def main():
failed = True
except errors.CommandFailedError as error:
output.print_error(str(error))
output.print_command_output(error.output)
output.print_traceback()
failed = True
except ValueError as error:
+1 -1
View File
@@ -68,4 +68,4 @@ class CommandFailedError(Exception):
def __init__(self, command: list[str], output: str) -> None:
self.command = shlex.join(command)
self.output = output.strip()
super().__init__(f"Running a command '{self.command}' failed. Output:\n{self.output}")
super().__init__(f"Running a command '{self.command}' failed.")
+4 -4
View File
@@ -133,12 +133,12 @@ def print_debug(msg: str):
print(f"{_tag()} {_gray('DEBUG')}: {msg}")
def print_command_output(msg: str):
def print_command_output(command_output: str):
"""
Prints command output without a DECMAN tag if debug messages are enabled.
Prints command output prefixed with a DECMAN tag.
"""
if config.debug_output:
print(msg)
for line in command_output.strip().split("\n"):
print_continuation(line.strip())
# ─────────────────────────────
+1
View File
@@ -231,6 +231,7 @@ class AUR(plugins.Plugin):
except errors.CommandFailedError as error:
output.print_error("Running a AUR command failed.")
output.print_error(str(error))
output.print_command_output(error.output)
output.print_traceback()
return False
+1
View File
@@ -93,6 +93,7 @@ class Flatpak(plugins.Plugin):
except errors.CommandFailedError as error:
output.print_error("Running a flatpak command failed.")
output.print_error(str(error))
output.print_command_output(error.output)
output.print_traceback()
return False
return True
+1
View File
@@ -111,6 +111,7 @@ class Pacman(plugins.Plugin):
except errors.CommandFailedError as error:
output.print_error("Running a pacman command failed.")
output.print_error(str(error))
output.print_command_output(error.output)
output.print_traceback()
return False
return True
+1
View File
@@ -179,6 +179,7 @@ class Systemd(plugins.Plugin):
except errors.CommandFailedError as error:
output.print_error("Running a systemd command failed.")
output.print_error(str(error))
output.print_command_output(error.output)
output.print_traceback()
return False
return True
+5 -1
View File
@@ -191,14 +191,18 @@ def test_apply_returns_false_on_command_failure(monkeypatch: pytest.MonkeyPatch)
def fake_print_traceback() -> None:
traceback_called.append(True)
def fake_print_continuation(msg: str) -> None:
continuations.append(msg)
monkeypatch.setattr(pacman_plugin.output, "print_error", fake_print_error)
monkeypatch.setattr(pacman_plugin.output, "print_traceback", fake_print_traceback)
monkeypatch.setattr(pacman_plugin.output, "print_continuation", fake_print_continuation)
ok = pacman.apply(store, dry_run=False)
assert ok is False
assert any("pacman command failed" in msg for msg in errors_logged)
assert any("boom" in msg for msg in errors_logged)
assert any("boom" in msg for msg in continuations)
assert traceback_called # at least once