Files
graphify/tests/test_cli_help.py
T
safishamsiandClaude Opus 4.8 de35292406 fix(cli): derive the --help platform list from _PLATFORM_CONFIG + add a drift guard (#4655)
#4655 added amp/copilot/kilo/kimi to the hand-maintained --help install
line but still omitted antigravity-windows, so it disagreed with
_print_install_usage. Derive the list from the same
[*_PLATFORM_CONFIG, "gemini", "cursor"] expression the install usage
uses so the two cannot drift, and add test_help_lists_every_install_platform
to catch any future platform that is not advertised.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-10-22 13:16:25 +01:00

67 lines
2.3 KiB
Python

"""`graphify --help` must list user-facing commands that dispatch_command implements.
#3140: the top-level listing in graphify/__main__.py is hand-maintained and
drifted from dispatch_command() — prs, provider, and 7 of 8 export formats
never appeared. Precedent: #2071 / PR #2075 (one usage line + stdout assert).
"""
from __future__ import annotations
import subprocess
import sys
PYTHON = sys.executable
def test_help_lists_prs_provider_and_export_formats():
"""#3140: `graphify --help` must advertise prs, provider, and all export formats."""
r = subprocess.run(
[PYTHON, "-m", "graphify", "--help"],
capture_output=True,
text=True,
)
assert r.returncode == 0, f"--help should exit 0: {r.stderr}"
out = r.stdout
assert " prs" in out, "`graphify --help` must list prs (#3140)"
assert "provider" in out, "`graphify --help` must list provider (#3140)"
for fmt in (
"html",
"callflow-html",
"obsidian",
"wiki",
"svg",
"graphml",
"neo4j",
"falkordb",
):
assert f"export {fmt}" in out, (
f"`graphify --help` must list export {fmt} (#3140)"
)
# Silent hook internals — deliberately excluded from user-facing help.
assert "hook-check" not in out
assert "hook-guard" not in out
def test_help_lists_every_install_platform():
"""#4655: the `install [--platform P]` line must advertise every accepted
`--platform` value. It is derived from the same source as `graphify install`
usage (`[*_PLATFORM_CONFIG, "gemini", "cursor"]`), so this guards against the
list silently drifting again (amp, copilot, kilo, kimi, antigravity-windows
had all gone missing)."""
import re
from graphify.install import _PLATFORM_CONFIG
r = subprocess.run(
[PYTHON, "-m", "graphify", "--help"],
capture_output=True,
text=True,
)
assert r.returncode == 0, f"--help should exit 0: {r.stderr}"
m = re.search(r"install \[--platform P\][^(]*\(([^)]*)\)", r.stdout)
assert m, "could not find the install --platform list in `graphify --help`"
listed = set(m.group(1).split("|"))
for platform_name in [*_PLATFORM_CONFIG, "gemini", "cursor"]:
assert platform_name in listed, (
f"`graphify --help` must list the --platform value {platform_name!r} (#4655)"
)