]> git.ozlabs.org Git - patchwork/blobdiff - patchwork/tests/test_patchparser.py
trivial: Remove Python < 2.5 code
[patchwork] / patchwork / tests / test_patchparser.py
index 119936acab1e44519f0e32afa970ebb3cbb0361a..a49bf9b8d79a4bc095cf1d3cb7ac224e5fbfb241 100644 (file)
@@ -25,19 +25,16 @@ from patchwork.models import Project, Person, Patch, Comment, State, \
 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'
@@ -246,6 +243,7 @@ class MultipleProjectPatchTest(TestCase):
     """ 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>'
@@ -449,6 +447,7 @@ class NoNewlineAtEndOfFilePatchTest(MBoxPatchTest):
         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"
@@ -494,6 +493,7 @@ class DelegateRequestTest(TestCase):
         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"
@@ -552,3 +552,68 @@ class InitialPatchStateTest(TestCase):
     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')