diff options
author | Jeremy Kerr <jk@ozlabs.org> | 2009-08-01 16:05:37 +1000 |
---|---|---|
committer | Jeremy Kerr <jk@ozlabs.org> | 2009-08-01 16:08:05 +1000 |
commit | 7d9334e879857f8a380bc9509b6cbf9972cecc25 (patch) | |
tree | 2a9e0d876b62d569bb829ebbd083f849f8c86d7d /apps/patchwork/tests | |
parent | d9afef53a2102e5a4deba9953749e2bb5c8df486 (diff) | |
download | patchwork-7d9334e879857f8a380bc9509b6cbf9972cecc25.tar.bz2 patchwork-7d9334e879857f8a380bc9509b6cbf9972cecc25.tar.xz |
parser: allow short-form List-Id headers
Some lists (eg, nongnu.org) have short-form List-Id headers. For
example:
List-Id: qemu-devel.nongnu.org
Although RFC 2919 prescribes that:
list-id-header = "List-ID:" [phrase] "<" list-id ">" CRLF
we should allow for these headers anyway.
Based on an original patch from "J.H." <warthog9@kernel.org>.
Signed-off-by: Jeremy Kerr <jk@ozlabs.org>
Diffstat (limited to 'apps/patchwork/tests')
-rw-r--r-- | apps/patchwork/tests/patchparser.py | 49 |
1 files changed, 48 insertions, 1 deletions
diff --git a/apps/patchwork/tests/patchparser.py b/apps/patchwork/tests/patchparser.py index 0fad67b..f6909ce 100644 --- a/apps/patchwork/tests/patchparser.py +++ b/apps/patchwork/tests/patchparser.py @@ -34,7 +34,8 @@ class PatchTest(unittest.TestCase): default_subject = defaults.subject project = defaults.project -from patchwork.bin.parsemail import find_content, find_author, parse_mail +from patchwork.bin.parsemail import find_content, find_author, find_project, \ + parse_mail class InlinePatchTest(PatchTest): patch_filename = '0001-add-line.patch' @@ -275,3 +276,49 @@ class MultipleProjectPatchCommentTest(MultipleProjectPatchTest): # and the one we parsed in setUp() self.assertEquals(Comment.objects.filter(patch = patch).count(), 2) +class ListIdHeaderTest(unittest.TestCase): + """ Test that we parse List-Id headers from mails correctly """ + def setUp(self): + self.project = Project(linkname = 'test-project-1', name = 'Project 1', + listid = '1.example.com', listemail='1@example.com') + self.project.save() + + def testNoListId(self): + email = MIMEText('') + project = find_project(email) + self.assertEquals(project, None) + + def testBlankListId(self): + email = MIMEText('') + email['List-Id'] = '' + project = find_project(email) + self.assertEquals(project, None) + + def testWhitespaceListId(self): + email = MIMEText('') + email['List-Id'] = ' ' + project = find_project(email) + self.assertEquals(project, None) + + def testSubstringListId(self): + email = MIMEText('') + email['List-Id'] = 'example.com' + project = find_project(email) + self.assertEquals(project, None) + + def testShortListId(self): + """ Some mailing lists have List-Id headers in short formats, where it + is only the list ID itself (without enclosing angle-brackets). """ + email = MIMEText('') + email['List-Id'] = self.project.listid + project = find_project(email) + self.assertEquals(project, self.project) + + def testLongListId(self): + email = MIMEText('') + email['List-Id'] = 'Test text <%s>' % self.project.listid + project = find_project(email) + self.assertEquals(project, self.project) + + def tearDown(self): + self.project.delete() |