38 lines
1.1 KiB
Python
38 lines
1.1 KiB
Python
"""Regression coverage for starting the API server as a script."""
|
|
|
|
from __future__ import annotations
|
|
|
|
import subprocess
|
|
import sys
|
|
from pathlib import Path
|
|
|
|
|
|
ROOT = Path(__file__).resolve().parents[1]
|
|
API_SERVER = ROOT / "scripts" / "jyotish_api_server.py"
|
|
|
|
|
|
def test_script_entrypoint_can_lazy_import_scripts_package_from_another_cwd() -> None:
|
|
"""The documented script command must retain repository-root package imports."""
|
|
program = f"""
|
|
import runpy
|
|
import sys
|
|
from pathlib import Path
|
|
|
|
root = Path({str(ROOT)!r})
|
|
sys.path[:] = [entry for entry in sys.path if Path(entry or '.').resolve() != root]
|
|
namespace = runpy.run_path({str(API_SERVER)!r}, run_name='jyotish_api_server_script_entrypoint')
|
|
handler = namespace['JyotishAPIHandler'].__new__(namespace['JyotishAPIHandler'])
|
|
result = handler._compute_vedastro_gateway_archives()
|
|
assert isinstance(result, dict)
|
|
"""
|
|
completed = subprocess.run(
|
|
[sys.executable, "-c", program],
|
|
cwd="/tmp",
|
|
capture_output=True,
|
|
text=True,
|
|
check=False,
|
|
timeout=20,
|
|
)
|
|
|
|
assert completed.returncode == 0, completed.stderr
|