summaryrefslogtreecommitdiff
path: root/tests/test_libmat2.py
diff options
context:
space:
mode:
authorjvoisin2019-04-27 06:03:09 -0700
committerjvoisin2019-04-27 06:03:09 -0700
commit8e41b098d6a8eb8da5687824a59c3af07b18725b (patch)
tree0b2e74eaa9d4c77cb3d93965897978c995f4c3b5 /tests/test_libmat2.py
parent82cc822a1dc7090f7a6af977ed6d4b7b945d038a (diff)
Add support for compressed tar files
Diffstat (limited to '')
-rw-r--r--tests/test_libmat2.py115
1 files changed, 114 insertions, 1 deletions
diff --git a/tests/test_libmat2.py b/tests/test_libmat2.py
index 1d2a22a..4f562e6 100644
--- a/tests/test_libmat2.py
+++ b/tests/test_libmat2.py
@@ -30,6 +30,14 @@ class TestParserFactory(unittest.TestCase):
30 self.assertEqual(mimetype, 'audio/mpeg') 30 self.assertEqual(mimetype, 'audio/mpeg')
31 self.assertEqual(parser.__class__, audio.MP3Parser) 31 self.assertEqual(parser.__class__, audio.MP3Parser)
32 32
33 def test_tarfile_double_extension_handling(self):
34 """ Test that our module auto-detection is handling sub-sub-classes """
35 with tarfile.TarFile.open('./tests/data/dirty.tar.bz2', 'w:bz2') as zout:
36 zout.add('./tests/data/dirty.jpg')
37 parser, mimetype = parser_factory.get_parser('./tests/data/dirty.tar.bz2')
38 self.assertEqual(mimetype, 'application/x-tar+bz2')
39 os.remove('./tests/data/dirty.tar.bz2')
40
33 41
34class TestParameterInjection(unittest.TestCase): 42class TestParameterInjection(unittest.TestCase):
35 def test_ver_injection(self): 43 def test_ver_injection(self):
@@ -719,7 +727,7 @@ class TestCleaning(unittest.TestCase):
719 os.remove('./tests/data/clean.cleaned.cleaned.css') 727 os.remove('./tests/data/clean.cleaned.cleaned.css')
720 728
721 def test_tar(self): 729 def test_tar(self):
722 with tarfile.TarFile('./tests/data/dirty.tar', 'w') as zout: 730 with tarfile.TarFile.open('./tests/data/dirty.tar', 'w') as zout:
723 zout.add('./tests/data/dirty.flac') 731 zout.add('./tests/data/dirty.flac')
724 zout.add('./tests/data/dirty.docx') 732 zout.add('./tests/data/dirty.docx')
725 zout.add('./tests/data/dirty.jpg') 733 zout.add('./tests/data/dirty.jpg')
@@ -752,3 +760,108 @@ class TestCleaning(unittest.TestCase):
752 os.remove('./tests/data/dirty.tar') 760 os.remove('./tests/data/dirty.tar')
753 os.remove('./tests/data/dirty.cleaned.tar') 761 os.remove('./tests/data/dirty.cleaned.tar')
754 os.remove('./tests/data/dirty.cleaned.cleaned.tar') 762 os.remove('./tests/data/dirty.cleaned.cleaned.tar')
763
764 def test_targz(self):
765 with tarfile.TarFile.open('./tests/data/dirty.tar.gz', 'w:gz') as zout:
766 zout.add('./tests/data/dirty.flac')
767 zout.add('./tests/data/dirty.docx')
768 zout.add('./tests/data/dirty.jpg')
769 p = archive.TarParser('./tests/data/dirty.tar.gz')
770 meta = p.get_meta()
771 self.assertEqual(meta['./tests/data/dirty.docx']['word/media/image1.png']['Comment'], 'This is a comment, be careful!')
772
773 ret = p.remove_all()
774 self.assertTrue(ret)
775
776 p = archive.TarParser('./tests/data/dirty.cleaned.tar.gz')
777 self.assertEqual(p.get_meta(), {})
778 self.assertTrue(p.remove_all())
779
780 tmp_dir = tempfile.mkdtemp()
781 with tarfile.open('./tests/data/dirty.cleaned.tar.gz') as zout:
782 zout.extractall(path=tmp_dir)
783 zout.close()
784
785 number_of_files = 0
786 for root, _, fnames in os.walk(tmp_dir):
787 for f in fnames:
788 complete_path = os.path.join(root, f)
789 p, _ = parser_factory.get_parser(complete_path)
790 self.assertIsNotNone(p)
791 self.assertEqual(p.get_meta(), {})
792 number_of_files += 1
793 self.assertEqual(number_of_files, 3)
794
795 os.remove('./tests/data/dirty.tar.gz')
796 os.remove('./tests/data/dirty.cleaned.tar.gz')
797 os.remove('./tests/data/dirty.cleaned.cleaned.tar.gz')
798
799 def test_tarbz2(self):
800 with tarfile.TarFile.open('./tests/data/dirty.tar.bz2', 'w:bz2') as zout:
801 zout.add('./tests/data/dirty.flac')
802 zout.add('./tests/data/dirty.docx')
803 zout.add('./tests/data/dirty.jpg')
804 p = archive.TarParser('./tests/data/dirty.tar.bz2')
805 meta = p.get_meta()
806 self.assertEqual(meta['./tests/data/dirty.docx']['word/media/image1.png']['Comment'], 'This is a comment, be careful!')
807
808 ret = p.remove_all()
809 self.assertTrue(ret)
810
811 p = archive.TarParser('./tests/data/dirty.cleaned.tar.bz2')
812 self.assertEqual(p.get_meta(), {})
813 self.assertTrue(p.remove_all())
814
815 tmp_dir = tempfile.mkdtemp()
816 with tarfile.open('./tests/data/dirty.cleaned.tar.bz2') as zout:
817 zout.extractall(path=tmp_dir)
818 zout.close()
819
820 number_of_files = 0
821 for root, _, fnames in os.walk(tmp_dir):
822 for f in fnames:
823 complete_path = os.path.join(root, f)
824 p, _ = parser_factory.get_parser(complete_path)
825 self.assertIsNotNone(p)
826 self.assertEqual(p.get_meta(), {})
827 number_of_files += 1
828 self.assertEqual(number_of_files, 3)
829
830 os.remove('./tests/data/dirty.tar.bz2')
831 os.remove('./tests/data/dirty.cleaned.tar.bz2')
832 os.remove('./tests/data/dirty.cleaned.cleaned.tar.bz2')
833
834 def test_tarxz(self):
835 with tarfile.TarFile.open('./tests/data/dirty.tar.xz', 'w:xz') as zout:
836 zout.add('./tests/data/dirty.flac')
837 zout.add('./tests/data/dirty.docx')
838 zout.add('./tests/data/dirty.jpg')
839 p = archive.TarParser('./tests/data/dirty.tar.xz')
840 meta = p.get_meta()
841 self.assertEqual(meta['./tests/data/dirty.docx']['word/media/image1.png']['Comment'], 'This is a comment, be careful!')
842
843 ret = p.remove_all()
844 self.assertTrue(ret)
845
846 p = archive.TarParser('./tests/data/dirty.cleaned.tar.xz')
847 self.assertEqual(p.get_meta(), {})
848 self.assertTrue(p.remove_all())
849
850 tmp_dir = tempfile.mkdtemp()
851 with tarfile.open('./tests/data/dirty.cleaned.tar.xz') as zout:
852 zout.extractall(path=tmp_dir)
853 zout.close()
854
855 number_of_files = 0
856 for root, _, fnames in os.walk(tmp_dir):
857 for f in fnames:
858 complete_path = os.path.join(root, f)
859 p, _ = parser_factory.get_parser(complete_path)
860 self.assertIsNotNone(p)
861 self.assertEqual(p.get_meta(), {})
862 number_of_files += 1
863 self.assertEqual(number_of_files, 3)
864
865 os.remove('./tests/data/dirty.tar.xz')
866 os.remove('./tests/data/dirty.cleaned.tar.xz')
867 os.remove('./tests/data/dirty.cleaned.cleaned.tar.xz')