forked from archive/andrewferrier_email2pdf
Add --mostly-hide-warnings flag.
This commit is contained in:
parent
65f5922e41
commit
1255299b7f
4 changed files with 64 additions and 6 deletions
25
email2pdf
25
email2pdf
|
@ -71,8 +71,10 @@ def main(argv, syslog_handler, syserr_handler):
|
|||
syserr_handler.setLevel(logging.DEBUG)
|
||||
elif args.verbose == 1:
|
||||
syserr_handler.setLevel(logging.INFO)
|
||||
else:
|
||||
elif args.mostly_hide_warnings == False:
|
||||
syserr_handler.setLevel(logging.WARNING)
|
||||
else:
|
||||
syserr_handler.setLevel(logging.ERROR)
|
||||
|
||||
logger.info("Options used are: " + str(args))
|
||||
|
||||
|
@ -132,6 +134,8 @@ def main(argv, syslog_handler, syserr_handler):
|
|||
with open(get_modified_output_file_name(output_file_name, "_original.eml"), 'w') as f:
|
||||
f.write(input_data)
|
||||
|
||||
return args.mostly_hide_warnings
|
||||
|
||||
|
||||
def handle_args(argv):
|
||||
class ArgumentParser(argparse.ArgumentParser):
|
||||
|
@ -194,7 +198,18 @@ def handle_args(argv):
|
|||
"if not. If this option is specified, email2pdf will exit with an error if the syslog socket "
|
||||
"can not be located.")
|
||||
|
||||
parser.add_argument('-v', '--verbose', action='count', default=0,
|
||||
verbose_options = parser.add_mutually_exclusive_group()
|
||||
|
||||
verbose_options.add_argument("--mostly-hide-warnings", action="store_true",
|
||||
help="By default email2pdf will output warnings about handling emails to stderr and "
|
||||
"exit with a non-zero return code if any are encountered, *as well as* outputting a "
|
||||
"summary file entitled <output_PDF_name>_warnings_and_errors.txt and the original "
|
||||
"email as <output_PDF_name>_original.eml. Specifying this option disables the first "
|
||||
"two, so only the additional files are produced - this makes it easier to use email2pdf "
|
||||
"if it is run on a schedule, as warnings won't cause the same email to be repeatedly "
|
||||
"retried.")
|
||||
|
||||
verbose_options.add_argument('-v', '--verbose', action='count', default=0,
|
||||
help="Make the output more verbose. This affects both the output logged to "
|
||||
"syslog, as well as output to the console. Using this twice makes it doubly verbose.")
|
||||
|
||||
|
@ -602,7 +617,7 @@ def call_main(argv, syslog_handler, syserr_handler):
|
|||
logger = logging.getLogger("email2pdf")
|
||||
|
||||
try:
|
||||
main(argv, syslog_handler, syserr_handler)
|
||||
return main(argv, syslog_handler, syserr_handler)
|
||||
except FatalException as exception:
|
||||
logger.error(exception.value)
|
||||
sys.exit(2)
|
||||
|
@ -639,7 +654,7 @@ if __name__ == "__main__":
|
|||
else:
|
||||
syslog_handler_setup = None
|
||||
|
||||
call_main(sys.argv, syslog_handler_setup, syserr_handler_setup)
|
||||
mostly_hide_warnings = call_main(sys.argv, syslog_handler_setup, syserr_handler_setup)
|
||||
|
||||
if warning_pending:
|
||||
if warning_pending and not mostly_hide_warnings:
|
||||
sys.exit(1)
|
||||
|
|
|
@ -10,4 +10,4 @@ delete = true
|
|||
[destination]
|
||||
type = MDA_external
|
||||
path = /where/I/installed/email2pdf
|
||||
arguments = ("-d", "/where/I/want/PDFs/to/go", "--enforce-syslog")
|
||||
arguments = ("-d", "/where/I/want/PDFs/to/go", "--enforce-syslog", "--mostly-hide-warnings")
|
||||
|
|
|
@ -20,6 +20,15 @@ class Direct_Arguments(BaseTestClasses.Email2PDFTestCase):
|
|||
self.assertRegex(self.getWarningFileContents(), "body.*any.*attachments")
|
||||
self.assertValidOriginalFileContents()
|
||||
|
||||
def test_no_body_mostly_hide_warnings(self):
|
||||
error = self.invokeDirectly(extraParams=['--no-body', '--mostly-hide-warnings'])
|
||||
self.assertFalse(self.existsByTime())
|
||||
self.assertEqual("", error)
|
||||
self.assertTrue(self.existsByTimeWarning())
|
||||
self.assertTrue(self.existsByTimeOriginal())
|
||||
self.assertRegex(self.getWarningFileContents(), "body.*any.*attachments")
|
||||
self.assertValidOriginalFileContents()
|
||||
|
||||
def test_no_attachments(self):
|
||||
self.addHeaders()
|
||||
self.attachText("Some basic textual content")
|
||||
|
@ -36,6 +45,22 @@ class Direct_Arguments(BaseTestClasses.Email2PDFTestCase):
|
|||
self.assertFalse(self.existsByTimeWarning())
|
||||
self.assertFalse(self.existsByTimeOriginal())
|
||||
|
||||
def test_no_attachments_mostly_hide_warnings(self):
|
||||
self.addHeaders()
|
||||
self.attachText("Some basic textual content")
|
||||
filename = self.attachPDF("Some PDF content", mainContentType="application", subContentType="octet-stream")
|
||||
filename2 = self.attachPDF("Some PDF content")
|
||||
filename3 = self.attachImage()
|
||||
error = self.invokeDirectly(extraParams=['--no-attachments', '--mostly-hide-warnings'])
|
||||
self.assertEqual('', error)
|
||||
self.assertTrue(self.existsByTime())
|
||||
self.assertFalse(os.path.exists(os.path.join(self.workingDir, filename)))
|
||||
self.assertFalse(os.path.exists(os.path.join(self.workingDir, filename2)))
|
||||
self.assertFalse(os.path.exists(os.path.join(self.workingDir, filename3)))
|
||||
self.assertRegex(self.getPDFText(self.getTimedFilename()), "Some basic textual content")
|
||||
self.assertFalse(self.existsByTimeWarning())
|
||||
self.assertFalse(self.existsByTimeOriginal())
|
||||
|
||||
def test_no_body_and_no_attachments(self):
|
||||
self.addHeaders()
|
||||
self.attachText("Some basic textual content")
|
||||
|
|
|
@ -45,6 +45,16 @@ class TestBasic(Email2PDFTestCase):
|
|||
self.assertTrue(self.existsByTimeOriginal())
|
||||
self.assertValidOriginalFileContents()
|
||||
|
||||
def test_dont_print_body_mostly_hide_warnings(self):
|
||||
(rc, output, error) = self.invokeAsSubprocess(extraParams=['--no-body', '--mostly-hide-warnings'])
|
||||
self.assertEqual(0, rc)
|
||||
self.assertFalse(self.existsByTime())
|
||||
self.assertEqual('', error)
|
||||
self.assertTrue(self.existsByTimeWarning())
|
||||
self.assertRegex(self.getWarningFileContents(), "body.*any.*attachments")
|
||||
self.assertTrue(self.existsByTimeOriginal())
|
||||
self.assertValidOriginalFileContents()
|
||||
|
||||
def test_no_message_headers(self):
|
||||
(rc, output, error) = self.invokeAsSubprocess()
|
||||
self.assertEqual(0, rc)
|
||||
|
@ -53,6 +63,14 @@ class TestBasic(Email2PDFTestCase):
|
|||
self.assertFalse(self.existsByTimeWarning())
|
||||
self.assertFalse(self.existsByTimeOriginal())
|
||||
|
||||
def test_no_message_headers(self):
|
||||
(rc, output, error) = self.invokeAsSubprocess(extraParams=['--mostly-hide-warnings'])
|
||||
self.assertEqual(0, rc)
|
||||
self.assertTrue(self.existsByTime())
|
||||
self.assertEqual('', error)
|
||||
self.assertFalse(self.existsByTimeWarning())
|
||||
self.assertFalse(self.existsByTimeOriginal())
|
||||
|
||||
def test_withinputfile(self):
|
||||
self.addHeaders()
|
||||
(rc, output, error) = self.invokeAsSubprocess(inputFile=True)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue