from __future__ import annotations import importlib.util from pathlib import Path ROOT = Path(__file__).resolve().parents[2] SCRIPT = ROOT / "scripts" / "check_1c_moxel_next_action.py" SPEC = importlib.util.spec_from_file_location("check_1c_moxel_next_action", SCRIPT) assert SPEC and SPEC.loader check = importlib.util.module_from_spec(SPEC) SPEC.loader.exec_module(check) def plan() -> dict: return {"experiments": [{"id": "named_range_rectangular_area", "target": "named_range"}]} def action(command: str) -> dict: return { "schema": "codex_1c_moxel_next_action.v1", "status": "ok", "action": { "id": "named_range_rectangular_area", "target": "named_range", "manual_action": "Create range.", "expected_signal": "Distinct raw scalars.", "capture_command_with_pipeline": command, }, } def test_check_next_action_accepts_valid_action() -> None: report = check.check_next_action(plan(), action("python watcher.py --run-pipeline-after")) assert report["status"] == "ok" assert report["failures"] == [] def test_check_next_action_requires_pipeline_flag() -> None: report = check.check_next_action(plan(), action("python watcher.py")) assert report["status"] == "failed" assert "capture_command_with_pipeline must include --run-pipeline-after" in report["failures"]