Mercurial > p > roundup > code
view test/test_jinja2.py @ 5123:226052e0cc4c
Fixed incorrect header comparisons in compareMessages. It iterated
over every header in the new message and didn't detect when the new
message was missing a header that was in the reference message.
I have fixed that by retrieving all header names from the new and
reference (old) messages, lower casing the list and comparing them
(with a fixup for the x-roundup-version header). If the list of
headers isn't identical, I throw an error.
Also the Content-Type mime values are now being compared as well to
make sure the new message being generates matches the reference mime
content type.
Of course this broke some tests. A number of them were using
compareMessages when they should have been using assertEqual. That was
an easy fix.
Also some messages when retrieved from the content property are
missing trailing newlines. I think this is part of the signature
removal algorithm. This may be a bug or intended. In any case I am
fixing the tests to remove trailing newlines.
However I have a handful of tests that are not that obvious.
Two of are
test_mailgw.py:testMultipartCharsetLatin1AttachFile
test_mailgw.py:testMultipartCharsetUTF8AttachFile
I removed a:
Content-Transfer-Encoding: quoted-printable
message header from the reference message in both cases. The message
content-type was multipart/mixed and it had no content that was
outside of a mime part. Sending a message like this using mailx and
nmh resulted in an email being delivered that was missing a
Content-Transfer-Encoding, so I think I am ok here.
The last broken test also started as a missing
Content-Transfer-Encoding header. But there was a twist:
test-mailgw.py:testMultipartRFC822
had a reference copy with a mime type of text/plain which requires a
Content-Transfer-Encoding. However I never looked at the mime type of
the mail being generated. The generated mail was of type
multipart/mixed. So I changed the reference copy to remove the
Content-Transfer-Encoding and changed the reference mime type to
multipart/mixed.
Now all the mailgw tests are passing. With luck I haven't encoded an
invalid test.
Also did one minor spelling correction.
| author | John Rouillard <rouilj@ieee.org> |
|---|---|
| date | Sun, 03 Jul 2016 18:54:18 -0400 |
| parents | 364c54991861 |
| children | 198b6e810c67 |
line wrap: on
line source
#-*- encoding: utf8 -*- """ Testing the jinja2 templating engine of roundup-tracker. Copyright: 2016 Intevation GmbH. Author: Bernhard E. Reiter <bernhard@intevation.de> This module is Free Software under the Roundup licensing of 1.5, see the COPYING.txt file coming with Roundup. Just a test file template for now. """ import shutil # only, needed for tearDown. TODO: Remove when refactored. import unittest import db_test_base TESTSUITE_IDENTIFIER='jinja2' class TestCase_Zero(unittest.TestCase): def test_zero(self): self.assertEqual(True, True) class Jinja2Test(object): """Sets up and tears down an instance with database contents. Setup and teardown modelled after the use of db_test_base by several modules like test_xmlrpc and test_userauditor. TODO: Should probably be moved to a base case in db_test_base.py. """ backend = None # can be used to create tests per backend, see test_xmlrpc def setUp(self): self.dirname = '_test_' + TESTSUITE_IDENTIFIER self.instance = db_test_base.setupTracker(self.dirname, self.backend) self.db = self.instance.open('admin') def tearDown(self): self.db.close() try: shutil.rmtree(self.dirname) except OSError, error: if error.errno not in (errno.ENOENT, errno.ESRCH): raise def test_zero(self): """Do nothing just make sure that setup and teardown works.""" pass # only using one database backend for now, not sure if doing all # backends will keep the test focussed enough to be useful for the used # computing time. Would be okay to change in the future. class anydbmJinja2Test(Jinja2Test, unittest.TestCase): backend = 'anydbm' # vim: ts=4 et sts=4 sw=4 ai :
