mirror of
https://github.com/NCBM/plyngent.git
synced 2026-11-07 15:37:55 +08:00
cli/display: show a cancelled wait distinctly
The wait line rendered every non-error/non-slept outcome as "(disturbed)", so a Ctrl+C cancellation of the wait prompt looked like the human disturbed it. Print "(cancelled)" for the tool's "cancelled by user" result.
This commit is contained in:
@@ -444,11 +444,13 @@ def _wait_prefix(_args_json: str) -> str:
|
|||||||
|
|
||||||
|
|
||||||
def _wait_detail(_args_json: str, result: str) -> str:
|
def _wait_detail(_args_json: str, result: str) -> str:
|
||||||
"""``wait`` outcome: slept duration, disturbed, or error."""
|
"""``wait`` outcome: slept duration, disturbed, cancelled, or error."""
|
||||||
if result.startswith("error:"):
|
if result.startswith("error:"):
|
||||||
return _pretty_segments((f"({result})", "red"))
|
return _pretty_segments((f"({result})", "red"))
|
||||||
if result.startswith("waited "):
|
if result.startswith("waited "):
|
||||||
return _pretty_segments((f"({result.removeprefix('waited ')})", "green"))
|
return _pretty_segments((f"({result.removeprefix('waited ')})", "green"))
|
||||||
|
if result.startswith("cancelled by user"):
|
||||||
|
return _pretty_segments(("(cancelled)", "yellow"))
|
||||||
return _pretty_segments(("(disturbed)", "yellow"))
|
return _pretty_segments(("(disturbed)", "yellow"))
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -553,6 +553,13 @@ async def test_pretty_wait_disturbed(capsys: pytest.CaptureFixture[str]) -> None
|
|||||||
assert "* Wait (disturbed)" in out
|
assert "* Wait (disturbed)" in out
|
||||||
|
|
||||||
|
|
||||||
|
async def test_pretty_wait_cancelled(capsys: pytest.CaptureFixture[str]) -> None:
|
||||||
|
"""Ctrl+C during the wait prompt reads as cancelled, not disturbed."""
|
||||||
|
await render_events(_aiter([_pretty_call("wait", '{"duration": 30}'), _result("cancelled by user")]))
|
||||||
|
out = capsys.readouterr().out
|
||||||
|
assert "* Wait (cancelled)" in out
|
||||||
|
|
||||||
|
|
||||||
async def test_pretty_wait_error(capsys: pytest.CaptureFixture[str]) -> None:
|
async def test_pretty_wait_error(capsys: pytest.CaptureFixture[str]) -> None:
|
||||||
content = "error: duration must not be negative"
|
content = "error: duration must not be negative"
|
||||||
await render_events(_aiter([_pretty_call("wait", '{"duration": -1}'), _result(content)]))
|
await render_events(_aiter([_pretty_call("wait", '{"duration": -1}'), _result(content)]))
|
||||||
|
|||||||
Reference in New Issue
Block a user