diff options
| author | Denis 'GNUtoo' Carikli | 2021-12-06 17:45:47 +0100 |
|---|---|---|
| committer | Denis 'GNUtoo' Carikli | 2021-12-08 18:36:39 +0100 |
| commit | 1703ed6ebbe2552990fb847d5fd5dde1d0382a37 (patch) | |
| tree | f04f456ff95aa4247c6144c69a6b1352b0064c16 /tests/test_libmat2.py | |
| parent | 541b3c83b2da3be57ebcf562a9a84c059de586fa (diff) | |
zip archives: keep individual files compression type
While hardcoding the compression to zipfile.ZIP_DEFLATED works for
most use cases of mat, being able to produce cleaned up uncompressed
zip files is useful for content that cannot be compressed more.
In addition it also enables to use mat2 for reproducible builds of
Android bootanimation files file that don't support compression.
Signed-off-by: Denis 'GNUtoo' Carikli <GNUtoo@cyberdimension.org>
Diffstat (limited to '')
| -rw-r--r-- | tests/test_libmat2.py | 43 |
1 files changed, 37 insertions, 6 deletions
diff --git a/tests/test_libmat2.py b/tests/test_libmat2.py index af92db3..f8e62de 100644 --- a/tests/test_libmat2.py +++ b/tests/test_libmat2.py | |||
| @@ -175,14 +175,30 @@ class TestGetMeta(unittest.TestCase): | |||
| 175 | 175 | ||
| 176 | def test_zip(self): | 176 | def test_zip(self): |
| 177 | with zipfile.ZipFile('./tests/data/dirty.zip', 'w') as zout: | 177 | with zipfile.ZipFile('./tests/data/dirty.zip', 'w') as zout: |
| 178 | zout.write('./tests/data/dirty.flac') | 178 | zout.write('./tests/data/dirty.flac', |
| 179 | zout.write('./tests/data/dirty.docx') | 179 | compress_type = zipfile.ZIP_STORED) |
| 180 | zout.write('./tests/data/dirty.jpg') | 180 | zout.write('./tests/data/dirty.docx', |
| 181 | compress_type = zipfile.ZIP_DEFLATED) | ||
| 182 | zout.write('./tests/data/dirty.jpg', | ||
| 183 | compress_type = zipfile.ZIP_BZIP2) | ||
| 184 | zout.write('./tests/data/dirty.txt', | ||
| 185 | compress_type = zipfile.ZIP_LZMA) | ||
| 181 | p, mimetype = parser_factory.get_parser('./tests/data/dirty.zip') | 186 | p, mimetype = parser_factory.get_parser('./tests/data/dirty.zip') |
| 182 | self.assertEqual(mimetype, 'application/zip') | 187 | self.assertEqual(mimetype, 'application/zip') |
| 183 | meta = p.get_meta() | 188 | meta = p.get_meta() |
| 184 | self.assertEqual(meta['tests/data/dirty.flac']['comments'], 'Thank you for using MAT !') | 189 | self.assertEqual(meta['tests/data/dirty.flac']['comments'], 'Thank you for using MAT !') |
| 185 | self.assertEqual(meta['tests/data/dirty.docx']['word/media/image1.png']['Comment'], 'This is a comment, be careful!') | 190 | self.assertEqual(meta['tests/data/dirty.docx']['word/media/image1.png']['Comment'], 'This is a comment, be careful!') |
| 191 | |||
| 192 | with zipfile.ZipFile('./tests/data/dirty.zip') as zipin: | ||
| 193 | members = { | ||
| 194 | 'tests/data/dirty.flac' : zipfile.ZIP_STORED, | ||
| 195 | 'tests/data/dirty.docx': zipfile.ZIP_DEFLATED, | ||
| 196 | 'tests/data/dirty.jpg' : zipfile.ZIP_BZIP2, | ||
| 197 | 'tests/data/dirty.txt' : zipfile.ZIP_LZMA, | ||
| 198 | } | ||
| 199 | for k, v in members.items(): | ||
| 200 | self.assertEqual(zipin.getinfo(k).compress_type, v) | ||
| 201 | |||
| 186 | os.remove('./tests/data/dirty.zip') | 202 | os.remove('./tests/data/dirty.zip') |
| 187 | 203 | ||
| 188 | def test_wmv(self): | 204 | def test_wmv(self): |
| @@ -595,9 +611,14 @@ class TestCleaning(unittest.TestCase): | |||
| 595 | class TestCleaningArchives(unittest.TestCase): | 611 | class TestCleaningArchives(unittest.TestCase): |
| 596 | def test_zip(self): | 612 | def test_zip(self): |
| 597 | with zipfile.ZipFile('./tests/data/dirty.zip', 'w') as zout: | 613 | with zipfile.ZipFile('./tests/data/dirty.zip', 'w') as zout: |
| 598 | zout.write('./tests/data/dirty.flac') | 614 | zout.write('./tests/data/dirty.flac', |
| 599 | zout.write('./tests/data/dirty.docx') | 615 | compress_type = zipfile.ZIP_STORED) |
| 600 | zout.write('./tests/data/dirty.jpg') | 616 | zout.write('./tests/data/dirty.docx', |
| 617 | compress_type = zipfile.ZIP_DEFLATED) | ||
| 618 | zout.write('./tests/data/dirty.jpg', | ||
| 619 | compress_type = zipfile.ZIP_BZIP2) | ||
| 620 | zout.write('./tests/data/dirty.txt', | ||
| 621 | compress_type = zipfile.ZIP_LZMA) | ||
| 601 | p = archive.ZipParser('./tests/data/dirty.zip') | 622 | p = archive.ZipParser('./tests/data/dirty.zip') |
| 602 | meta = p.get_meta() | 623 | meta = p.get_meta() |
| 603 | self.assertEqual(meta['tests/data/dirty.docx']['word/media/image1.png']['Comment'], 'This is a comment, be careful!') | 624 | self.assertEqual(meta['tests/data/dirty.docx']['word/media/image1.png']['Comment'], 'This is a comment, be careful!') |
| @@ -609,6 +630,16 @@ class TestCleaningArchives(unittest.TestCase): | |||
| 609 | self.assertEqual(p.get_meta(), {}) | 630 | self.assertEqual(p.get_meta(), {}) |
| 610 | self.assertTrue(p.remove_all()) | 631 | self.assertTrue(p.remove_all()) |
| 611 | 632 | ||
| 633 | with zipfile.ZipFile('./tests/data/dirty.zip') as zipin: | ||
| 634 | members = { | ||
| 635 | 'tests/data/dirty.flac' : zipfile.ZIP_STORED, | ||
| 636 | 'tests/data/dirty.docx': zipfile.ZIP_DEFLATED, | ||
| 637 | 'tests/data/dirty.jpg' : zipfile.ZIP_BZIP2, | ||
| 638 | 'tests/data/dirty.txt' : zipfile.ZIP_LZMA, | ||
| 639 | } | ||
| 640 | for k, v in members.items(): | ||
| 641 | self.assertEqual(zipin.getinfo(k).compress_type, v) | ||
| 642 | |||
| 612 | os.remove('./tests/data/dirty.zip') | 643 | os.remove('./tests/data/dirty.zip') |
| 613 | os.remove('./tests/data/dirty.cleaned.zip') | 644 | os.remove('./tests/data/dirty.cleaned.zip') |
| 614 | os.remove('./tests/data/dirty.cleaned.cleaned.zip') | 645 | os.remove('./tests/data/dirty.cleaned.cleaned.zip') |
