Reject stale native runtime build provenance before release staging
This commit is contained in:
1 parent
ea2c3f4691
commit
07bbcb76e8
12 files changed
+204
-9
No files matched your search
@@ -9,6 +9,7 @@ import unittest
|
||||
from unittest import mock
|
||||
|
||||
import package_linux as pack
|
||||
from embeddinggemma2 import runtime_provenance as provenance
|
||||
|
||||
|
||||
def elf(path, machine=62):
|
||||
@@ -22,6 +23,10 @@ def elf(path, machine=62):
|
||||
class LinuxPackageTests(unittest.TestCase):
|
||||
def fixture(self, directory):
|
||||
root = Path(directory)
|
||||
for name in provenance.INPUTS:
|
||||
path = root / name
|
||||
path.parent.mkdir(parents=True, exist_ok=True)
|
||||
path.write_bytes((provenance.ROOT / name).read_bytes())
|
||||
runtime, media = root / "runtime", root / "media"
|
||||
executable = root / "build/searchi"
|
||||
elf(executable)
|
||||
@@ -35,7 +40,7 @@ class LinuxPackageTests(unittest.TestCase):
|
||||
for name in names:
|
||||
elf(runtime / name)
|
||||
records.append({"path": name, "bytes": 64, "sha256": pack.digest(runtime / name)})
|
||||
(runtime / "runtime-libraries.json").write_text(json.dumps({"platform": "linux", "worker_sha256": pack.digest(runtime / "searchi-gemma-worker"), "libraries": records}))
|
||||
(runtime / "runtime-libraries.json").write_text(json.dumps({"platform": "linux", "worker_sha256": pack.digest(runtime / "searchi-gemma-worker"), "build_provenance": provenance.fingerprint(root), "libraries": records}))
|
||||
media.mkdir()
|
||||
elf(media / "bin/ffmpeg")
|
||||
elf(media / "bin/ffprobe")
|
||||
@@ -115,6 +120,22 @@ class LinuxPackageTests(unittest.TestCase):
|
||||
compressed = {m.name: (archive.extractfile(m).read(), m.mode) for m in archive}
|
||||
self.assertEqual(original, compressed)
|
||||
|
||||
def test_old_or_stale_build_provenance_preserves_previous_archive(self):
|
||||
for mutation in ("missing", "source_changed"):
|
||||
with self.subTest(mutation=mutation), tempfile.TemporaryDirectory() as directory:
|
||||
fixture = self.fixture(directory)
|
||||
fixture[-1].write_bytes(b"previous archive")
|
||||
if mutation == "missing":
|
||||
inventory = fixture[2] / "runtime-libraries.json"
|
||||
manifest = json.loads(inventory.read_text())
|
||||
del manifest["build_provenance"]
|
||||
inventory.write_text(json.dumps(manifest))
|
||||
else:
|
||||
(fixture[0] / provenance.INPUTS[0]).write_bytes(b"changed worker source")
|
||||
with self.assertRaisesRegex(ValueError, "provenance"):
|
||||
self.run_package(fixture)
|
||||
self.assertEqual(fixture[-1].read_bytes(), b"previous archive")
|
||||
|
||||
def test_media_helper_tamper_is_rejected_against_pinned_archive(self):
|
||||
with tempfile.TemporaryDirectory() as directory:
|
||||
fixture = self.fixture(directory)
|
||||
|
||||
Reference in new issue
Block a user