ONNX
onnxruntime
onnx-mlir
quantization
fp32
ONNX_Models / tests /test_publish_artifacts.py
purejomo's picture
Finalize public ONNX/ONNX-MLIR validation release
ed3aeeb
Raw
History Blame Contribute Delete
3.67 kB
from __future__ import annotations
import hashlib
import json
import shutil
import subprocess
import sys
import tempfile
import unittest
from pathlib import Path
REPO_ROOT = Path(__file__).resolve().parents[1]
SCRIPT = REPO_ROOT / "scripts" / "stages" / "publish_artifacts.py"
SCHEMA = REPO_ROOT / "schemas" / "artifact_publish_plan.schema.json"
def digest(value: bytes) -> str:
return hashlib.sha256(value).hexdigest()
class PublishArtifactsTests(unittest.TestCase):
def run_cli(self, root: Path, mode: str, *extra: str) -> subprocess.CompletedProcess[str]:
return subprocess.run(
[
sys.executable, str(SCRIPT), "--mode", mode, "--repo-root", str(root),
"--plan", "plan.json", "--schema", "schema.json",
"--manifest", "canonical/manifest.json", *extra,
],
capture_output=True,
text=True,
check=False,
)
def fixture(self, root: Path) -> bytes:
payload = b"immutable-smoke-artifact\x00\x01\n"
(root / "evidence").mkdir()
(root / "evidence" / "artifact.mlir").write_bytes(payload)
shutil.copyfile(SCHEMA, root / "schema.json")
plan = {
"schema_version": "1.0",
"model_id": "TEST01",
"source_evidence_root": "evidence",
"toolchain": {"name": "test", "version": "1"},
"source_inputs": [
{"role": "source_model", "path": "evidence/artifact.mlir", "sha256": digest(payload)}
],
"assertions": {"weights_modified": False},
"artifacts": [
{
"artifact_id": "test-mlir", "variant": "fp32", "ir_stage": "onnx",
"source": "evidence/artifact.mlir", "destination": "canonical/onnx.mlir",
"sha256": digest(payload), "status": "PASS", "failure_code": None,
}
],
}
(root / "plan.json").write_text(json.dumps(plan), encoding="utf-8")
return payload
def test_publish_reuse_verify_and_overwrite_refusal(self) -> None:
with tempfile.TemporaryDirectory() as temporary:
root = Path(temporary)
payload = self.fixture(root)
first = self.run_cli(root, "publish")
self.assertEqual(first.returncode, 0, first.stderr)
self.assertEqual((root / "canonical" / "onnx.mlir").read_bytes(), payload)
first_manifest = (root / "canonical" / "manifest.json").read_bytes()
second = self.run_cli(root, "publish")
self.assertEqual(second.returncode, 0, second.stderr)
self.assertIn('"copied_count": 0', second.stdout)
self.assertEqual((root / "canonical" / "manifest.json").read_bytes(), first_manifest)
verified = self.run_cli(root, "verify", "--report", "canonical/verification.json")
self.assertEqual(verified.returncode, 0, verified.stderr)
report = json.loads((root / "canonical" / "verification.json").read_text(encoding="utf-8"))
self.assertEqual(report["status"], "PASS")
self.assertTrue(report["checksum_match"])
(root / "canonical" / "onnx.mlir").write_bytes(b"tampered")
refused = self.run_cli(root, "publish")
self.assertEqual(refused.returncode, 1)
self.assertIn("refusing to overwrite different destination", refused.stderr)
failed_verify = self.run_cli(root, "verify", "--report", "canonical/verification.json")
self.assertEqual(failed_verify.returncode, 1)
if __name__ == "__main__":
unittest.main()