]> git.ozlabs.org Git - patchwork/blobdiff - patchwork/tests/test_patchparser.py
Add missing explicit state fixture load
[patchwork] / patchwork / tests / test_patchparser.py
index 119936acab1e44519f0e32afa970ebb3cbb0361a..58689bbd86c98d5a990d9e911eeb54b5ffa48aaf 100644 (file)
@@ -32,12 +32,13 @@ except ImportError:
     from email.MIMEText 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 +247,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 +451,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 +497,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 +556,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')