Skip to content
Snippets Groups Projects
test_lightweight_cleaning.py 2.45 KiB
Newer Older
  • Learn to ignore specific revisions
  • Julien (jvoisin) Voisin's avatar
    Julien (jvoisin) Voisin committed
    #!/usr/bin/env python3
    
    import unittest
    import shutil
    import os
    
    from libmat2 import pdf, images, torrent
    
    
    class TestLightWeightCleaning(unittest.TestCase):
        data = [{
                'name': 'pdf',
                'parser': pdf.PDFParser,
                'meta': {'producer': 'pdfTeX-1.40.14'},
                'expected_meta': {'creation-date': -1, 'format': 'PDF-1.5', 'mod-date': -1},
                }, {
                    'name': 'png',
                    'parser': images.PNGParser,
                    'meta': {'Comment': 'This is a comment, be careful!'},
                    'expected_meta': {},
                }, {
                    'name': 'jpg',
                    'parser': images.JPGParser,
                    'meta': {'Comment': 'Created with GIMP'},
                    'expected_meta': {},
                }, {
                    'name': 'torrent',
                    'parser': torrent.TorrentParser,
                    'meta': {'created by': b'mktorrent 1.0'},
                    'expected_meta': {},
                },{
                    'name': 'tiff',
                    'parser': images.TiffParser,
                    'meta': {'ImageDescription': 'OLYMPUS DIGITAL CAMERA         '},
                    'expected_meta': {
                        'Orientation': 'Horizontal (normal)',
                        'ResolutionUnit': 'inches',
                        'XResolution': 72,
                        'YResolution': 72
                        }
                },
            ]
    
        def test_all(self):
            for case in self.data:
                target = './tests/data/clean.' + case['name']
                shutil.copy('./tests/data/dirty.' + case['name'], target)
                p1 = case['parser'](target)
    
                meta = p1.get_meta()
                for k, v in case['meta'].items():
                    self.assertEqual(meta[k], v)
    
                p1.lightweight_cleaning = True
                self.assertTrue(p1.remove_all())
    
                p2 = case['parser'](p1.output_filename)
                self.assertEqual(p2.get_meta(), case['expected_meta'])
    
                os.remove(target)
                os.remove(p1.output_filename)
    
        def test_exiftool_overwrite(self):
            target = './tests/data/clean.png'
            shutil.copy('./tests/data/dirty.png', target)
    
            p1 = images.PNGParser(target)
            p1.lightweight_cleaning = True
            shutil.copy('./tests/data/dirty.png', p1.output_filename)
            self.assertTrue(p1.remove_all())
    
            p2 = images.PNGParser(p1.output_filename)
            self.assertEqual(p2.get_meta(), {})
    
            os.remove(target)
            os.remove(p1.output_filename)