Initial SQL-only 1C adapter baseline

This commit is contained in:
2026-07-22 03:03:47 +03:00
commit e2503b77e7
545 changed files with 184711 additions and 0 deletions
+65
View File
@@ -0,0 +1,65 @@
from __future__ import annotations
import importlib.util
import json
from pathlib import Path
ROOT = Path(__file__).resolve().parents[2]
SCRIPT = ROOT / "scripts" / "status_1c_moxel.py"
SPEC = importlib.util.spec_from_file_location("status_1c_moxel", SCRIPT)
assert SPEC and SPEC.loader
status_mod = importlib.util.module_from_spec(SPEC)
SPEC.loader.exec_module(status_mod)
def write_json(path: Path, payload: dict) -> None:
path.parent.mkdir(parents=True, exist_ok=True)
path.write_text(json.dumps(payload, ensure_ascii=False), encoding="utf-8")
def test_build_status_reports_blockers_and_next_action(tmp_path: Path) -> None:
write_json(
tmp_path / "plugins/1c/metadata/moxel-schema-registry.json",
{
"counts": {"rules": 2, "verified_read": 1, "candidate_read": 1, "write_enabled": 0},
"rules": [
{"target": "moxel.inline_text_cell.column", "read_status": "verified_read"},
{"target": "moxel.named_range.left", "read_status": "candidate_read"},
],
},
)
write_json(tmp_path / "reports/1c-template-baselines/moxel-schema-registry-verification.json", {"status": "ok", "counts": {}})
write_json(tmp_path / "reports/1c-template-baselines/moxel-discovery-pipeline.json", {"status": "ok", "steps": []})
write_json(
tmp_path / "reports/1c-template-baselines/moxel-next-action.json",
{
"status": "ok",
"action": {
"id": "named_range_rectangular_area",
"target": "named_range",
"manual_action": "Create rectangle.",
"capture_command_with_pipeline": "python watcher.py --run-pipeline-after",
},
},
)
write_json(tmp_path / "reports/1c-template-baselines/moxel-next-action-check.json", {"status": "ok", "counts": {}})
status = status_mod.build_status(tmp_path)
assert status["status"] == "ok"
assert status["next_action"]["id"] == "named_range_rectangular_area"
assert "moxel.named_range.left" in status["registry"]["candidate_read_targets"]
assert any("candidate_read rules remain" in blocker for blocker in status["blockers"])
def test_resolve_output_path_keeps_absolute_paths(tmp_path: Path) -> None:
absolute = tmp_path / "out.json"
assert status_mod.resolve_output_path(tmp_path / "root", str(absolute)) == absolute
def test_resolve_output_path_anchors_relative_paths(tmp_path: Path) -> None:
root = tmp_path / "root"
assert status_mod.resolve_output_path(root, "reports/out.json") == root / "reports/out.json"