Use freezegun to fix test_plaincontent_timedfileexist - closes

This commit is contained in:
Andrew Ferrier 2014-12-25 00:08:47 +00:00
commit d6904a6b86
4 changed files with 45 additions and 19 deletions

View file

@ -14,9 +14,13 @@ RUN apt-get update && apt-get install -y git build-essential \
libxext6 \
libxrender1 \
python \
python3-dateutil \
python3-reportlab \
wget
WORKDIR /tmp
RUN wget http://mirrors.kernel.org/ubuntu/pool/universe/p/pypdf2/python3-pypdf2_1.23+git20141008-1_all.deb && dpkg -i python3-pypdf2*.deb
RUN wget http://mirrors.kernel.org/ubuntu/pool/universe/p/pypdf2/python3-pypdf2_1.23+git20141008-1_all.deb
RUN wget http://mirrors.kernel.org/ubuntu/pool/universe/f/freezegun/python3-freezegun_0.1.18-1_all.deb
RUN dpkg -i *.deb
RUN wget -O wkhtmltox.deb 'http://sourceforge.net/projects/wkhtmltopdf/files/0.12.1/wkhtmltox-0.12.1_linux-trusty-amd64.deb/download?use_mirror=garr#' && dpkg -i wkhtmltox*.deb
COPY . /tmp/email2pdf/
COPY docker/email2pdf/getmail /etc/cron.d/

View file

@ -78,14 +78,20 @@ There is a code coverage target in the Makefile. You'll need to have the
* Install all the package dependencies listed in the
[`control`](https://github.com/andrewferrier/email2pdf/blob/master/debian/DEBIAN/control)
file. In addition, to run the unit tests, you will need to install
`python3-reportlab` and `python3-pdfminer3k`. The second is not a standard
Debian/Ubuntu package, but there is a supplied Makefile target which will
create it for you using a Docker container - run `make buildpdfminer3k`.
file. In addition, to run the unit tests, you will need to install:
* `python3-freezegun` - only available in Ubuntu 14.10 onwards - see
http://packages.ubuntu.com/search?keywords=python3-freezegun.
* `python3-reportlab`
* `python3-pdfminer3k` (not a standard Debian/Ubuntu package, but there is a
supplied Makefile target which will create it for you using a Docker
container - run `make buildpdfminer3k`)
### OSX
* Install [Homebrew](http://brew.sh/)
* `brew install python3`
* `brew install libmagic`
* `pip3 install reportlab python-magic pypdf2 beautifulsoup4 lxml pdfminer3k`
* `pip3 install beautifulsoup4 freezegun lxml pdfminer3k pypdf2 python-magic reportlab`

View file

@ -152,19 +152,6 @@ class TestBasic(BaseTestClasses.Email2PDFTestCase):
finally:
os.unlink(f_path)
def test_plaincontent_timedfileexist(self):
self.setPlainContent("Hello!")
filename1 = self.getTimeStamp(datetime.now()) + ".pdf"
filename2 = self.getTimeStamp(datetime.now()) + "_1.pdf"
self.touch(os.path.join(self.workingDir, filename1))
(rc, output, error) = self.invokeAsSubprocess()
self.assertEqual(0, rc)
self.assertEqual('', error)
self.assertTrue(os.path.join(self.workingDir, filename1))
self.assertTrue(os.path.join(self.workingDir, filename2))
self.assertIsNone(self.getPDFText(os.path.join(self.workingDir, filename1)))
self.assertRegex(self.getPDFText(os.path.join(self.workingDir, filename2)), "Hello!")
def test_verbose(self):
self.setPlainContent("Hello!")
(rc, output, error) = self.invokeAsSubprocess(extraParams=['-v'])

View file

@ -0,0 +1,29 @@
from datetime import datetime
from email.message import Message
from freezegun import freeze_time
import os
import tempfile
from tests import BaseTestClasses
class Direct_Complex(BaseTestClasses.Email2PDFTestCase):
def setUp(self):
super(Direct_Complex, self).setUp()
self.msg = Message()
@freeze_time("2015-02-03 14:00:00")
def test_plaincontent_timedfileexist(self):
self.setPlainContent("Hello!")
filename1 = os.path.join(self.workingDir, self.getTimeStamp(datetime.now()) + ".pdf")
filename2 = os.path.join(self.workingDir, self.getTimeStamp(datetime.now()) + "_1.pdf")
self.touch(os.path.join(self.workingDir, filename1))
self.assertTrue(os.path.exists(filename1))
self.assertFalse(os.path.exists(filename2))
error = self.invokeDirectly()
self.assertEqual('', error)
self.assertTrue(os.path.exists(filename1))
self.assertTrue(os.path.exists(filename2))
self.assertIsNone(self.getPDFText(filename1))
self.assertRegex(self.getPDFText(filename2), "Hello!")