from patchwork.tests.utils import read_patch, read_mail, create_email, \
defaults, create_user
-try:
- from email.mime.text import MIMEText
-except ImportError:
- # Python 2.4 compatibility
- from email.MIMEText import MIMEText
+from email.mime.text import MIMEText
class PatchTest(TestCase):
+ fixtures = ['default_states']
default_sender = defaults.sender
default_subject = defaults.subject
project = defaults.project
from patchwork.bin.parsemail import find_content, find_author, find_project, \
- parse_mail
+ parse_mail, split_prefixes, clean_subject
class InlinePatchTest(PatchTest):
patch_filename = '0001-add-line.patch'
""" Test that patches sent to multiple patchwork projects are
handled correctly """
+ fixtures = ['default_states']
test_comment = 'Test Comment'
patch_filename = '0001-add-line.patch'
msgid = '<1@example.com>'
self.assertEqual(2, patch.content.count('\ No newline at end of file'))
class DelegateRequestTest(TestCase):
+ fixtures = ['default_states']
patch_filename = '0001-add-line.patch'
msgid = '<1@example.com>'
invalid_delegate_email = "nobody"
self.user.delete()
class InitialPatchStateTest(TestCase):
+ fixtures = ['default_states']
patch_filename = '0001-add-line.patch'
msgid = '<1@example.com>'
invalid_state_name = "Nonexistent Test State"
def tearDown(self):
self.p1.delete()
self.user.delete()
+
+class ParseInitialTagsTest(PatchTest):
+ patch_filename = '0001-add-line.patch'
+ test_comment = ('test comment\n\n' +
+ 'Tested-by: Test User <test@example.com>\n' +
+ 'Reviewed-by: Test User <test@example.com>\n')
+ fixtures = ['default_tags', 'default_states']
+
+ def setUp(self):
+ project = defaults.project
+ project.listid = 'test.example.com'
+ project.save()
+ self.orig_patch = read_patch(self.patch_filename)
+ email = create_email(self.test_comment + '\n' + self.orig_patch,
+ project = project)
+ email['Message-Id'] = '<1@example.com>'
+ parse_mail(email)
+
+ def testTags(self):
+ self.assertEquals(Patch.objects.count(), 1)
+ patch = Patch.objects.all()[0]
+ self.assertEquals(patch.patchtag_set.filter(
+ tag__name='Acked-by').count(), 0)
+ self.assertEquals(patch.patchtag_set.get(
+ tag__name='Reviewed-by').count, 1)
+ self.assertEquals(patch.patchtag_set.get(
+ tag__name='Tested-by').count, 1)
+
+class PrefixTest(TestCase):
+
+ def testSplitPrefixes(self):
+ self.assertEquals(split_prefixes('PATCH'), ['PATCH'])
+ self.assertEquals(split_prefixes('PATCH,RFC'), ['PATCH', 'RFC'])
+ self.assertEquals(split_prefixes(''), [])
+ self.assertEquals(split_prefixes('PATCH,'), ['PATCH'])
+ self.assertEquals(split_prefixes('PATCH '), ['PATCH'])
+ self.assertEquals(split_prefixes('PATCH,RFC'), ['PATCH', 'RFC'])
+ self.assertEquals(split_prefixes('PATCH 1/2'), ['PATCH', '1/2'])
+
+class SubjectTest(TestCase):
+
+ def testCleanSubject(self):
+ self.assertEquals(clean_subject('meep'), 'meep')
+ self.assertEquals(clean_subject('Re: meep'), 'meep')
+ self.assertEquals(clean_subject('[PATCH] meep'), 'meep')
+ self.assertEquals(clean_subject('[PATCH] meep \n meep'), 'meep meep')
+ self.assertEquals(clean_subject('[PATCH RFC] meep'), '[RFC] meep')
+ self.assertEquals(clean_subject('[PATCH,RFC] meep'), '[RFC] meep')
+ self.assertEquals(clean_subject('[PATCH,1/2] meep'), '[1/2] meep')
+ self.assertEquals(clean_subject('[PATCH RFC 1/2] meep'),
+ '[RFC,1/2] meep')
+ self.assertEquals(clean_subject('[PATCH] [RFC] meep'),
+ '[RFC] meep')
+ self.assertEquals(clean_subject('[PATCH] [RFC,1/2] meep'),
+ '[RFC,1/2] meep')
+ self.assertEquals(clean_subject('[PATCH] [RFC] [1/2] meep'),
+ '[RFC,1/2] meep')
+ self.assertEquals(clean_subject('[PATCH] rewrite [a-z] regexes'),
+ 'rewrite [a-z] regexes')
+ self.assertEquals(clean_subject('[PATCH] [RFC] rewrite [a-z] regexes'),
+ '[RFC] rewrite [a-z] regexes')
+ self.assertEquals(clean_subject('[foo] [bar] meep', ['foo']),
+ '[bar] meep')
+ self.assertEquals(clean_subject('[FOO] [bar] meep', ['foo']),
+ '[bar] meep')