From 60bd5362c119e9ce0db36b9f955e1f4dac0284d1 Mon Sep 17 00:00:00 2001 From: Dan Puttick Date: Tue, 25 Jul 2017 11:51:23 -0400 Subject: [PATCH] Add normal word doc to file_catalog --- bin/filecheck.py | 8 ++++---- tests/file_catalog.yaml | 3 +++ tests/normal/word_docx.docx | Bin 0 -> 27992 bytes 3 files changed, 7 insertions(+), 4 deletions(-) create mode 100644 tests/normal/word_docx.docx diff --git a/bin/filecheck.py b/bin/filecheck.py index c33339b..66c5e38 100644 --- a/bin/filecheck.py +++ b/bin/filecheck.py @@ -238,7 +238,6 @@ class File(FileBase): """ if self.maintype in Config.ignored_mimes: self.should_copy = False - self.mime_processing_options.get(self.maintype, self.unknown)() else: self._check_dangerous() self._check_filename() @@ -246,8 +245,9 @@ class File(FileBase): self._check_extension() if self.has_mimetype: self._check_mimetype() - if not self.is_dangerous: - self.mime_processing_options.get(self.maintype, self.unknown)() + + if not self.is_dangerous: + self.mime_processing_options.get(self.maintype, self.unknown)() def write_log(self): """Pass information about the file to self.logger""" @@ -255,7 +255,7 @@ class File(FileBase): props = self.get_all_props() if not self.is_archive: if os.path.exists(self.tempdir_path): - # FIXME: in_tempdir is a hack to make images appear at the correct tree depth in log + # FIXME: in_tempdir is a hack to make image files appear at the correct tree depth in log self.logger.add_file(self.src_path, props, in_tempdir=True) return self.logger.add_file(self.src_path, props) diff --git a/tests/file_catalog.yaml b/tests/file_catalog.yaml index 8d8a496..71a0903 100644 --- a/tests/file_catalog.yaml +++ b/tests/file_catalog.yaml @@ -27,6 +27,9 @@ normal: mimetype: text/rtf sample_mpeg4.mp4: # Added 28-06-2017, source: https://support.apple.com/en-us/HT201549 mimetype: video/mp4 + word_docx.docx: # Added 24-07-2017, source: hand-generated using MacOS Microsoft Word 2011 + description: normal word document + # mimetype: zip_archive.zip: # Added 27-06-2017, source: hand-generated mimetype: application/zip diff --git a/tests/normal/word_docx.docx b/tests/normal/word_docx.docx new file mode 100644 index 0000000000000000000000000000000000000000..b28b11b25804e2f8d2fb14190a52e08065a7fe30 GIT binary patch literal 27992 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 efRN=C+5d>_s)~r