Add warnings file.

This commit is contained in:
Andrew Ferrier 2015-08-17 16:40:04 +02:00
parent cccd4a49bf
commit 8e77df8948
11 changed files with 136 additions and 7 deletions

View file

@ -84,6 +84,14 @@ def main(argv, syslog_handler, syserr_handler):
output_file_name = get_output_file_name(args, output_directory) output_file_name = get_output_file_name(args, output_directory)
logger.info("Output file name is: " + output_file_name) logger.info("Output file name is: " + output_file_name)
(warning_logger_name, _) = os.path.splitext(output_file_name)
warning_logger_name = os.path.join(os.path.dirname(warning_logger_name),
os.path.basename(warning_logger_name) + "_warnings_and_errors.txt")
warning_logger = logging.FileHandler(warning_logger_name, delay=True)
warning_logger.setLevel(logging.WARNING)
warning_logger.setFormatter(logging.Formatter('%(levelname)s: %(message)s'))
logger.addHandler(warning_logger)
input_data = get_input_data(args) input_data = get_input_data(args)
logger.debug("Email input data is: " + input_data) logger.debug("Email input data is: " + input_data)

View file

@ -66,12 +66,23 @@ class Email2PDFTestCase(unittest.TestCase):
else: else:
return False return False
def getTimedFilename(self, path=None): def existsByTimeWarning(self):
if self.getTimedFilename(postfix="_warnings_and_errors.txt"):
return True
else:
return False
def getWarningFileContents(self):
filename = self.getTimedFilename(postfix="_warnings_and_errors.txt")
with open(filename) as f:
return f.read()
def getTimedFilename(self, path=None, postfix=".pdf"):
if path is None: if path is None:
path = self.workingDir path = self.workingDir
for single_time in self._timerange(self.time_invoked, self.time_completed): for single_time in self._timerange(self.time_invoked, self.time_completed):
filename = os.path.join(path, self.getTimeStamp(single_time) + ".pdf") filename = os.path.join(path, self.getTimeStamp(single_time) + postfix)
if os.path.exists(filename): if os.path.exists(filename):
return filename return filename
@ -180,20 +191,22 @@ class Email2PDFTestCase(unittest.TestCase):
options.extend(extraParams) options.extend(extraParams)
stream = io.StringIO() stream = io.StringIO()
handler = logging.StreamHandler(stream) stream_handler = logging.StreamHandler(stream)
log = logging.getLogger('email2pdf') log = logging.getLogger('email2pdf')
log.propagate = False log.propagate = False
log.setLevel(logging.DEBUG) log.setLevel(logging.DEBUG)
log.addHandler(handler) log.addHandler(stream_handler)
self.time_invoked = datetime.now() self.time_invoked = datetime.now()
try: try:
email2pdf.main(options, None, handler) email2pdf.main(options, None, stream_handler)
finally: finally:
self.time_completed = datetime.now() self.time_completed = datetime.now()
log.removeHandler(handler) for handler in log.handlers:
handler.close() handler.close()
log.removeHandler(handler)
stream_handler.close()
error = stream.getvalue() error = stream.getvalue()

View file

@ -15,6 +15,8 @@ class Direct_Arguments(BaseTestClasses.Email2PDFTestCase):
error = self.invokeDirectly(extraParams=['--no-body']) error = self.invokeDirectly(extraParams=['--no-body'])
self.assertFalse(self.existsByTime()) self.assertFalse(self.existsByTime())
self.assertRegex(error, "body.*any.*attachments") self.assertRegex(error, "body.*any.*attachments")
self.assertTrue(self.existsByTimeWarning())
self.assertRegex(self.getWarningFileContents(), "body.*any.*attachments")
def test_no_attachments(self): def test_no_attachments(self):
self.addHeaders() self.addHeaders()
@ -29,6 +31,7 @@ class Direct_Arguments(BaseTestClasses.Email2PDFTestCase):
self.assertFalse(os.path.exists(os.path.join(self.workingDir, filename2))) self.assertFalse(os.path.exists(os.path.join(self.workingDir, filename2)))
self.assertFalse(os.path.exists(os.path.join(self.workingDir, filename3))) self.assertFalse(os.path.exists(os.path.join(self.workingDir, filename3)))
self.assertRegex(self.getPDFText(self.getTimedFilename()), "Some basic textual content") self.assertRegex(self.getPDFText(self.getTimedFilename()), "Some basic textual content")
self.assertFalse(self.existsByTimeWarning())
def test_no_body_and_no_attachments(self): def test_no_body_and_no_attachments(self):
self.addHeaders() self.addHeaders()
@ -39,6 +42,7 @@ class Direct_Arguments(BaseTestClasses.Email2PDFTestCase):
with self.assertRaisesRegex(Exception, "attachments.*not allowed with.*body"): with self.assertRaisesRegex(Exception, "attachments.*not allowed with.*body"):
self.invokeDirectly(extraParams=['--no-body', '--no-attachments']) self.invokeDirectly(extraParams=['--no-body', '--no-attachments'])
self.assertFalse(self.existsByTime()) self.assertFalse(self.existsByTime())
self.assertFalse(self.existsByTimeWarning())
def test_headers(self): def test_headers(self):
path = os.path.join(self.examineDir, "headers.pdf") path = os.path.join(self.examineDir, "headers.pdf")
@ -52,6 +56,7 @@ class Direct_Arguments(BaseTestClasses.Email2PDFTestCase):
self.assertRegex(pdf_text, "From") self.assertRegex(pdf_text, "From")
self.assertRegex(pdf_text, "To") self.assertRegex(pdf_text, "To")
self.assertRegex(pdf_text, "Hello") self.assertRegex(pdf_text, "Hello")
self.assertFalse(self.existsByTimeWarning())
def test_add_prefix_date(self): def test_add_prefix_date(self):
self.addHeaders() self.addHeaders()
@ -77,6 +82,7 @@ class Direct_Arguments(BaseTestClasses.Email2PDFTestCase):
self.assertRegex(self.getPDFText(os.path.join(self.workingDir, filename4)), "Some PDF content") self.assertRegex(self.getPDFText(os.path.join(self.workingDir, filename4)), "Some PDF content")
self.assertRegex(self.getPDFText(os.path.join(self.workingDir, self.assertRegex(self.getPDFText(os.path.join(self.workingDir,
datetime.now().strftime("%Y-%m-%d-") + filename)), "Some PDF content") datetime.now().strftime("%Y-%m-%d-") + filename)), "Some PDF content")
self.assertFalse(self.existsByTimeWarning())
def test_verbose(self): def test_verbose(self):
self.attachText("Hello!") self.attachText("Hello!")
@ -84,6 +90,7 @@ class Direct_Arguments(BaseTestClasses.Email2PDFTestCase):
self.assertNotEqual('', error) self.assertNotEqual('', error)
self.assertTrue(self.existsByTime()) self.assertTrue(self.existsByTime())
self.assertRegex(self.getPDFText(self.getTimedFilename()), "Hello!") self.assertRegex(self.getPDFText(self.getTimedFilename()), "Hello!")
self.assertFalse(self.existsByTimeWarning())
def test_veryverbose(self): def test_veryverbose(self):
self.attachText("Hello!") self.attachText("Hello!")
@ -91,3 +98,4 @@ class Direct_Arguments(BaseTestClasses.Email2PDFTestCase):
self.assertNotEqual('', error) self.assertNotEqual('', error)
self.assertTrue(self.existsByTime()) self.assertTrue(self.existsByTime())
self.assertRegex(self.getPDFText(self.getTimedFilename()), "Hello!") self.assertRegex(self.getPDFText(self.getTimedFilename()), "Hello!")
self.assertFalse(self.existsByTimeWarning())

View file

