mirror of
https://github.com/NousResearch/hermes-agent.git
synced 2026-05-30 06:41:51 +00:00
test(display): cover failure-suffix rendering + update scrollback test
The original PR #17194 description claimed test_display_tool_preview.py but only ever shipped test_display_todo_progress.py. Add the missing coverage for the failure-suffix path: - _trim_error: whitespace strip, length cap, File-not-found path collapse - _detect_tool_failure: terminal exit codes, memory full, structured {error}/{message} extraction, malformed JSON, None result - get_cute_tool_message E2E: read_file failure, terminal exit-only, terminal stderr message, memory full, success path, no-result path Also update test_tool_progress_scrollback.test_error_suffix_on_failed_tool to reflect the new behavior: the generic '[error]' fallback in cli.py has been removed; failure suffixes now come from the result-aware _detect_tool_failure (e.g. '[exit 1]', '[File not found: x]').
This commit is contained in:
parent
ffde8b7b09
commit
2b10024ee8
2 changed files with 196 additions and 4 deletions
|
|
@ -125,14 +125,21 @@ class TestToolProgressScrollback:
|
|||
mock_print.assert_not_called()
|
||||
|
||||
def test_error_suffix_on_failed_tool(self):
|
||||
"""When is_error=True, the stacked line includes [error]."""
|
||||
"""When a failed tool's result is forwarded, the stacked line surfaces
|
||||
the specific error (e.g. ``[exit 1]`` or ``[File not found: x]``)
|
||||
instead of the legacy generic ``[error]`` suffix."""
|
||||
import json
|
||||
cli = _make_cli(tool_progress="all")
|
||||
cli._on_tool_progress("tool.started", "terminal", "bad cmd", {"command": "bad cmd"})
|
||||
cli._on_tool_progress("tool.started", "terminal", "false", {"command": "false"})
|
||||
with patch.object(_cli_mod, "_cprint") as mock_print:
|
||||
cli._on_tool_progress("tool.completed", "terminal", None, None, duration=0.5, is_error=True)
|
||||
cli._on_tool_progress(
|
||||
"tool.completed", "terminal", None, None,
|
||||
duration=0.5, is_error=True,
|
||||
result=json.dumps({"output": "", "exit_code": 1}),
|
||||
)
|
||||
|
||||
line = mock_print.call_args[0][0]
|
||||
assert "[error]" in line
|
||||
assert "[exit 1]" in line
|
||||
|
||||
def test_spinner_still_updates_on_started(self):
|
||||
"""tool.started still updates the spinner text for live display."""
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue