Improve the previous commit
This commit is contained in:
parent
1d7e374e5b
commit
46bb1b83ea
@ -84,6 +84,11 @@ class ArchiveBasedAbstractParser(abstract.AbstractParser):
|
||||
|
||||
def remove_all(self) -> bool:
|
||||
# pylint: disable=too-many-branches
|
||||
|
||||
if self.unknown_member_policy not in ['omit', 'keep', 'abort']:
|
||||
logging.error("The policy %s is invalid.", self.unknown_member_policy)
|
||||
raise ValueError
|
||||
|
||||
with zipfile.ZipFile(self.filename) as zin,\
|
||||
zipfile.ZipFile(self.output_filename, 'w') as zout:
|
||||
|
||||
@ -120,9 +125,6 @@ class ArchiveBasedAbstractParser(abstract.AbstractParser):
|
||||
logging.warning("In file %s, keeping unknown element %s (format: %s)",
|
||||
self.filename, item.filename, mtype)
|
||||
else:
|
||||
if self.unknown_member_policy != 'abort':
|
||||
logging.warning("Invalid unknown_member_policy %s, " +
|
||||
"treating as 'abort'", self.unknown_member_policy)
|
||||
logging.error("In file %s, element %s's format (%s) " +
|
||||
"isn't supported",
|
||||
self.filename, item.filename, mtype)
|
||||
|
4
mat2
4
mat2
@ -41,9 +41,9 @@ def create_arg_parser():
|
||||
help='check if MAT2 has all the dependencies it needs')
|
||||
parser.add_argument('-V', '--verbose', action='store_true',
|
||||
help='show more verbose status information')
|
||||
parser.add_argument('-u', '--unknown-members', metavar='POLICY', default='abort',
|
||||
parser.add_argument('-u', '--unknown-members', metavar='policy', default='abort',
|
||||
help='how to handle unknown members of archive-style files ' +
|
||||
'(POLICY should be abort, omit, or keep)')
|
||||
'(policy should be abort, omit, or keep)')
|
||||
|
||||
|
||||
info = parser.add_mutually_exclusive_group()
|
||||
|
@ -8,13 +8,13 @@ class TestHelp(unittest.TestCase):
|
||||
def test_help(self):
|
||||
proc = subprocess.Popen(['./mat2', '--help'], stdout=subprocess.PIPE)
|
||||
stdout, _ = proc.communicate()
|
||||
self.assertIn(b'usage: mat2 [-h] [-v] [-l] [-c] [-V] [-u POLICY] [-s | -L] [files [files ...]]',
|
||||
self.assertIn(b'usage: mat2 [-h] [-v] [-l] [-c] [-V] [-u policy] [-s | -L] [files [files ...]]',
|
||||
stdout)
|
||||
|
||||
def test_no_arg(self):
|
||||
proc = subprocess.Popen(['./mat2'], stdout=subprocess.PIPE)
|
||||
stdout, _ = proc.communicate()
|
||||
self.assertIn(b'usage: mat2 [-h] [-v] [-l] [-c] [-V] [-u POLICY] [-s | -L] [files [files ...]]',
|
||||
self.assertIn(b'usage: mat2 [-h] [-v] [-l] [-c] [-V] [-u policy] [-s | -L] [files [files ...]]',
|
||||
stdout)
|
||||
|
||||
|
||||
|
31
tests/test_policy.py
Normal file
31
tests/test_policy.py
Normal file
@ -0,0 +1,31 @@
|
||||
#!/usr/bin/python3
|
||||
|
||||
import unittest
|
||||
import shutil
|
||||
import os
|
||||
|
||||
from libmat2 import office
|
||||
|
||||
class TestPolicy(unittest.TestCase):
|
||||
def test_policy_omit(self):
|
||||
shutil.copy('./tests/data/embedded.docx', './tests/data/clean.docx')
|
||||
p = office.MSOfficeParser('./tests/data/clean.docx')
|
||||
p.unknown_member_policy = 'omit'
|
||||
self.assertTrue(p.remove_all())
|
||||
os.remove('./tests/data/clean.docx')
|
||||
|
||||
def test_policy_keep(self):
|
||||
shutil.copy('./tests/data/embedded.docx', './tests/data/clean.docx')
|
||||
p = office.MSOfficeParser('./tests/data/clean.docx')
|
||||
p.unknown_member_policy = 'keep'
|
||||
self.assertTrue(p.remove_all())
|
||||
os.remove('./tests/data/clean.docx')
|
||||
|
||||
def test_policy_unknown(self):
|
||||
shutil.copy('./tests/data/embedded.docx', './tests/data/clean.docx')
|
||||
p = office.MSOfficeParser('./tests/data/clean.docx')
|
||||
p.unknown_member_policy = 'unknown_policy_name_totally_invalid'
|
||||
with self.assertRaises(ValueError):
|
||||
p.remove_all()
|
||||
os.remove('./tests/data/clean.docx')
|
||||
|
Loading…
Reference in New Issue
Block a user