Support reproducible XZ Linux archives without changing runtime contents
This commit is contained in:
1 parent
193ab08f62
commit
a8080f061f
4 files changed
+33
-5
No files matched your search
@@ -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)
|
||||
|
||||
Reference in new issue
Block a user