Files
pkgmgr/tests/e2e/test_tools_help.py
Kevin Veen-Birkenbach f388bc51bc
Some checks failed
Mark stable commit / test-unit (push) Has been cancelled
Mark stable commit / test-integration (push) Has been cancelled
Mark stable commit / test-env-virtual (push) Has been cancelled
Mark stable commit / test-env-nix (push) Has been cancelled
Mark stable commit / test-e2e (push) Has been cancelled
Mark stable commit / test-virgin-user (push) Has been cancelled
Mark stable commit / test-virgin-root (push) Has been cancelled
Mark stable commit / codesniffer-shellcheck (push) Has been cancelled
Mark stable commit / codesniffer-ruff (push) Has been cancelled
Mark stable commit / mark-stable (push) Has been cancelled
Ruff autofix
2025-12-13 14:36:55 +01:00

65 lines
1.8 KiB
Python

"""
E2E/Integration tests for the tool-related subcommands' --help output.
We assert that calling:
- pkgmgr explore --help
- pkgmgr terminal --help
- pkgmgr code --help
completes successfully. For --help, argparse exits with SystemExit(0),
which we treat as success and suppress in the helper.
"""
from __future__ import annotations
import runpy
import sys
import unittest
from typing import List
def _run_main(argv: List[str]) -> None:
"""
Helper to run main.py with the given argv.
This mimics a "pkgmgr ..." invocation in the E2E container.
For --help invocations, argparse will call sys.exit(0), which raises
SystemExit(0). We treat this as success and only re-raise non-zero
exit codes.
"""
old_argv = sys.argv
try:
sys.argv = ["pkgmgr"] + argv
try:
runpy.run_module("pkgmgr", run_name="__main__")
except SystemExit as exc: # argparse uses this for --help
# SystemExit.code can be int, str or None; for our purposes:
code = exc.code
if code not in (0, None):
# Non-zero exit code -> real error.
raise
# For 0/None: treat as success and swallow the exception.
finally:
sys.argv = old_argv
class TestToolsHelp(unittest.TestCase):
"""
E2E/Integration tests for tool commands' --help screens.
"""
def test_explore_help(self) -> None:
"""Ensure `pkgmgr explore --help` runs successfully."""
_run_main(["explore", "--help"])
def test_terminal_help(self) -> None:
"""Ensure `pkgmgr terminal --help` runs successfully."""
_run_main(["terminal", "--help"])
def test_code_help(self) -> None:
"""Ensure `pkgmgr code --help` runs successfully."""
_run_main(["code", "--help"])
if __name__ == "__main__":
unittest.main()