Skip to content

Commit 2f4423a

Browse files
committed
fix: disable ANSI codes in CLI tests for CI compatibility
Rich outputs ANSI escape sequences in CI (no TTY), which splits option names like --api-key across multiple escape codes. Setting NO_COLOR=1 in subprocess env ensures plain text output for assertions.
1 parent 00219b1 commit 2f4423a

1 file changed

Lines changed: 16 additions & 1 deletion

File tree

tests/test_cli.py

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,19 @@
11
"""Tests for CLI entry point."""
22

3+
import os
34
import subprocess
45
import sys
56

7+
# Env that disables Rich ANSI codes so assertions can match plain text
8+
_PLAIN_ENV = {**os.environ, "NO_COLOR": "1"}
9+
610

711
def test_help_exits_zero():
812
result = subprocess.run(
913
[sys.executable, "-m", "zad_cli", "--help"],
1014
capture_output=True,
1115
text=True,
16+
env=_PLAIN_ENV,
1217
)
1318
assert result.returncode == 0
1419
assert "CLI for ZAD" in result.stdout
@@ -23,6 +28,7 @@ def test_version():
2328
[sys.executable, "-m", "zad_cli", "version"],
2429
capture_output=True,
2530
text=True,
31+
env=_PLAIN_ENV,
2632
)
2733
assert result.returncode == 0
2834
assert "zad-cli" in result.stdout
@@ -33,6 +39,7 @@ def test_project_help_without_api_key():
3339
[sys.executable, "-m", "zad_cli", "project", "--help"],
3440
capture_output=True,
3541
text=True,
42+
env=_PLAIN_ENV,
3643
)
3744
assert result.returncode == 0
3845
assert "list" in result.stdout
@@ -48,6 +55,7 @@ def test_deployment_help_shows_create():
4855
[sys.executable, "-m", "zad_cli", "deployment", "--help"],
4956
capture_output=True,
5057
text=True,
58+
env=_PLAIN_ENV,
5159
)
5260
assert result.returncode == 0
5361
assert "create" in result.stdout
@@ -63,7 +71,7 @@ def test_deploy_create_takes_positional_name():
6371
[sys.executable, "-m", "zad_cli", "deployment", "create", "test"],
6472
capture_output=True,
6573
text=True,
66-
env={"PATH": "/usr/bin:/bin"},
74+
env={"PATH": "/usr/bin:/bin", "NO_COLOR": "1"},
6775
)
6876
assert result.returncode != 0
6977
# Should fail on missing project/key or missing component args, not on argument parsing
@@ -75,6 +83,7 @@ def test_component_help_shows_delete():
7583
[sys.executable, "-m", "zad_cli", "component", "--help"],
7684
capture_output=True,
7785
text=True,
86+
env=_PLAIN_ENV,
7887
)
7988
assert result.returncode == 0
8089
assert "delete" in result.stdout
@@ -87,6 +96,7 @@ def test_service_help_shows_delete():
8796
[sys.executable, "-m", "zad_cli", "service", "--help"],
8897
capture_output=True,
8998
text=True,
99+
env=_PLAIN_ENV,
90100
)
91101
assert result.returncode == 0
92102
assert "delete" in result.stdout
@@ -100,6 +110,7 @@ def test_task_list_uses_filter_project():
100110
[sys.executable, "-m", "zad_cli", "task", "list", "--help"],
101111
capture_output=True,
102112
text=True,
113+
env=_PLAIN_ENV,
103114
)
104115
assert result.returncode == 0
105116
assert "--filter-project" in result.stdout
@@ -111,6 +122,7 @@ def test_deployment_create_has_yes_flag():
111122
[sys.executable, "-m", "zad_cli", "deployment", "create", "--help"],
112123
capture_output=True,
113124
text=True,
125+
env=_PLAIN_ENV,
114126
)
115127
assert result.returncode == 0
116128
assert "--yes" in result.stdout
@@ -122,6 +134,7 @@ def test_logs_takes_positional_deployment():
122134
[sys.executable, "-m", "zad_cli", "logs", "--help"],
123135
capture_output=True,
124136
text=True,
137+
env=_PLAIN_ENV,
125138
)
126139
assert result.returncode == 0
127140
assert "DEPLOYMENT" in result.stdout
@@ -132,6 +145,7 @@ def test_clone_help_shows_check():
132145
[sys.executable, "-m", "zad_cli", "clone", "--help"],
133146
capture_output=True,
134147
text=True,
148+
env=_PLAIN_ENV,
135149
)
136150
assert result.returncode == 0
137151
assert "check" in result.stdout
@@ -159,5 +173,6 @@ def test_all_subcommands_have_help():
159173
[sys.executable, "-m", "zad_cli", cmd, "--help"],
160174
capture_output=True,
161175
text=True,
176+
env=_PLAIN_ENV,
162177
)
163178
assert result.returncode == 0, f"{cmd} --help failed: {result.stderr}"

0 commit comments

Comments
 (0)