summaryrefslogtreecommitdiff
path: root/tests/test_libmat2.py
diff options
context:
space:
mode:
authorDenis 'GNUtoo' Carikli2021-12-06 17:45:47 +0100
committerDenis 'GNUtoo' Carikli2021-12-08 18:36:39 +0100
commit1703ed6ebbe2552990fb847d5fd5dde1d0382a37 (patch)
treef04f456ff95aa4247c6144c69a6b1352b0064c16 /tests/test_libmat2.py
parent541b3c83b2da3be57ebcf562a9a84c059de586fa (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 'tests/test_libmat2.py')
-rw-r--r--tests/test_libmat2.py43
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):
595class TestCleaningArchives(unittest.TestCase): 611class 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')