Files
wehub-resource-sync 4b6817381b
Benchmark image — build + push to ECR (any adapter) / build + push (push) Waiting to run
CI / quality (ubuntu-latest) (push) Waiting to run
CI / test (tools-runtime) (push) Waiting to run
CI / test (e2e-general) (push) Waiting to run
CI / test (cli-runtime) (push) Waiting to run
CI / test (e2e-provider-and-openclaw) (push) Waiting to run
CI / test (integrations-and-misc) (push) Waiting to run
CI / coverage-report (push) Blocked by required conditions
CI / test-kubernetes (push) Waiting to run
CI / should-run-thorough (push) Waiting to run
CI / test-thorough (cloudwatch-demo) (push) Blocked by required conditions
CI / test-thorough (flink-ecs) (push) Blocked by required conditions
CI / test-thorough (upstream-lambda) (push) Blocked by required conditions
CI / test-thorough (prefect-ecs-fargate) (push) Blocked by required conditions
CodeQL / Analyze (python) (push) Waiting to run
Release / build-binaries (zip, opensre.exe, onefile, windows-latest, windows-x64) (push) Blocked by required conditions
Release / publish-release (push) Blocked by required conditions
Release / publish-main-release (push) Blocked by required conditions
Release / prepare (push) Waiting to run
Release / verify (push) Blocked by required conditions
Release / build-python-dist (push) Blocked by required conditions
Release / build-binaries (tar.gz, opensre, onedir, macos-15-intel, darwin-x64) (push) Blocked by required conditions
Release / build-binaries (tar.gz, opensre, onedir, macos-latest, darwin-arm64) (push) Blocked by required conditions
Release / build-binaries (tar.gz, opensre, onedir, ubuntu-22.04, linux-x64) (push) Blocked by required conditions
Release / build-binaries (tar.gz, opensre, onedir, ubuntu-22.04-arm, linux-arm64) (push) Blocked by required conditions
Synthetic Deterministic Tests / Synthetic offline (deterministic) (push) Waiting to run
Interactive Shell Live (PR + post-merge) / turn-checks (no-LLM) (push) Waiting to run
Interactive Shell Live (PR + post-merge) / turn-live shard ${{ matrix.shard_index }} (push) Waiting to run
CI (OpenClaw E2E) / openclaw test (push) Has been cancelled
chore: import upstream snapshot with attribution
2026-07-13 13:10:45 +08:00

120 lines
3.9 KiB
Python

"""Coverage for the ``python -m surfaces.cli.wizard`` entrypoint."""
from __future__ import annotations
import click
import pytest
from surfaces.cli.wizard import __main__ as wizard_main
def test_main_initialises_sentry_and_emits_cli_invoked(
monkeypatch: pytest.MonkeyPatch,
) -> None:
init_calls: list[int] = []
captured: list[dict[str, object] | None] = []
monkeypatch.setattr(wizard_main, "init_sentry", lambda **_kw: init_calls.append(1))
monkeypatch.setattr(wizard_main, "shutdown_analytics", lambda **_kw: None)
monkeypatch.setattr(
wizard_main,
"capture_first_run_if_needed",
lambda: captured.append({"_marker": "install"}),
)
monkeypatch.setattr(
wizard_main,
"capture_cli_invoked",
lambda properties=None: captured.append(properties),
)
monkeypatch.setattr(wizard_main, "run_wizard", lambda: 0)
monkeypatch.setattr(wizard_main, "install_questionary_escape_cancel", lambda: None)
exit_code = wizard_main.main()
assert exit_code == 0
assert init_calls == [1]
install_marker, properties = captured
assert install_marker == {"_marker": "install"}
assert properties is not None
assert properties["entrypoint"] == "python -m surfaces.cli.wizard"
assert properties["command_path"] == "python -m surfaces.cli.wizard wizard"
assert properties["command_family"] == "wizard"
def test_main_shuts_down_analytics_without_blocking_flush(
monkeypatch: pytest.MonkeyPatch,
) -> None:
flush_calls: list[bool] = []
monkeypatch.setattr(wizard_main, "init_sentry", lambda **_kw: None)
monkeypatch.setattr(wizard_main, "capture_first_run_if_needed", lambda: None)
monkeypatch.setattr(wizard_main, "capture_cli_invoked", lambda *_args, **_kwargs: None)
monkeypatch.setattr(
wizard_main,
"shutdown_analytics",
lambda **kw: flush_calls.append(bool(kw.get("flush"))),
)
monkeypatch.setattr(wizard_main, "install_questionary_escape_cancel", lambda: None)
def _raise() -> int:
raise RuntimeError("wizard exploded")
monkeypatch.setattr(wizard_main, "run_wizard", _raise)
with pytest.raises(RuntimeError):
wizard_main.main()
assert flush_calls == [False]
def test_main_treats_abort_as_clean_cancel(
monkeypatch: pytest.MonkeyPatch,
) -> None:
flush_calls: list[bool] = []
monkeypatch.setattr(wizard_main, "init_sentry", lambda **_kw: None)
monkeypatch.setattr(wizard_main, "capture_first_run_if_needed", lambda: None)
monkeypatch.setattr(wizard_main, "capture_cli_invoked", lambda *_args, **_kwargs: None)
monkeypatch.setattr(
wizard_main,
"shutdown_analytics",
lambda **kw: flush_calls.append(bool(kw.get("flush"))),
)
monkeypatch.setattr(wizard_main, "install_questionary_escape_cancel", lambda: None)
monkeypatch.setattr(
wizard_main,
"run_wizard",
lambda: (_ for _ in ()).throw(click.Abort()),
)
exit_code = wizard_main.main()
assert exit_code == 0
assert flush_calls == [False]
def test_main_treats_keyboard_interrupt_as_clean_cancel(
monkeypatch: pytest.MonkeyPatch,
) -> None:
flush_calls: list[bool] = []
monkeypatch.setattr(wizard_main, "init_sentry", lambda **_kw: None)
monkeypatch.setattr(wizard_main, "capture_first_run_if_needed", lambda: None)
monkeypatch.setattr(wizard_main, "capture_cli_invoked", lambda *_args, **_kwargs: None)
monkeypatch.setattr(
wizard_main,
"shutdown_analytics",
lambda **kw: flush_calls.append(bool(kw.get("flush"))),
)
monkeypatch.setattr(wizard_main, "install_questionary_escape_cancel", lambda: None)
monkeypatch.setattr(
wizard_main,
"run_wizard",
lambda: (_ for _ in ()).throw(KeyboardInterrupt()),
)
exit_code = wizard_main.main()
assert exit_code == 0
assert flush_calls == [False]