@ -20,6 +20,7 @@ class AttachmentDetection(Email2PDFTestCase):
self.assertTrue(os.path.exists(os.path.join(self.workingDir, filename))) self.assertTrue(os.path.exists(os.path.join(self.workingDir, filename)))
self.assertRegex(self.getPDFText(self.getTimedFilename()), "Some basic textual content") self.assertRegex(self.getPDFText(self.getTimedFilename()), "Some basic textual content")
self.assertRegex(self.getPDFText(os.path.join(self.workingDir, filename)), "Some PDF content") self.assertRegex(self.getPDFText(os.path.join(self.workingDir, filename)), "Some PDF content")
self.assertFalse(self.existsByTimeWarning())
def test_pdf_with_invalid_extension(self): def test_pdf_with_invalid_extension(self):
self.addHeaders() self.addHeaders()
@ -31,6 +32,7 @@ class AttachmentDetection(Email2PDFTestCase):
self.assertTrue(os.path.exists(os.path.join(self.workingDir, filename))) self.assertTrue(os.path.exists(os.path.join(self.workingDir, filename)))
self.assertRegex(self.getPDFText(self.getTimedFilename()), "Some basic textual content") self.assertRegex(self.getPDFText(self.getTimedFilename()), "Some basic textual content")
self.assertRegex(self.getPDFText(os.path.join(self.workingDir, filename)), "Some PDF content") self.assertRegex(self.getPDFText(os.path.join(self.workingDir, filename)), "Some PDF content")
self.assertFalse(self.existsByTimeWarning())
def test_pdf_as_octet_stream_with_invalid_extension(self): def test_pdf_as_octet_stream_with_invalid_extension(self):
self.addHeaders() self.addHeaders()
@ -42,6 +44,7 @@ class AttachmentDetection(Email2PDFTestCase):
self.assertTrue(os.path.exists(os.path.join(self.workingDir, filename))) self.assertTrue(os.path.exists(os.path.join(self.workingDir, filename)))
self.assertRegex(self.getPDFText(self.getTimedFilename()), "Some basic textual content") self.assertRegex(self.getPDFText(self.getTimedFilename()), "Some basic textual content")
self.assertRegex(self.getPDFText(os.path.join(self.workingDir, filename)), "Some PDF content") self.assertRegex(self.getPDFText(os.path.join(self.workingDir, filename)), "Some PDF content")
self.assertFalse(self.existsByTimeWarning())
def test_pdf_as_octet_stream_no_body(self): def test_pdf_as_octet_stream_no_body(self):
self.addHeaders() self.addHeaders()
@ -52,6 +55,7 @@ class AttachmentDetection(Email2PDFTestCase):
self.assertFalse(self.existsByTime()) self.assertFalse(self.existsByTime())
self.assertTrue(os.path.exists(os.path.join(self.workingDir, filename))) self.assertTrue(os.path.exists(os.path.join(self.workingDir, filename)))
self.assertRegex(self.getPDFText(os.path.join(self.workingDir, filename)), "Some PDF content") self.assertRegex(self.getPDFText(os.path.join(self.workingDir, filename)), "Some PDF content")
self.assertFalse(self.existsByTimeWarning())
def test_jpeg_as_octet_stream(self): def test_jpeg_as_octet_stream(self):
self.addHeaders() self.addHeaders()
@ -63,6 +67,7 @@ class AttachmentDetection(Email2PDFTestCase):
self.assertTrue(os.path.exists(os.path.join(self.workingDir, image_filename))) self.assertTrue(os.path.exists(os.path.join(self.workingDir, image_filename)))
self.assertIsJPG(os.path.join(self.workingDir, image_filename)) self.assertIsJPG(os.path.join(self.workingDir, image_filename))
self.assertRegex(self.getPDFText(self.getTimedFilename()), "Some basic textual content") self.assertRegex(self.getPDFText(self.getTimedFilename()), "Some basic textual content")
self.assertFalse(self.existsByTimeWarning())
def test_jpeg_with_invalid_extension(self): def test_jpeg_with_invalid_extension(self):
self.addHeaders() self.addHeaders()
@ -74,6 +79,7 @@ class AttachmentDetection(Email2PDFTestCase):
self.assertTrue(os.path.exists(os.path.join(self.workingDir, image_filename))) self.assertTrue(os.path.exists(os.path.join(self.workingDir, image_filename)))
self.assertIsJPG(os.path.join(self.workingDir, image_filename)) self.assertIsJPG(os.path.join(self.workingDir, image_filename))
self.assertRegex(self.getPDFText(self.getTimedFilename()), "Some basic textual content") self.assertRegex(self.getPDFText(self.getTimedFilename()), "Some basic textual content")
self.assertFalse(self.existsByTimeWarning())
def test_jpeg_as_octet_stream_with_invalid_extension(self): def test_jpeg_as_octet_stream_with_invalid_extension(self):
self.addHeaders() self.addHeaders()
@ -85,6 +91,7 @@ class AttachmentDetection(Email2PDFTestCase):
self.assertTrue(os.path.exists(os.path.join(self.workingDir, image_filename))) self.assertTrue(os.path.exists(os.path.join(self.workingDir, image_filename)))
self.assertIsJPG(os.path.join(self.workingDir, image_filename)) self.assertIsJPG(os.path.join(self.workingDir, image_filename))
self.assertRegex(self.getPDFText(self.getTimedFilename()), "Some basic textual content") self.assertRegex(self.getPDFText(self.getTimedFilename()), "Some basic textual content")
self.assertFalse(self.existsByTimeWarning())
def test_word_document(self): def test_word_document(self):
self.addHeaders() self.addHeaders()
@ -96,6 +103,7 @@ class AttachmentDetection(Email2PDFTestCase):
self.assertTrue(self.existsByTime()) self.assertTrue(self.existsByTime())
self.assertTrue(os.path.exists(os.path.join(self.workingDir, "somefile.docx"))) self.assertTrue(os.path.exists(os.path.join(self.workingDir, "somefile.docx")))
self.assertRegex(self.getPDFText(self.getTimedFilename()), "Some basic textual content") self.assertRegex(self.getPDFText(self.getTimedFilename()), "Some basic textual content")
self.assertFalse(self.existsByTimeWarning())
def test_unidentified_file(self): def test_unidentified_file(self):
self.addHeaders() self.addHeaders()
@ -106,3 +114,4 @@ class AttachmentDetection(Email2PDFTestCase):
self.assertTrue(self.existsByTime()) self.assertTrue(self.existsByTime())
self.assertTrue(os.path.exists(os.path.join(self.workingDir, "somefile.xyz"))) self.assertTrue(os.path.exists(os.path.join(self.workingDir, "somefile.xyz")))
self.assertRegex(self.getPDFText(self.getTimedFilename()), "Some basic textual content") self.assertRegex(self.getPDFText(self.getTimedFilename()), "Some basic textual content")
self.assertFalse(self.existsByTimeWarning())

View file

@ -16,6 +16,7 @@ class Direct_Basic(BaseTestClasses.Email2PDFTestCase):
error = self.invokeDirectly() error = self.invokeDirectly()
self.assertTrue(self.existsByTime()) self.assertTrue(self.existsByTime())
self.assertEqual('', error) self.assertEqual('', error)
self.assertFalse(self.existsByTimeWarning())
def test_internationalised_subject(self): def test_internationalised_subject(self):
path = os.path.join(self.examineDir, "internationalised_subject.pdf") path = os.path.join(self.examineDir, "internationalised_subject.pdf")
@ -23,6 +24,7 @@ class Direct_Basic(BaseTestClasses.Email2PDFTestCase):
error = self.invokeDirectly(outputFile=path, extraParams=['--headers']) error = self.invokeDirectly(outputFile=path, extraParams=['--headers'])
self.assertTrue(os.path.exists(path)) self.assertTrue(os.path.exists(path))
self.assertEqual('', error) self.assertEqual('', error)
self.assertFalse(self.existsByTimeWarning())
def test_internationalised_subject2(self): def test_internationalised_subject2(self):
path = os.path.join(self.examineDir, "internationalised_subject_jp.pdf") path = os.path.join(self.examineDir, "internationalised_subject_jp.pdf")
@ -30,6 +32,7 @@ class Direct_Basic(BaseTestClasses.Email2PDFTestCase):
error = self.invokeDirectly(outputFile=path, extraParams=['--headers']) error = self.invokeDirectly(outputFile=path, extraParams=['--headers'])
self.assertTrue(os.path.exists(path)) self.assertTrue(os.path.exists(path))
self.assertEqual('', error) self.assertEqual('', error)
self.assertFalse(self.existsByTimeWarning())
def test_internationalised_subject3(self): def test_internationalised_subject3(self):
path = os.path.join(self.examineDir, "internationalised_subject_de.pdf") path = os.path.join(self.examineDir, "internationalised_subject_de.pdf")
@ -37,6 +40,7 @@ class Direct_Basic(BaseTestClasses.Email2PDFTestCase):
error = self.invokeDirectly(outputFile=path, extraParams=['--headers']) error = self.invokeDirectly(outputFile=path, extraParams=['--headers'])
self.assertTrue(os.path.exists(path)) self.assertTrue(os.path.exists(path))
self.assertEqual('', error) self.assertEqual('', error)
self.assertFalse(self.existsByTimeWarning())
def test_internationalised_subject4(self): def test_internationalised_subject4(self):
path = os.path.join(self.examineDir, "internationalised_subject_complex.pdf") path = os.path.join(self.examineDir, "internationalised_subject_complex.pdf")
@ -48,3 +52,4 @@ class Direct_Basic(BaseTestClasses.Email2PDFTestCase):
error = self.invokeDirectly(outputFile=path, extraParams=['--headers']) error = self.invokeDirectly(outputFile=path, extraParams=['--headers'])
self.assertTrue(os.path.exists(path)) self.assertTrue(os.path.exists(path))
self.assertEqual('', error) self.assertEqual('', error)
self.assertFalse(self.existsByTimeWarning())

View file

@ -18,6 +18,8 @@ class Direct_CID(Email2PDFTestCase):
self.assertFalse(self.existsByTime()) self.assertFalse(self.existsByTime())
self.assertRegex(error, "body.*any.*attachments") self.assertRegex(error, "body.*any.*attachments")
self.assertFalse(os.path.exists(os.path.join(self.workingDir, 'myid.jpg'))) self.assertFalse(os.path.exists(os.path.join(self.workingDir, 'myid.jpg')))
self.assertTrue(self.existsByTimeWarning())
self.assertRegex(self.getWarningFileContents(), "body.*any.*attachments")
def test_inline_image_with_filename_no_body(self): def test_inline_image_with_filename_no_body(self):
self.addHeaders() self.addHeaders()
@ -27,6 +29,7 @@ class Direct_CID(Email2PDFTestCase):
self.assertEqual('', error) self.assertEqual('', error)
self.assertFalse(self.existsByTime()) self.assertFalse(self.existsByTime())
self.assertTrue(os.path.exists(os.path.join(self.workingDir, image_filename))) self.assertTrue(os.path.exists(os.path.join(self.workingDir, image_filename)))
self.assertFalse(self.existsByTimeWarning())
def test_inline_image_and_pdf(self): def test_inline_image_and_pdf(self):
self.addHeaders() self.addHeaders()
@ -38,6 +41,7 @@ class Direct_CID(Email2PDFTestCase):
self.assertFalse(self.existsByTime()) self.assertFalse(self.existsByTime())
self.assertTrue(os.path.exists(os.path.join(self.workingDir, pdf_file_name))) self.assertTrue(os.path.exists(os.path.join(self.workingDir, pdf_file_name)))
self.assertRegex(self.getPDFText(os.path.join(self.workingDir, pdf_file_name)), "Some PDF content") self.assertRegex(self.getPDFText(os.path.join(self.workingDir, pdf_file_name)), "Some PDF content")
self.assertFalse(self.existsByTimeWarning())
def test_embedded_image(self): def test_embedded_image(self):
path = os.path.join(self.examineDir, "embeddedImage.pdf") path = os.path.join(self.examineDir, "embeddedImage.pdf")
@ -49,6 +53,7 @@ class Direct_CID(Email2PDFTestCase):
self.assertTrue(os.path.exists(path)) self.assertTrue(os.path.exists(path))
self.assertLess(Email2PDFTestCase.JPG_SIZE, os.path.getsize(path)) self.assertLess(Email2PDFTestCase.JPG_SIZE, os.path.getsize(path))
self.assertFalse(os.path.exists(os.path.join(self.workingDir, image_filename))) self.assertFalse(os.path.exists(os.path.join(self.workingDir, image_filename)))
self.assertFalse(self.existsByTimeWarning())
def test_embedded_image_with_complex_name(self): def test_embedded_image_with_complex_name(self):
path = os.path.join(self.examineDir, "embeddedImageWithComplexName.pdf") path = os.path.join(self.examineDir, "embeddedImageWithComplexName.pdf")
@ -60,6 +65,7 @@ class Direct_CID(Email2PDFTestCase):
self.assertTrue(os.path.exists(path)) self.assertTrue(os.path.exists(path))
self.assertLess(Email2PDFTestCase.PNG_SIZE, os.path.getsize(path)) self.assertLess(Email2PDFTestCase.PNG_SIZE, os.path.getsize(path))
self.assertFalse(os.path.exists(os.path.join(self.workingDir, image_filename))) self.assertFalse(os.path.exists(os.path.join(self.workingDir, image_filename)))
self.assertFalse(self.existsByTimeWarning())
def test_embedded_image_invalid_cid(self): def test_embedded_image_invalid_cid(self):
self.addHeaders() self.addHeaders()
@ -70,6 +76,8 @@ class Direct_CID(Email2PDFTestCase):
self.assertTrue(self.existsByTime()) self.assertTrue(self.existsByTime())
self.assertGreater(Email2PDFTestCase.JPG_SIZE, os.path.getsize(self.getTimedFilename())) self.assertGreater(Email2PDFTestCase.JPG_SIZE, os.path.getsize(self.getTimedFilename()))
self.assertTrue(os.path.exists(os.path.join(self.workingDir, image_filename))) self.assertTrue(os.path.exists(os.path.join(self.workingDir, image_filename)))
self.assertTrue(self.existsByTimeWarning())
self.assertRegex(self.getWarningFileContents(), "(?i)could not find image")
def test_embedded_image_png(self): def test_embedded_image_png(self):
path = os.path.join(self.examineDir, "embeddedImagePNG.pdf") path = os.path.join(self.examineDir, "embeddedImagePNG.pdf")
@ -81,6 +89,7 @@ class Direct_CID(Email2PDFTestCase):
self.assertTrue(os.path.exists(path)) self.assertTrue(os.path.exists(path))
self.assertLess(Email2PDFTestCase.PNG_SIZE, os.path.getsize(path)) self.assertLess(Email2PDFTestCase.PNG_SIZE, os.path.getsize(path))
self.assertFalse(os.path.exists(os.path.join(self.workingDir, image_filename))) self.assertFalse(os.path.exists(os.path.join(self.workingDir, image_filename)))
self.assertFalse(self.existsByTimeWarning())
def test_embedded_image_cid_underscore(self): def test_embedded_image_cid_underscore(self):
self.addHeaders() self.addHeaders()
@ -91,6 +100,7 @@ class Direct_CID(Email2PDFTestCase):
self.assertTrue(self.existsByTime()) self.assertTrue(self.existsByTime())
self.assertLess(Email2PDFTestCase.JPG_SIZE, os.path.getsize(self.getTimedFilename())) self.assertLess(Email2PDFTestCase.JPG_SIZE, os.path.getsize(self.getTimedFilename()))
self.assertFalse(os.path.exists(os.path.join(self.workingDir, image_filename))) self.assertFalse(os.path.exists(os.path.join(self.workingDir, image_filename)))
self.assertFalse(self.existsByTimeWarning())
def test_embedded_image_extra_html_content(self): def test_embedded_image_extra_html_content(self):
if self.isOnline: if self.isOnline:
@ -103,6 +113,7 @@ class Direct_CID(Email2PDFTestCase):
self.assertTrue(self.existsByTime()) self.assertTrue(self.existsByTime())
self.assertLess(Email2PDFTestCase.JPG_SIZE, os.path.getsize(self.getTimedFilename())) self.assertLess(Email2PDFTestCase.JPG_SIZE, os.path.getsize(self.getTimedFilename()))
self.assertFalse(os.path.exists(os.path.join(self.workingDir, image_filename))) self.assertFalse(os.path.exists(os.path.join(self.workingDir, image_filename)))
self.assertFalse(self.existsByTimeWarning())
else: else:
self.skipTest("Not online.") self.skipTest("Not online.")
@ -115,6 +126,7 @@ class Direct_CID(Email2PDFTestCase):
self.assertTrue(self.existsByTime()) self.assertTrue(self.existsByTime())
self.assertLess(Email2PDFTestCase.JPG_SIZE, os.path.getsize(self.getTimedFilename())) self.assertLess(Email2PDFTestCase.JPG_SIZE, os.path.getsize(self.getTimedFilename()))
self.assertFalse(os.path.exists(os.path.join(self.workingDir, image_filename))) self.assertFalse(os.path.exists(os.path.join(self.workingDir, image_filename)))
self.assertFalse(self.existsByTimeWarning())
def test_embedded_image_no_attachments(self): def test_embedded_image_no_attachments(self):
self.addHeaders() self.addHeaders()
@ -125,6 +137,7 @@ class Direct_CID(Email2PDFTestCase):
self.assertTrue(self.existsByTime()) self.assertTrue(self.existsByTime())
self.assertLess(Email2PDFTestCase.JPG_SIZE, os.path.getsize(self.getTimedFilename())) self.assertLess(Email2PDFTestCase.JPG_SIZE, os.path.getsize(self.getTimedFilename()))
self.assertFalse(os.path.exists(os.path.join(self.workingDir, image_filename))) self.assertFalse(os.path.exists(os.path.join(self.workingDir, image_filename)))
self.assertFalse(self.existsByTimeWarning())
def test_embedded_image_as_octet_stream(self): def test_embedded_image_as_octet_stream(self):
self.addHeaders() self.addHeaders()
@ -135,6 +148,7 @@ class Direct_CID(Email2PDFTestCase):
self.assertTrue(self.existsByTime()) self.assertTrue(self.existsByTime())
self.assertLess(Email2PDFTestCase.JPG_SIZE, os.path.getsize(self.getTimedFilename())) self.assertLess(Email2PDFTestCase.JPG_SIZE, os.path.getsize(self.getTimedFilename()))
self.assertFalse(os.path.exists(os.path.join(self.workingDir, image_filename))) self.assertFalse(os.path.exists(os.path.join(self.workingDir, image_filename)))
self.assertFalse(self.existsByTimeWarning())
def test_one_embedded_one_not_image(self): def test_one_embedded_one_not_image(self):
self.addHeaders() self.addHeaders()
@ -147,6 +161,7 @@ class Direct_CID(Email2PDFTestCase):
self.assertLess(Email2PDFTestCase.JPG_SIZE, os.path.getsize(self.getTimedFilename())) self.assertLess(Email2PDFTestCase.JPG_SIZE, os.path.getsize(self.getTimedFilename()))
self.assertFalse(os.path.exists(os.path.join(self.workingDir, image_filename))) self.assertFalse(os.path.exists(os.path.join(self.workingDir, image_filename)))
self.assertTrue(os.path.exists(os.path.join(self.workingDir, image_filename2))) self.assertTrue(os.path.exists(os.path.join(self.workingDir, image_filename2)))
self.assertFalse(self.existsByTimeWarning())
def test_two_embedded(self): def test_two_embedded(self):
path = os.path.join(self.examineDir, "twoEmbeddedImages.pdf") path = os.path.join(self.examineDir, "twoEmbeddedImages.pdf")
@ -158,6 +173,7 @@ class Direct_CID(Email2PDFTestCase):
self.assertTrue(os.path.exists(path)) self.assertTrue(os.path.exists(path))
self.assertLess(Email2PDFTestCase.JPG_SIZE, os.path.getsize(path)) self.assertLess(Email2PDFTestCase.JPG_SIZE, os.path.getsize(path))
self.assertFalse(os.path.exists(os.path.join(self.workingDir, image_filename))) self.assertFalse(os.path.exists(os.path.join(self.workingDir, image_filename)))
self.assertFalse(self.existsByTimeWarning())
def test_two_different_embedded(self): def test_two_different_embedded(self):
path = os.path.join(self.examineDir, "twoDifferentEmbeddedImages.pdf") path = os.path.join(self.examineDir, "twoDifferentEmbeddedImages.pdf")
@ -171,6 +187,7 @@ class Direct_CID(Email2PDFTestCase):
self.assertLess(Email2PDFTestCase.JPG_SIZE + Email2PDFTestCase.PNG_SIZE, os.path.getsize(path)) self.assertLess(Email2PDFTestCase.JPG_SIZE + Email2PDFTestCase.PNG_SIZE, os.path.getsize(path))
self.assertFalse(os.path.exists(os.path.join(self.workingDir, image_filename))) self.assertFalse(os.path.exists(os.path.join(self.workingDir, image_filename)))
self.assertFalse(os.path.exists(os.path.join(self.workingDir, image_filename2))) self.assertFalse(os.path.exists(os.path.join(self.workingDir, image_filename2)))
self.assertFalse(self.existsByTimeWarning())
def test_some_cids_not_referenced(self): def test_some_cids_not_referenced(self):
self.addHeaders() self.addHeaders()
@ -189,6 +206,7 @@ class Direct_CID(Email2PDFTestCase):
self.assertTrue(os.path.exists(os.path.join(self.workingDir, 'myid3.jpg'))) self.assertTrue(os.path.exists(os.path.join(self.workingDir, 'myid3.jpg')))
self.assertTrue(os.path.exists(os.path.join(self.workingDir, 'floating_attachment.jpg'))) self.assertTrue(os.path.exists(os.path.join(self.workingDir, 'floating_attachment.jpg')))
self.assertTrue(os.path.exists(os.path.join(self.workingDir, 'floating_attachment_1.jpg'))) self.assertTrue(os.path.exists(os.path.join(self.workingDir, 'floating_attachment_1.jpg')))
self.assertFalse(self.existsByTimeWarning())
def test_some_cids_not_referenced_ignore_floating_attachments(self): def test_some_cids_not_referenced_ignore_floating_attachments(self):
self.addHeaders() self.addHeaders()
@ -207,6 +225,7 @@ class Direct_CID(Email2PDFTestCase):
self.assertFalse(os.path.exists(os.path.join(self.workingDir, 'myid3.jpg'))) self.assertFalse(os.path.exists(os.path.join(self.workingDir, 'myid3.jpg')))
self.assertFalse(os.path.exists(os.path.join(self.workingDir, 'floating_attachment.jpg'))) self.assertFalse(os.path.exists(os.path.join(self.workingDir, 'floating_attachment.jpg')))
self.assertFalse(os.path.exists(os.path.join(self.workingDir, 'floating_attachment_1.jpg'))) self.assertFalse(os.path.exists(os.path.join(self.workingDir, 'floating_attachment_1.jpg')))
self.assertFalse(self.existsByTimeWarning())
def test_some_cids_not_referenced_png(self): def test_some_cids_not_referenced_png(self):
self.addHeaders() self.addHeaders()
@ -221,6 +240,7 @@ class Direct_CID(Email2PDFTestCase):
self.assertFalse(os.path.exists(os.path.join(self.workingDir, 'myid.png'))) self.assertFalse(os.path.exists(os.path.join(self.workingDir, 'myid.png')))
self.assertTrue(os.path.exists(os.path.join(self.workingDir, 'myid2.png'))) self.assertTrue(os.path.exists(os.path.join(self.workingDir, 'myid2.png')))
self.assertTrue(os.path.exists(os.path.join(self.workingDir, 'floating_attachment.png'))) self.assertTrue(os.path.exists(os.path.join(self.workingDir, 'floating_attachment.png')))
self.assertFalse(self.existsByTimeWarning())
def test_some_cids_not_referenced_pdf(self): def test_some_cids_not_referenced_pdf(self):
self.addHeaders() self.addHeaders()
@ -234,6 +254,7 @@ class Direct_CID(Email2PDFTestCase):
self.assertFalse(os.path.exists(os.path.join(self.workingDir, 'myid.png'))) self.assertFalse(os.path.exists(os.path.join(self.workingDir, 'myid.png')))
self.assertTrue(os.path.exists(os.path.join(self.workingDir, 'floating_attachment.pdf'))) self.assertTrue(os.path.exists(os.path.join(self.workingDir, 'floating_attachment.pdf')))
self.assertRegex(self.getPDFText(os.path.join(self.workingDir, 'floating_attachment.pdf')), "Some PDF content") self.assertRegex(self.getPDFText(os.path.join(self.workingDir, 'floating_attachment.pdf')), "Some PDF content")
self.assertFalse(self.existsByTimeWarning())
def test_some_cids_not_referenced_docx(self): def test_some_cids_not_referenced_docx(self):
self.addHeaders() self.addHeaders()
@ -248,6 +269,7 @@ class Direct_CID(Email2PDFTestCase):
self.assertLess(Email2PDFTestCase.JPG_SIZE, os.path.getsize(self.getTimedFilename())) self.assertLess(Email2PDFTestCase.JPG_SIZE, os.path.getsize(self.getTimedFilename()))
self.assertFalse(os.path.exists(os.path.join(self.workingDir, 'myid.png'))) self.assertFalse(os.path.exists(os.path.join(self.workingDir, 'myid.png')))
self.assertTrue(os.path.exists(os.path.join(self.workingDir, 'floating_attachment.docx'))) self.assertTrue(os.path.exists(os.path.join(self.workingDir, 'floating_attachment.docx')))
self.assertFalse(self.existsByTimeWarning())
def test_some_cids_not_referenced_misc(self): def test_some_cids_not_referenced_misc(self):
self.addHeaders() self.addHeaders()
@ -262,3 +284,4 @@ class Direct_CID(Email2PDFTestCase):
self.assertLess(Email2PDFTestCase.JPG_SIZE, os.path.getsize(self.getTimedFilename())) self.assertLess(Email2PDFTestCase.JPG_SIZE, os.path.getsize(self.getTimedFilename()))
self.assertFalse(os.path.exists(os.path.join(self.workingDir, 'myid.png'))) self.assertFalse(os.path.exists(os.path.join(self.workingDir, 'myid.png')))
self.assertTrue(os.path.exists(os.path.join(self.workingDir, 'floating_attachment'))) self.assertTrue(os.path.exists(os.path.join(self.workingDir, 'floating_attachment')))
self.assertFalse(self.existsByTimeWarning())

View file

@ -16,11 +16,13 @@ class Direct_Errors(BaseTestClasses.Email2PDFTestCase):
with tempfile.NamedTemporaryFile() as tmpfile: with tempfile.NamedTemporaryFile() as tmpfile:
with self.assertRaisesRegex(Exception, "file.*exist"): with self.assertRaisesRegex(Exception, "file.*exist"):
self.invokeDirectly(outputFile=tmpfile.name, okToExist=True) self.invokeDirectly(outputFile=tmpfile.name, okToExist=True)
self.assertFalse(self.existsByTimeWarning())
def test_plaincontent_dirnotexist(self): def test_plaincontent_dirnotexist(self):
self.attachText("Hello!") self.attachText("Hello!")
with self.assertRaisesRegex(Exception, "(?i)directory.*not.*exist"): with self.assertRaisesRegex(Exception, "(?i)directory.*not.*exist"):
self.invokeDirectly(outputDirectory="/notexist/") self.invokeDirectly(outputDirectory="/notexist/")
self.assertFalse(self.existsByTimeWarning())
def test_image_doesnt_exist(self): def test_image_doesnt_exist(self):
if self.isOnline: if self.isOnline:
@ -30,6 +32,7 @@ class Direct_Errors(BaseTestClasses.Email2PDFTestCase):
error = self.invokeDirectly(outputFile=path) error = self.invokeDirectly(outputFile=path)
self.assertTrue(os.path.exists(path)) self.assertTrue(os.path.exists(path))
self.assertRegex(error, "(?i)could not retrieve") self.assertRegex(error, "(?i)could not retrieve")
self.assertFalse(self.existsByTimeWarning())
else: else:
self.skipTest("Not online.") self.skipTest("Not online.")
@ -40,6 +43,7 @@ class Direct_Errors(BaseTestClasses.Email2PDFTestCase):
error = self.invokeDirectly(outputFile=path) error = self.invokeDirectly(outputFile=path)
self.assertTrue(os.path.exists(path)) self.assertTrue(os.path.exists(path))
self.assertEqual('', error) self.assertEqual('', error)
self.assertFalse(self.existsByTimeWarning())
def test_image_doesnt_exist_blacklist_upper(self): def test_image_doesnt_exist_blacklist_upper(self):
path = os.path.join(self.examineDir, "remoteImageDoesntExistBlacklistUpper.pdf") path = os.path.join(self.examineDir, "remoteImageDoesntExistBlacklistUpper.pdf")
@ -48,6 +52,7 @@ class Direct_Errors(BaseTestClasses.Email2PDFTestCase):
error = self.invokeDirectly(outputFile=path) error = self.invokeDirectly(outputFile=path)
self.assertTrue(os.path.exists(path)) self.assertTrue(os.path.exists(path))
self.assertEqual('', error) self.assertEqual('', error)
self.assertFalse(self.existsByTimeWarning())
def test_image_doesnt_exist_with_pdf(self): def test_image_doesnt_exist_with_pdf(self):
if self.isOnline: if self.isOnline:
@ -58,6 +63,8 @@ class Direct_Errors(BaseTestClasses.Email2PDFTestCase):
self.assertTrue(self.existsByTime()) self.assertTrue(self.existsByTime())
self.assertTrue(os.path.exists(os.path.join(self.workingDir, filename))) self.assertTrue(os.path.exists(os.path.join(self.workingDir, filename)))
self.assertRegex(error, "(?i)could not retrieve") self.assertRegex(error, "(?i)could not retrieve")
self.assertTrue(self.existsByTimeWarning())
self.assertRegex(self.getWarningFileContents(), "(?i)could not retrieve")
else: else:
self.skipTest("Not online.") self.skipTest("Not online.")
@ -68,6 +75,7 @@ class Direct_Errors(BaseTestClasses.Email2PDFTestCase):
error = self.invokeDirectly(outputFile=path) error = self.invokeDirectly(outputFile=path)
self.assertTrue(os.path.exists(path)) self.assertTrue(os.path.exists(path))
self.assertRegex(error, "(?i)could not retrieve") self.assertRegex(error, "(?i)could not retrieve")
self.assertFalse(self.existsByTimeWarning())
def test_local_image_with_query_doesnt_exist(self): def test_local_image_with_query_doesnt_exist(self):
path = os.path.join(self.examineDir, "localImageWithQueryDoesntExist.pdf") path = os.path.join(self.examineDir, "localImageWithQueryDoesntExist.pdf")
@ -76,6 +84,7 @@ class Direct_Errors(BaseTestClasses.Email2PDFTestCase):
error = self.invokeDirectly(outputFile=path) error = self.invokeDirectly(outputFile=path)
self.assertTrue(os.path.exists(path)) self.assertTrue(os.path.exists(path))
self.assertRegex(error, "(?i)could not retrieve") self.assertRegex(error, "(?i)could not retrieve")
self.assertFalse(self.existsByTimeWarning())
def test_local_script_doesnt_exist(self): def test_local_script_doesnt_exist(self):
path = os.path.join(self.examineDir, "localScriptDoesntExist.pdf") path = os.path.join(self.examineDir, "localScriptDoesntExist.pdf")
@ -84,6 +93,7 @@ class Direct_Errors(BaseTestClasses.Email2PDFTestCase):
error = self.invokeDirectly(outputFile=path) error = self.invokeDirectly(outputFile=path)
self.assertTrue(os.path.exists(path)) self.assertTrue(os.path.exists(path))
self.assertEqual('', error) self.assertEqual('', error)
self.assertFalse(self.existsByTimeWarning())
def test_local_script_with_query_doesnt_exist(self): def test_local_script_with_query_doesnt_exist(self):
path = os.path.join(self.examineDir, "localScriptWithQueryDoesntExist.pdf") path = os.path.join(self.examineDir, "localScriptWithQueryDoesntExist.pdf")
@ -92,6 +102,7 @@ class Direct_Errors(BaseTestClasses.Email2PDFTestCase):
error = self.invokeDirectly(outputFile=path) error = self.invokeDirectly(outputFile=path)
self.assertTrue(os.path.exists(path)) self.assertTrue(os.path.exists(path))
self.assertEqual('', error) self.assertEqual('', error)
self.assertFalse(self.existsByTimeWarning())
def test_local_stylesheet_doesnt_exist(self): def test_local_stylesheet_doesnt_exist(self):
path = os.path.join(self.examineDir, "localStylesheetDoesntExist.pdf") path = os.path.join(self.examineDir, "localStylesheetDoesntExist.pdf")
@ -100,6 +111,7 @@ class Direct_Errors(BaseTestClasses.Email2PDFTestCase):
error = self.invokeDirectly(outputFile=path) error = self.invokeDirectly(outputFile=path)
self.assertTrue(os.path.exists(path)) self.assertTrue(os.path.exists(path))
self.assertEqual('', error) self.assertEqual('', error)
self.assertFalse(self.existsByTimeWarning())
def test_local_stylesheet_with_query_doesnt_exist(self): def test_local_stylesheet_with_query_doesnt_exist(self):
path = os.path.join(self.examineDir, "localStylesheetWithQueryDoesntExist.pdf") path = os.path.join(self.examineDir, "localStylesheetWithQueryDoesntExist.pdf")
@ -108,6 +120,7 @@ class Direct_Errors(BaseTestClasses.Email2PDFTestCase):
error = self.invokeDirectly(outputFile=path) error = self.invokeDirectly(outputFile=path)
self.assertTrue(os.path.exists(path)) self.assertTrue(os.path.exists(path))
self.assertEqual('', error) self.assertEqual('', error)
self.assertFalse(self.existsByTimeWarning())
def test_no_explicit_parts(self): def test_no_explicit_parts(self):
# If we don't add any parts explicitly, email2pdf should find a # If we don't add any parts explicitly, email2pdf should find a
@ -115,11 +128,13 @@ class Direct_Errors(BaseTestClasses.Email2PDFTestCase):
error = self.invokeDirectly() error = self.invokeDirectly()
self.assertEqual('', error) self.assertEqual('', error)
self.assertTrue(self.existsByTime()) self.assertTrue(self.existsByTime())
self.assertFalse(self.existsByTimeWarning())
def test_fuzz(self): def test_fuzz(self):
with self.assertRaisesRegex(Exception, "(?i)defects parsing email"): with self.assertRaisesRegex(Exception, "(?i)defects parsing email"):
self.invokeDirectly(completeMessage="This is total junk") self.invokeDirectly(completeMessage="This is total junk")
self.assertFalse(self.existsByTime()) self.assertFalse(self.existsByTime())
self.assertFalse(self.existsByTimeWarning())
def test_broken_html(self): def test_broken_html(self):
self.addHeaders() self.addHeaders()
@ -127,3 +142,4 @@ class Direct_Errors(BaseTestClasses.Email2PDFTestCase):
error = self.invokeDirectly() error = self.invokeDirectly()
self.assertEqual('', error) self.assertEqual('', error)
self.assertTrue(self.existsByTime()) self.assertTrue(self.existsByTime())
self.assertFalse(self.existsByTimeWarning())

View file

@ -18,6 +18,7 @@ class Direct_Complex(BaseTestClasses.Email2PDFTestCase):
error = self.invokeDirectly() error = self.invokeDirectly()
self.assertEqual('', error) self.assertEqual('', error)
self.assertTrue(os.path.exists(os.path.join(self.workingDir, "2016-08-09T23-04-05.pdf"))) self.assertTrue(os.path.exists(os.path.join(self.workingDir, "2016-08-09T23-04-05.pdf")))
self.assertFalse(self.existsByTimeWarning())
@freeze_time("2017-09-11 00:05:06") @freeze_time("2017-09-11 00:05:06")
def test_add_prefix_date(self): def test_add_prefix_date(self):
@ -31,6 +32,7 @@ class Direct_Complex(BaseTestClasses.Email2PDFTestCase):
self.assertFalse(os.path.exists(os.path.join(self.workingDir, filename))) self.assertFalse(os.path.exists(os.path.join(self.workingDir, filename)))
self.assertTrue(os.path.exists(os.path.join(self.workingDir, "2017-09-11-" + filename))) self.assertTrue(os.path.exists(os.path.join(self.workingDir, "2017-09-11-" + filename)))
self.assertRegex(self.getPDFText(os.path.join(self.workingDir, "2017-09-11-" + filename)), "Some PDF content") self.assertRegex(self.getPDFText(os.path.join(self.workingDir, "2017-09-11-" + filename)), "Some PDF content")
self.assertFalse(self.existsByTimeWarning())
@freeze_time("2015-02-03 14:00:00") @freeze_time("2015-02-03 14:00:00")
def test_plaincontent_timedfileexist(self): def test_plaincontent_timedfileexist(self):
@ -46,3 +48,4 @@ class Direct_Complex(BaseTestClasses.Email2PDFTestCase):
self.assertTrue(os.path.exists(filename2)) self.assertTrue(os.path.exists(filename2))
self.assertIsNone(self.getPDFText(filename1)) self.assertIsNone(self.getPDFText(filename1))
self.assertRegex(self.getPDFText(filename2), "Hello!") self.assertRegex(self.getPDFText(filename2), "Hello!")
self.assertFalse(self.existsByTimeWarning())

View file

@ -21,6 +21,7 @@ class Direct_Metadata(Email2PDFTestCase):
self.assertEqual(Email2PDFTestCase.DEFAULT_TO, self.getMetadataField(timedFilename, "X-email2pdf-To")) self.assertEqual(Email2PDFTestCase.DEFAULT_TO, self.getMetadataField(timedFilename, "X-email2pdf-To"))
self.assertEqual(Email2PDFTestCase.DEFAULT_SUBJECT, self.getMetadataField(timedFilename, "Title")) self.assertEqual(Email2PDFTestCase.DEFAULT_SUBJECT, self.getMetadataField(timedFilename, "Title"))
self.assertEqual("email2pdf", self.getMetadataField(timedFilename, "Producer")) self.assertEqual("email2pdf", self.getMetadataField(timedFilename, "Producer"))
self.assertFalse(self.existsByTimeWarning())
def test_plaincontent_metadata(self): def test_plaincontent_metadata(self):
self.addHeaders() self.addHeaders()
@ -34,6 +35,7 @@ class Direct_Metadata(Email2PDFTestCase):
self.assertEqual(Email2PDFTestCase.DEFAULT_SUBJECT, self.getMetadataField(path, "Title")) self.assertEqual(Email2PDFTestCase.DEFAULT_SUBJECT, self.getMetadataField(path, "Title"))
self.assertEqual("email2pdf", self.getMetadataField(path, "Producer")) self.assertEqual("email2pdf", self.getMetadataField(path, "Producer"))
self.assertRegex(self.getPDFText(path), "Hello!") self.assertRegex(self.getPDFText(path), "Hello!")
self.assertFalse(self.existsByTimeWarning())
def test_plaincontent_metadata_differentmount(self): def test_plaincontent_metadata_differentmount(self):
self.addHeaders() self.addHeaders()
@ -48,6 +50,7 @@ class Direct_Metadata(Email2PDFTestCase):
self.assertEqual(Email2PDFTestCase.DEFAULT_TO, self.getMetadataField(path, "X-email2pdf-To")) self.assertEqual(Email2PDFTestCase.DEFAULT_TO, self.getMetadataField(path, "X-email2pdf-To"))
self.assertEqual(Email2PDFTestCase.DEFAULT_SUBJECT, self.getMetadataField(path, "Title")) self.assertEqual(Email2PDFTestCase.DEFAULT_SUBJECT, self.getMetadataField(path, "Title"))
self.assertEqual("email2pdf", self.getMetadataField(path, "Producer")) self.assertEqual("email2pdf", self.getMetadataField(path, "Producer"))
self.assertFalse(self.existsByTimeWarning())
else: else:
self.skipTest(tempdir + " and " + tempfile.tempdir + " are on the same mountpoint, test not relevant.") self.skipTest(tempdir + " and " + tempfile.tempdir + " are on the same mountpoint, test not relevant.")
@ -62,6 +65,7 @@ class Direct_Metadata(Email2PDFTestCase):
self.assertEqual('', self.getMetadataField(path, "Title")) self.assertEqual('', self.getMetadataField(path, "Title"))
self.assertEqual("email2pdf", self.getMetadataField(path, "Producer")) self.assertEqual("email2pdf", self.getMetadataField(path, "Producer"))
self.assertRegex(self.getPDFText(path), "Hello!") self.assertRegex(self.getPDFText(path), "Hello!")
self.assertFalse(self.existsByTimeWarning())
def test_metadata_internationalised_subject(self): def test_metadata_internationalised_subject(self):
self.addHeaders(subject=bytes("Hello!", 'iso-8859-1'), subject_encoding='iso-8859-1') self.addHeaders(subject=bytes("Hello!", 'iso-8859-1'), subject_encoding='iso-8859-1')
@ -73,3 +77,4 @@ class Direct_Metadata(Email2PDFTestCase):
self.assertEqual(Email2PDFTestCase.DEFAULT_TO, self.getMetadataField(timedFilename, "X-email2pdf-To")) self.assertEqual(Email2PDFTestCase.DEFAULT_TO, self.getMetadataField(timedFilename, "X-email2pdf-To"))
self.assertEqual("Hello!", self.getMetadataField(timedFilename, "Title")) self.assertEqual("Hello!", self.getMetadataField(timedFilename, "Title"))
self.assertEqual("email2pdf", self.getMetadataField(timedFilename, "Producer")) self.assertEqual("email2pdf", self.getMetadataField(timedFilename, "Producer"))
self.assertFalse(self.existsByTimeWarning())

View file

@ -17,29 +17,35 @@ class TestBasic(Email2PDFTestCase):
self.assertEqual(0, rc) self.assertEqual(0, rc)
self.assertTrue(self.existsByTime()) self.assertTrue(self.existsByTime())
self.assertEqual('', error) self.assertEqual('', error)
self.assertFalse(self.existsByTimeWarning())
def test_help(self): def test_help(self):
(rc, output, error) = self.invokeAsSubprocess(extraParams=['--help'], expectOutput=True) (rc, output, error) = self.invokeAsSubprocess(extraParams=['--help'], expectOutput=True)
self.assertEqual(0, rc) self.assertEqual(0, rc)
self.assertRegex(output, 'usage:') self.assertRegex(output, 'usage:')
self.assertEqual(error, '') self.assertEqual(error, '')
self.assertFalse(self.existsByTimeWarning())
def test_invalid_option(self): def test_invalid_option(self):
(rc, output, error) = self.invokeAsSubprocess(extraParams=['--invalid-option']) (rc, output, error) = self.invokeAsSubprocess(extraParams=['--invalid-option'])
self.assertEqual(2, rc) self.assertEqual(2, rc)
self.assertRegex(error, 'ERROR: unrecognized.*') self.assertRegex(error, 'ERROR: unrecognized.*')
self.assertFalse(self.existsByTimeWarning())
def test_dont_print_body(self): def test_dont_print_body(self):
(rc, output, error) = self.invokeAsSubprocess(extraParams=['--no-body']) (rc, output, error) = self.invokeAsSubprocess(extraParams=['--no-body'])
self.assertEqual(1, rc) self.assertEqual(1, rc)
self.assertFalse(self.existsByTime()) self.assertFalse(self.existsByTime())
self.assertRegex(error, "body.*any.*attachments") self.assertRegex(error, "body.*any.*attachments")
self.assertTrue(self.existsByTimeWarning())
self.assertRegex(self.getWarningFileContents(), "body.*any.*attachments")
def test_no_message_headers(self): def test_no_message_headers(self):
(rc, output, error) = self.invokeAsSubprocess() (rc, output, error) = self.invokeAsSubprocess()
self.assertEqual(0, rc) self.assertEqual(0, rc)
self.assertTrue(self.existsByTime()) self.assertTrue(self.existsByTime())
self.assertEqual('', error) self.assertEqual('', error)
self.assertFalse(self.existsByTimeWarning())
def test_withinputfile(self): def test_withinputfile(self):
self.addHeaders() self.addHeaders()
@ -47,6 +53,7 @@ class TestBasic(Email2PDFTestCase):
self.assertEqual(0, rc) self.assertEqual(0, rc)
self.assertTrue(self.existsByTime()) self.assertTrue(self.existsByTime())
self.assertEqual('', error) self.assertEqual('', error)
self.assertFalse(self.existsByTimeWarning())
def test_nosubject(self): def test_nosubject(self):
self.addHeaders(Email2PDFTestCase.DEFAULT_FROM, Email2PDFTestCase.DEFAULT_TO, None) self.addHeaders(Email2PDFTestCase.DEFAULT_FROM, Email2PDFTestCase.DEFAULT_TO, None)
@ -54,6 +61,7 @@ class TestBasic(Email2PDFTestCase):
self.assertEqual(0, rc) self.assertEqual(0, rc)
self.assertTrue(self.existsByTime()) self.assertTrue(self.existsByTime())
self.assertEqual('', error) self.assertEqual('', error)
self.assertFalse(self.existsByTimeWarning())
def test_plaincontent(self): def test_plaincontent(self):
self.addHeaders() self.addHeaders()
@ -63,6 +71,7 @@ class TestBasic(Email2PDFTestCase):
self.assertTrue(self.existsByTime()) self.assertTrue(self.existsByTime())
self.assertEqual('', error) self.assertEqual('', error)
self.assertRegex(self.getPDFText(self.getTimedFilename()), "Hello!") self.assertRegex(self.getPDFText(self.getTimedFilename()), "Hello!")
self.assertFalse(self.existsByTimeWarning())
def test_plaincontent_upsidedown(self): def test_plaincontent_upsidedown(self):
self.addHeaders() self.addHeaders()
@ -72,6 +81,7 @@ class TestBasic(Email2PDFTestCase):
self.assertTrue(self.existsByTime()) self.assertTrue(self.existsByTime())
self.assertEqual('', error) self.assertEqual('', error)
self.assertRegex(self.getPDFText(self.getTimedFilename()), "ɯɐɹƃoɹd ɟpdᄅlᴉɐɯǝ ǝɥʇ ɟo ʇsǝʇ ɐ sᴉ sᴉɥʇ ollǝH") self.assertRegex(self.getPDFText(self.getTimedFilename()), "ɯɐɹƃoɹd ɟpdᄅlᴉɐɯǝ ǝɥʇ ɟo ʇsǝʇ ɐ sᴉ sᴉɥʇ ollǝH")
self.assertFalse(self.existsByTimeWarning())
def test_plaincontent_poundsign_iso88591(self): def test_plaincontent_poundsign_iso88591(self):
self.addHeaders() self.addHeaders()
@ -82,6 +92,7 @@ class TestBasic(Email2PDFTestCase):
self.assertEqual('', error) self.assertEqual('', error)
self.assertTrue(os.path.exists(path)) self.assertTrue(os.path.exists(path))
self.assertRegex(self.getPDFText(path), "Hello - this email costs \xa35!") self.assertRegex(self.getPDFText(path), "Hello - this email costs \xa35!")
self.assertFalse(self.existsByTimeWarning())
def test_plaincontent_notrailingslash(self): def test_plaincontent_notrailingslash(self):
self.setPlainContent("Hello!") self.setPlainContent("Hello!")
@ -90,6 +101,7 @@ class TestBasic(Email2PDFTestCase):
self.assertEqual('', error) self.assertEqual('', error)
self.assertTrue(self.existsByTime("/tmp")) self.assertTrue(self.existsByTime("/tmp"))
self.assertRegex(self.getPDFText(self.getTimedFilename("/tmp/")), "Hello!") self.assertRegex(self.getPDFText(self.getTimedFilename("/tmp/")), "Hello!")
self.assertFalse(self.existsByTimeWarning())
def test_plaincontent_trailingslash(self): def test_plaincontent_trailingslash(self):
self.setPlainContent("Hello!") self.setPlainContent("Hello!")
@ -98,6 +110,7 @@ class TestBasic(Email2PDFTestCase):
self.assertEqual('', error) self.assertEqual('', error)
self.assertTrue(self.existsByTime("/tmp/")) self.assertTrue(self.existsByTime("/tmp/"))
self.assertRegex(self.getPDFText(self.getTimedFilename("/tmp/")), "Hello!") self.assertRegex(self.getPDFText(self.getTimedFilename("/tmp/")), "Hello!")
self.assertFalse(self.existsByTimeWarning())
def test_plaincontent_outputfileoverrides(self): def test_plaincontent_outputfileoverrides(self):
filename = os.path.join(self.examineDir, "outputFileOverrides.pdf") filename = os.path.join(self.examineDir, "outputFileOverrides.pdf")
@ -109,6 +122,7 @@ class TestBasic(Email2PDFTestCase):
self.assertFalse(self.existsByTime(pathname)) self.assertFalse(self.existsByTime(pathname))
self.assertTrue(os.path.exists(filename)) self.assertTrue(os.path.exists(filename))
self.assertRegex(self.getPDFText(filename), "Hello!") self.assertRegex(self.getPDFText(filename), "Hello!")
self.assertFalse(self.existsByTimeWarning())
def test_plaincontent_fileexist(self): def test_plaincontent_fileexist(self):
self.setPlainContent("Hello!") self.setPlainContent("Hello!")
@ -116,6 +130,7 @@ class TestBasic(Email2PDFTestCase):
(rc, output, error) = self.invokeAsSubprocess(outputFile=tmpfile.name, okToExist=True) (rc, output, error) = self.invokeAsSubprocess(outputFile=tmpfile.name, okToExist=True)
self.assertEqual(2, rc) self.assertEqual(2, rc)
self.assertRegex(error, "file.*exist") self.assertRegex(error, "file.*exist")
self.assertFalse(self.existsByTimeWarning())
def test_verbose(self): def test_verbose(self):
self.setPlainContent("Hello!") self.setPlainContent("Hello!")
@ -124,6 +139,7 @@ class TestBasic(Email2PDFTestCase):
self.assertNotEqual('', error) self.assertNotEqual('', error)
self.assertTrue(self.existsByTime()) self.assertTrue(self.existsByTime())
self.assertRegex(self.getPDFText(self.getTimedFilename()), "Hello!") self.assertRegex(self.getPDFText(self.getTimedFilename()), "Hello!")
self.assertFalse(self.existsByTimeWarning())
def test_veryverbose(self): def test_veryverbose(self):
self.setPlainContent("Hello!") self.setPlainContent("Hello!")
@ -132,3 +148,4 @@ class TestBasic(Email2PDFTestCase):
self.assertNotEqual('', error) self.assertNotEqual('', error)
self.assertTrue(self.existsByTime()) self.assertTrue(self.existsByTime())
self.assertRegex(self.getPDFText(self.getTimedFilename()), "Hello!") self.assertRegex(self.getPDFText(self.getTimedFilename()), "Hello!")
self.assertFalse(self.existsByTimeWarning())

View file

@ -17,6 +17,7 @@ class TestMIME(Email2PDFTestCase):
self.assertEqual(0, rc) self.assertEqual(0, rc)
self.assertEqual('', error) self.assertEqual('', error)
self.assertTrue(self.existsByTime()) self.assertTrue(self.existsByTime())
self.assertFalse(self.existsByTimeWarning())
def test_simple(self): def test_simple(self):
self.addHeaders() self.addHeaders()
@ -24,6 +25,7 @@ class TestMIME(Email2PDFTestCase):
self.assertEqual(0, rc) self.assertEqual(0, rc)
self.assertEqual('', error) self.assertEqual('', error)
self.assertTrue(self.existsByTime()) self.assertTrue(self.existsByTime())
self.assertFalse(self.existsByTimeWarning())
def test_nosubject(self): def test_nosubject(self):
self.addHeaders(Email2PDFTestCase.DEFAULT_FROM, Email2PDFTestCase.DEFAULT_TO, None) self.addHeaders(Email2PDFTestCase.DEFAULT_FROM, Email2PDFTestCase.DEFAULT_TO, None)
@ -31,6 +33,7 @@ class TestMIME(Email2PDFTestCase):
self.assertEqual(0, rc) self.assertEqual(0, rc)
self.assertEqual('', error) self.assertEqual('', error)
self.assertTrue(self.existsByTime()) self.assertTrue(self.existsByTime())
self.assertFalse(self.existsByTimeWarning())
def test_html(self): def test_html(self):
self.addHeaders() self.addHeaders()
@ -40,6 +43,7 @@ class TestMIME(Email2PDFTestCase):
self.assertEqual('', error) self.assertEqual('', error)
self.assertTrue(self.existsByTime()) self.assertTrue(self.existsByTime())
self.assertRegex(self.getPDFText(self.getTimedFilename()), "Some\sbasic\stextual\scontent") self.assertRegex(self.getPDFText(self.getTimedFilename()), "Some\sbasic\stextual\scontent")
self.assertFalse(self.existsByTimeWarning())
def test_attachtext_upsidedown(self): def test_attachtext_upsidedown(self):
self.addHeaders() self.addHeaders()
@ -49,6 +53,7 @@ class TestMIME(Email2PDFTestCase):
self.assertTrue(self.existsByTime()) self.assertTrue(self.existsByTime())
self.assertEqual('', error) self.assertEqual('', error)
self.assertRegex(self.getPDFText(self.getTimedFilename()), "ɯɐɹƃoɹd\sɟpdᄅlᴉɐɯǝ\sǝɥʇ\sɟo\sʇsǝʇ\\ssᴉ\ssᴉɥʇ\sollǝH") self.assertRegex(self.getPDFText(self.getTimedFilename()), "ɯɐɹƃoɹd\sɟpdᄅlᴉɐɯǝ\sǝɥʇ\sɟo\sʇsǝʇ\\ssᴉ\ssᴉɥʇ\sollǝH")
self.assertFalse(self.existsByTimeWarning())
def test_attachhtml_upsidedown(self): def test_attachhtml_upsidedown(self):
self.addHeaders() self.addHeaders()
@ -58,6 +63,7 @@ class TestMIME(Email2PDFTestCase):
self.assertTrue(self.existsByTime()) self.assertTrue(self.existsByTime())
self.assertEqual('', error) self.assertEqual('', error)
self.assertRegex(self.getPDFText(self.getTimedFilename()), "ɯɐɹƃoɹd\sɟpdᄅlᴉɐɯǝ\sǝɥʇ\sɟo\sʇsǝʇ\\ssᴉ\ssᴉɥʇ\sollǝH") self.assertRegex(self.getPDFText(self.getTimedFilename()), "ɯɐɹƃoɹd\sɟpdᄅlᴉɐɯǝ\sǝɥʇ\sɟo\sʇsǝʇ\\ssᴉ\ssᴉɥʇ\sollǝH")
self.assertFalse(self.existsByTimeWarning())
def test_html_entities_currency(self): def test_html_entities_currency(self):
path = os.path.join(self.examineDir, "htmlEntitiesCurrency.pdf") path = os.path.join(self.examineDir, "htmlEntitiesCurrency.pdf")
@ -68,6 +74,7 @@ class TestMIME(Email2PDFTestCase):
self.assertEqual('', error) self.assertEqual('', error)
self.assertTrue(os.path.exists(path)) self.assertTrue(os.path.exists(path))
self.assertRegex(self.getPDFText(path), "Pounds:\s£7.14,\sAnother\sPounds:\s£7.14") self.assertRegex(self.getPDFText(path), "Pounds:\s£7.14,\sAnother\sPounds:\s£7.14")
self.assertFalse(self.existsByTimeWarning())
def test_html_poundsign_iso88591(self): def test_html_poundsign_iso88591(self):
self.addHeaders() self.addHeaders()
@ -78,6 +85,7 @@ class TestMIME(Email2PDFTestCase):
self.assertEqual('', error) self.assertEqual('', error)
self.assertTrue(os.path.exists(path)) self.assertTrue(os.path.exists(path))
self.assertRegex(self.getPDFText(path), "Hello\s-\sthis\semail\scosts\s\xa35!") self.assertRegex(self.getPDFText(path), "Hello\s-\sthis\semail\scosts\s\xa35!")
self.assertFalse(self.existsByTimeWarning())
def test_text_poundsign_iso88591(self): def test_text_poundsign_iso88591(self):
self.addHeaders() self.addHeaders()
@ -88,6 +96,7 @@ class TestMIME(Email2PDFTestCase):
self.assertEqual('', error) self.assertEqual('', error)
self.assertTrue(os.path.exists(path)) self.assertTrue(os.path.exists(path))
self.assertRegex(self.getPDFText(path), "Hello\s-\sthis\semail\scosts\s\xa35!") self.assertRegex(self.getPDFText(path), "Hello\s-\sthis\semail\scosts\s\xa35!")
self.assertFalse(self.existsByTimeWarning())
def test_plaincontent_poundsign_utf8_8bit(self): def test_plaincontent_poundsign_utf8_8bit(self):
input_email = ("From: \"XYZ\" <xyz@abc.uk>\n" input_email = ("From: \"XYZ\" <xyz@abc.uk>\n"
@ -108,6 +117,7 @@ class TestMIME(Email2PDFTestCase):
self.assertEqual('', error) self.assertEqual('', error)
self.assertTrue(os.path.exists(path)) self.assertTrue(os.path.exists(path))
self.assertRegex(self.getPDFText(path), "Price\sis\s£45.00") self.assertRegex(self.getPDFText(path), "Price\sis\s£45.00")
self.assertFalse(self.existsByTimeWarning())
def test_plainandhtml(self): def test_plainandhtml(self):
self.addHeaders() self.addHeaders()
@ -118,6 +128,7 @@ class TestMIME(Email2PDFTestCase):
self.assertEqual('', error) self.assertEqual('', error)
self.assertTrue(self.existsByTime()) self.assertTrue(self.existsByTime())
self.assertRegex(self.getPDFText(self.getTimedFilename()), "Some\sbasic\sHTML\scontent") self.assertRegex(self.getPDFText(self.getTimedFilename()), "Some\sbasic\sHTML\scontent")
self.assertFalse(self.existsByTimeWarning())
def test_pdf(self): def test_pdf(self):
self.addHeaders() self.addHeaders()
@ -130,6 +141,7 @@ class TestMIME(Email2PDFTestCase):
self.assertTrue(os.path.exists(os.path.join(self.workingDir, filename))) self.assertTrue(os.path.exists(os.path.join(self.workingDir, filename)))
self.assertRegex(self.getPDFText(self.getTimedFilename()), "Some\sbasic\stextual\scontent") self.assertRegex(self.getPDFText(self.getTimedFilename()), "Some\sbasic\stextual\scontent")
self.assertRegex(self.getPDFText(os.path.join(self.workingDir, filename)), "Some\sPDF\scontent") self.assertRegex(self.getPDFText(os.path.join(self.workingDir, filename)), "Some\sPDF\scontent")
self.assertFalse(self.existsByTimeWarning())
def test_plaincontent_outputfileoverrides_with_attachments(self): def test_plaincontent_outputfileoverrides_with_attachments(self):
mainFilename = os.path.join(self.examineDir, "outputFileOverridesWithAttachments.pdf") mainFilename = os.path.join(self.examineDir, "outputFileOverridesWithAttachments.pdf")
@ -149,6 +161,7 @@ class TestMIME(Email2PDFTestCase):
self.assertTrue(os.path.exists(os.path.join(tempdir, attachmentFilename))) self.assertTrue(os.path.exists(os.path.join(tempdir, attachmentFilename)))
self.assertRegex(self.getPDFText(mainFilename), "Hello!") self.assertRegex(self.getPDFText(mainFilename), "Hello!")
self.assertRegex(self.getPDFText(os.path.join(tempdir, attachmentFilename)), "Some\sPDF\scontent") self.assertRegex(self.getPDFText(os.path.join(tempdir, attachmentFilename)), "Some\sPDF\scontent")
self.assertFalse(self.existsByTimeWarning())
def test_remote_image_does_exist(self): def test_remote_image_does_exist(self):
if self.isOnline: if self.isOnline:
@ -159,6 +172,7 @@ class TestMIME(Email2PDFTestCase):
self.assertEqual(0, rc) self.assertEqual(0, rc)
self.assertEqual('', error) self.assertEqual('', error)
self.assertTrue(os.path.exists(path)) self.assertTrue(os.path.exists(path))
self.assertFalse(self.existsByTimeWarning())
else: else:
self.skipTest("Not online.") self.skipTest("Not online.")
@ -171,6 +185,7 @@ class TestMIME(Email2PDFTestCase):
self.assertEqual(0, rc) self.assertEqual(0, rc)
self.assertEqual('', error) self.assertEqual('', error)
self.assertTrue(os.path.exists(path)) self.assertTrue(os.path.exists(path))
self.assertFalse(self.existsByTimeWarning())
else: else:
self.skipTest("Not online.") self.skipTest("Not online.")
@ -184,6 +199,7 @@ class TestMIME(Email2PDFTestCase):
self.assertTrue(self.existsByTime()) self.assertTrue(self.existsByTime())
self.assertTrue(os.path.exists(os.path.join(self.workingDir, imageFilename))) self.assertTrue(os.path.exists(os.path.join(self.workingDir, imageFilename)))
self.assertRegex(self.getPDFText(self.getTimedFilename()), "Hello!") self.assertRegex(self.getPDFText(self.getTimedFilename()), "Hello!")
self.assertFalse(self.existsByTimeWarning())
def test_non_embedded_image_jpeg_add_prefix_date(self): def test_non_embedded_image_jpeg_add_prefix_date(self):
self.addHeaders() self.addHeaders()
@ -195,6 +211,7 @@ class TestMIME(Email2PDFTestCase):
self.assertTrue(self.existsByTime()) self.assertTrue(self.existsByTime())
self.assertTrue(os.path.exists(os.path.join(self.workingDir, datetime.now().strftime("%Y-%m-%d-") + imageFilename))) self.assertTrue(os.path.exists(os.path.join(self.workingDir, datetime.now().strftime("%Y-%m-%d-") + imageFilename)))
self.assertRegex(self.getPDFText(self.getTimedFilename()), "Hello!") self.assertRegex(self.getPDFText(self.getTimedFilename()), "Hello!")
self.assertFalse(self.existsByTimeWarning())
def test_non_embedded_image_png(self): def test_non_embedded_image_png(self):
self.addHeaders() self.addHeaders()
@ -206,6 +223,7 @@ class TestMIME(Email2PDFTestCase):
self.assertTrue(self.existsByTime()) self.assertTrue(self.existsByTime())
self.assertTrue(os.path.exists(os.path.join(self.workingDir, imageFilename))) self.assertTrue(os.path.exists(os.path.join(self.workingDir, imageFilename)))
self.assertRegex(self.getPDFText(self.getTimedFilename()), "Hello!") self.assertRegex(self.getPDFText(self.getTimedFilename()), "Hello!")
self.assertFalse(self.existsByTimeWarning())
def test_non_embedded_image_and_pdf(self): def test_non_embedded_image_and_pdf(self):
self.addHeaders() self.addHeaders()
@ -220,6 +238,7 @@ class TestMIME(Email2PDFTestCase):
self.assertTrue(os.path.exists(os.path.join(self.workingDir, imageFilename))) self.assertTrue(os.path.exists(os.path.join(self.workingDir, imageFilename)))
self.assertRegex(self.getPDFText(self.getTimedFilename()), "Hello!") self.assertRegex(self.getPDFText(self.getTimedFilename()), "Hello!")
self.assertRegex(self.getPDFText(os.path.join(self.workingDir, filename)), "Some\sPDF\scontent") self.assertRegex(self.getPDFText(os.path.join(self.workingDir, filename)), "Some\sPDF\scontent")
self.assertFalse(self.existsByTimeWarning())
def test_2pdfs(self): def test_2pdfs(self):
self.addHeaders() self.addHeaders()
@ -237,6 +256,7 @@ class TestMIME(Email2PDFTestCase):
self.assertRegex(self.getPDFText(self.getTimedFilename()), "Some basic textual content") self.assertRegex(self.getPDFText(self.getTimedFilename()), "Some basic textual content")
self.assertRegex(self.getPDFText(os.path.join(self.workingDir, filename)), "Some PDF content") self.assertRegex(self.getPDFText(os.path.join(self.workingDir, filename)), "Some PDF content")
self.assertRegex(self.getPDFText(os.path.join(self.workingDir, filename2)), "Some More PDF content") self.assertRegex(self.getPDFText(os.path.join(self.workingDir, filename2)), "Some More PDF content")
self.assertFalse(self.existsByTimeWarning())
def test_pdf_exists(self): def test_pdf_exists(self):
self.addHeaders() self.addHeaders()
@ -259,6 +279,7 @@ class TestMIME(Email2PDFTestCase):
self.assertRegex(self.getPDFText(self.getTimedFilename()), "Some basic textual content") self.assertRegex(self.getPDFText(self.getTimedFilename()), "Some basic textual content")
self.assertIsNone(self.getPDFText(os.path.join(self.workingDir, filename))) self.assertIsNone(self.getPDFText(os.path.join(self.workingDir, filename)))
self.assertRegex(self.getPDFText(os.path.join(self.workingDir, uniqueName)), "Some PDF content") self.assertRegex(self.getPDFText(os.path.join(self.workingDir, uniqueName)), "Some PDF content")
self.assertFalse(self.existsByTimeWarning())
def test_2pdfs_oneexists(self): def test_2pdfs_oneexists(self):
self.addHeaders() self.addHeaders()
@ -288,3 +309,4 @@ class TestMIME(Email2PDFTestCase):
self.assertIsNone(self.getPDFText(os.path.join(self.workingDir, filename))) self.assertIsNone(self.getPDFText(os.path.join(self.workingDir, filename)))
self.assertRegex(self.getPDFText(os.path.join(self.workingDir, uniqueName)), "Some PDF content") self.assertRegex(self.getPDFText(os.path.join(self.workingDir, uniqueName)), "Some PDF content")
self.assertRegex(self.getPDFText(os.path.join(self.workingDir, filename2)), "Some More PDF content") self.assertRegex(self.getPDFText(os.path.join(self.workingDir, filename2)), "Some More PDF content")
self.assertFalse(self.existsByTimeWarning())