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 / mark-stable (push) Has been cancelled
* Remove legacy *main.py* and introduce *pkgmgr* module entry via *python -m pkgmgr* * Add ***main**.py* as the canonical entry point delegating to the CLI * Export *PYTHONPATH=src* in Makefile to ensure reliable imports in dev and CI * Update setup scripts (venv & nix) to use module execution * Refactor all E2E tests to execute the real module entry instead of file paths This aligns pkgmgr with standard Python packaging practices and simplifies testing, setup, and execution across environments. https://chatgpt.com/share/693c9056-716c-800f-b583-fc9245eab2b4
66 lines
1.8 KiB
Python
66 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 os
|
|
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() |