File: test_lightweight_cleaning.py

package info (click to toggle)
mat2 0.14.0-2
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 12,428 kB
  • sloc: python: 3,758; makefile: 7
file content (80 lines) | stat: -rw-r--r-- 2,653 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
#!/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': 'webp',
                'parser': images.WEBPParser,
                'meta': {'Warning': '[minor] Improper EXIF header'},
                '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': {
                    '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)