|
| 1 | +import json |
| 2 | +from pathlib import Path |
| 3 | +import tomllib |
| 4 | + |
| 5 | +import memoryhooker |
| 6 | + |
| 7 | + |
| 8 | +def test_version_parity(): |
| 9 | + root = Path(__file__).resolve().parent.parent |
| 10 | + pyproject_path = root / "pyproject.toml" |
| 11 | + module_v2_path = root / "ellmos-module.v2.json" |
| 12 | + |
| 13 | + with pyproject_path.open("rb") as f: |
| 14 | + pyproject_data = tomllib.load(f) |
| 15 | + pyproject_version = pyproject_data["project"]["version"] |
| 16 | + |
| 17 | + with module_v2_path.open("r", encoding="utf-8") as f: |
| 18 | + module_v2_data = json.load(f) |
| 19 | + module_v2_version = module_v2_data["version"] |
| 20 | + |
| 21 | + assert memoryhooker.__version__ == pyproject_version |
| 22 | + assert memoryhooker.__version__ == module_v2_version |
| 23 | + |
| 24 | + |
| 25 | +def test_module_v2_contract(): |
| 26 | + root = Path(__file__).resolve().parent.parent |
| 27 | + module_v2_path = root / "ellmos-module.v2.json" |
| 28 | + |
| 29 | + with module_v2_path.open("r", encoding="utf-8") as f: |
| 30 | + data = json.load(f) |
| 31 | + |
| 32 | + assert data["schema"] == "ellmos.module.v2" |
| 33 | + assert data["id"] == "memoryhooker" |
| 34 | + assert "provides" in data |
| 35 | + assert "surfaces" in data |
| 36 | + assert "boundaries" in data |
| 37 | + |
| 38 | + |
| 39 | +def test_package_exports(): |
| 40 | + expected_exports = ["Hit", "MemoryBackend", "Config", "load_config", "__version__"] |
| 41 | + for export_name in expected_exports: |
| 42 | + assert hasattr(memoryhooker, export_name) |
| 43 | + assert export_name in memoryhooker.__all__ |
0 commit comments