From 0fa184cb6fbe05ebbec9054b493e80b9a5e91683 Mon Sep 17 00:00:00 2001 From: jvoisin <julien.voisin@dustri.org> Date: Mon, 23 Apr 2018 00:24:39 +0200 Subject: [PATCH] Test .odf support --- src/office.py | 3 ++- tests/data/dirty.odf | Bin 0 -> 4861 bytes tests/test_libmat2.py | 16 +++++++++++++++- 3 files changed, 17 insertions(+), 2 deletions(-) create mode 100644 tests/data/dirty.odf diff --git a/src/office.py b/src/office.py index 11692c3..5509c6e 100644 --- a/src/office.py +++ b/src/office.py @@ -107,7 +107,8 @@ class LibreOfficeParser(ArchiveBasedAbstractParser): 'application/vnd.oasis.opendocument.spreadsheet', 'application/vnd.oasis.opendocument.presentation', 'application/vnd.oasis.opendocument.graphics', - 'application/vnd.oasis.opendocument.chart' + 'application/vnd.oasis.opendocument.chart', + 'application/vnd.oasis.opendocument.formula', } def get_meta(self): diff --git a/tests/data/dirty.odf b/tests/data/dirty.odf new file mode 100644 index 0000000000000000000000000000000000000000..49da2bc22aba0bec45f4658cfa3c8a5679ecdd1a GIT binary patch literal 4861 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 X7vRmx22#e)z|ZiRnStR8ABYD4Me3W< literal 0 HcmV?d00001 diff --git a/tests/test_libmat2.py b/tests/test_libmat2.py index ff5c196..6efaf31 100644 --- a/tests/test_libmat2.py +++ b/tests/test_libmat2.py @@ -328,7 +328,6 @@ class TestCleaning(unittest.TestCase): os.remove('./tests/data/clean.bmp') - def test_torrent(self): shutil.copy('./tests/data/dirty.torrent', './tests/data/clean.torrent') p = torrent.TorrentParser('./tests/data/clean.torrent') @@ -343,3 +342,18 @@ class TestCleaning(unittest.TestCase): self.assertEqual(p.get_meta(), {}) os.remove('./tests/data/clean.torrent') + + def test_odf(self): + shutil.copy('./tests/data/dirty.odf', './tests/data/clean.odf') + p = office.LibreOfficeParser('./tests/data/clean.odf') + + meta = p.get_meta() + self.assertEqual(meta['meta:creation-date'], '2018-04-23T00:18:59.438231281') + + ret = p.remove_all() + self.assertTrue(ret) + + p = office.LibreOfficeParser('./tests/data/clean.odf.cleaned') + self.assertEqual(p.get_meta(), {}) + + os.remove('./tests/data/clean.odf') -- GitLab