feat(agent): make ingestion preparation reproducible
This commit is contained in:
1 parent
3b1b40f8b3
commit
65bc8a9422
9 files changed
+185
-40
No files matched your search
@@ -0,0 +1,51 @@
|
||||
import importlib.util
|
||||
import json
|
||||
import sys
|
||||
from pathlib import Path
|
||||
|
||||
|
||||
PACK_ROOT = Path(__file__).resolve().parents[1]
|
||||
INSTALL_PATH = PACK_ROOT / "scripts" / "install.py"
|
||||
spec = importlib.util.spec_from_file_location("gewu_install", INSTALL_PATH)
|
||||
assert spec and spec.loader
|
||||
gewu_install = importlib.util.module_from_spec(spec)
|
||||
sys.modules[spec.name] = gewu_install
|
||||
spec.loader.exec_module(gewu_install)
|
||||
|
||||
|
||||
def test_install_receipt_contains_service_run_pins(tmp_path: Path) -> None:
|
||||
workspace = tmp_path / "project"
|
||||
state = gewu_install.install(workspace, PACK_ROOT, "dedicated")
|
||||
manifest = json.loads((PACK_ROOT / "manifest.json").read_text(encoding="utf-8"))
|
||||
|
||||
assert state["run_pins"] == {
|
||||
"pack_id": manifest["pack_id"],
|
||||
"pack_version": manifest["pack_version"],
|
||||
"pack_snapshot_digest": manifest["snapshot"]["digest"],
|
||||
"module_pins": [
|
||||
{
|
||||
"module_id": module["module_id"],
|
||||
"implementation_version": module["implementation_version"],
|
||||
"sha256": module["sha256"],
|
||||
}
|
||||
for module in manifest["modules"]
|
||||
],
|
||||
}
|
||||
assert gewu_install._validated_state(state) == state
|
||||
|
||||
installed_state = json.loads(
|
||||
(workspace / gewu_install.STATE_PATH).read_text(encoding="utf-8")
|
||||
)
|
||||
assert installed_state["run_pins"] == state["run_pins"]
|
||||
gewu_install.uninstall(workspace)
|
||||
|
||||
|
||||
def test_uninstall_accepts_legacy_install_receipt(tmp_path: Path) -> None:
|
||||
workspace = tmp_path / "project"
|
||||
state = gewu_install.install(workspace, PACK_ROOT, "dedicated")
|
||||
state.pop("run_pins")
|
||||
(workspace / gewu_install.STATE_PATH).write_text(
|
||||
json.dumps(state), encoding="utf-8"
|
||||
)
|
||||
|
||||
gewu_install.uninstall(workspace)
|
||||
Reference in new issue
Block a user