diff options
| author | Michael Williamson <mike@zwobble.org> | 2018-01-23 21:43:30 +0000 |
|---|---|---|
| committer | Michael Williamson <mike@zwobble.org> | 2018-01-23 21:43:30 +0000 |
| commit | 93e07b02624f668aa9300c048cde05bb416dda35 (patch) | |
| tree | ea83907583ae87fde53955f9e61065b5d9fd3231 | |
| parent | 804dc4c1666c7f0c24528acf3cf3083a46492e4d (diff) | |
Raise error when main document part does not exist
| -rw-r--r-- | mammoth/docx/__init__.py | 2 | ||||
| -rw-r--r-- | tests/docx/docx_tests.py | 19 |
2 files changed, 19 insertions, 2 deletions
diff --git a/mammoth/docx/__init__.py b/mammoth/docx/__init__.py index 8ecf8c9..b155cff 100644 --- a/mammoth/docx/__init__.py +++ b/mammoth/docx/__init__.py @@ -77,7 +77,7 @@ def _find_document_filename(zip_file, relationships): ] + ["word/document.xml"] valid_targets = list(filter(lambda target: zip_file.exists(target), targets)) if len(valid_targets) == 0: - return None + raise IOError("Could not find main document part. Are you sure this is a valid .docx file?") else: return valid_targets[0] diff --git a/tests/docx/docx_tests.py b/tests/docx/docx_tests.py index 8bd5b36..d450424 100644 --- a/tests/docx/docx_tests.py +++ b/tests/docx/docx_tests.py @@ -5,7 +5,7 @@ import zipfile from nose.tools import istest, assert_equal from mammoth import docx, documents -from ..testing import test_path +from ..testing import assert_raises, test_path @istest @@ -62,6 +62,23 @@ def main_document_is_found_using_package_relationships(): assert_equal(expected_document, result.value) +@istest +def error_is_raised_when_main_document_part_does_not_exist(): + fileobj = _create_zip({ + "_rels/.rels": textwrap.dedent("""\ + <?xml version="1.0" encoding="utf-8"?> + <Relationships xmlns="http://schemas.openxmlformats.org/package/2006/relationships"> + <Relationship Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/officeDocument" Target="/word/document2.xml" Id="rId1"/> + </Relationships> + """), + }) + error = assert_raises(IOError, lambda: docx.read(fileobj=fileobj)) + assert_equal( + "Could not find main document part. Are you sure this is a valid .docx file?", + str(error), + ) + + def _create_zip(files): fileobj = io.BytesIO() |
