test(cli): update _make_console tests for isatty-based fix (#3265)
The old test `test_make_console_uses_force_terminal` hardcoded `force_terminal is True`, which contradicts the fix: we now defer to sys.stdout.isatty() so piped / non-TTY output gets plain text instead of ANSI escape codes. Split into two tests covering both branches: - test_make_console_force_terminal_when_stdout_is_tty: TTY path (force_terminal=True, rich output) - test_make_console_force_terminal_false_when_stdout_is_not_tty: non-TTY path (force_terminal=False, plain text) — regression guard for the bug reported in #3265 Co-authored with Claude Opus 4.7
This commit is contained in:
committed by
Xubin Ren
parent
261b843839
commit
2d0442976e
@@ -167,7 +167,19 @@ def test_stream_renderer_stop_for_input_stops_spinner():
|
||||
spinner.stop.assert_called_once()
|
||||
|
||||
|
||||
def test_make_console_uses_force_terminal():
|
||||
"""Console should be created with force_terminal=True for proper ANSI handling."""
|
||||
console = stream_mod._make_console()
|
||||
assert console._force_terminal is True
|
||||
def test_make_console_force_terminal_when_stdout_is_tty():
|
||||
"""Console should set force_terminal=True when stdout is a TTY (rich output)."""
|
||||
import sys
|
||||
with patch.object(sys.stdout, "isatty", return_value=True):
|
||||
console = stream_mod._make_console()
|
||||
assert console._force_terminal is True
|
||||
|
||||
|
||||
def test_make_console_force_terminal_false_when_stdout_is_not_tty():
|
||||
"""Console should set force_terminal=False when stdout is not a TTY so that
|
||||
ANSI escape codes (cursor visibility, braille spinner frames) don't pollute
|
||||
piped output such as `docker exec -i` (#3265)."""
|
||||
import sys
|
||||
with patch.object(sys.stdout, "isatty", return_value=False):
|
||||
console = stream_mod._make_console()
|
||||
assert console._force_terminal is False
|
||||
|
||||
Reference in New Issue
Block a user