refactor(tests): add shared CLI test helpers
Adds shared test helpers for CLI script loading and scoped core.database stubs, then converts a low-conflict pilot set of CLI tests. Part of #2523.
This commit is contained in:
committed by
GitHub
parent
cf5c5118d8
commit
dd1fa7e1c4
25
tests/helpers/cli_loader.py
Normal file
25
tests/helpers/cli_loader.py
Normal file
@@ -0,0 +1,25 @@
|
||||
"""Shared loader for CLI scripts under scripts/."""
|
||||
import importlib.machinery
|
||||
import importlib.util
|
||||
from pathlib import Path
|
||||
|
||||
|
||||
_SCRIPTS_DIR = Path(__file__).resolve().parents[2] / "scripts"
|
||||
|
||||
|
||||
def load_script(script_name):
|
||||
"""Load a script from scripts/ by name and return it as a module.
|
||||
|
||||
The module name is derived from the script name (hyphens become underscores,
|
||||
with a _cli suffix) giving each script a stable, unique import identity.
|
||||
|
||||
Any sys.modules stubs the script needs at import time must be injected via
|
||||
monkeypatch before calling this function.
|
||||
"""
|
||||
module_name = script_name.replace("-", "_") + "_cli"
|
||||
path = _SCRIPTS_DIR / script_name
|
||||
loader = importlib.machinery.SourceFileLoader(module_name, str(path))
|
||||
spec = importlib.util.spec_from_loader(loader.name, loader)
|
||||
module = importlib.util.module_from_spec(spec)
|
||||
loader.exec_module(module)
|
||||
return module
|
||||
Reference in New Issue
Block a user