Support reproducible XZ Linux archives without changing runtime contents

This commit is contained in:
karl committed 2026-10-13 12:31:17 +02:00
1 parent 193ab08f62
commit a8080f061f
4 files changed
+33 -5

No files matched your search

+16
View File
@@ -99,6 +99,22 @@ class LinuxPackageTests(unittest.TestCase):
self.run_package(fixture)
self.assertEqual(previous, fixture[-1].read_bytes())
def test_xz_preserves_members_checksums_modes_and_reproducibility(self):
with tempfile.TemporaryDirectory() as directory:
fixture = self.fixture(directory)
self.run_package(fixture)
with tarfile.open(fixture[-1]) as archive:
original = {m.name: (archive.extractfile(m).read(), m.mode) for m in archive}
with mock.patch.object(pack, "dynamic", side_effect=self.metadata):
pack.package(*fixture, compression="xz")
first = fixture[-1].read_bytes()
pack.package(*fixture, compression="xz")
self.assertEqual(first, fixture[-1].read_bytes())
self.assertTrue(first.startswith(b"\xfd7zXZ\x00"))
with tarfile.open(fixture[-1]) as archive:
compressed = {m.name: (archive.extractfile(m).read(), m.mode) for m in archive}
self.assertEqual(original, compressed)
def test_media_helper_tamper_is_rejected_against_pinned_archive(self):
with tempfile.TemporaryDirectory() as directory:
fixture = self.fixture(directory)