X-Git-Url: https://git.ozlabs.org/?a=blobdiff_plain;f=patchwork%2Ftests%2Ftest_patchparser.py;h=a49bf9b8d79a4bc095cf1d3cb7ac224e5fbfb241;hb=ed3250d636b024973f527899ee6bc7210ccfb5b4;hp=119936acab1e44519f0e32afa970ebb3cbb0361a;hpb=ad2762cf775a8dde508de47164d6429f3fd724f1;p=patchwork diff --git a/patchwork/tests/test_patchparser.py b/patchwork/tests/test_patchparser.py index 119936a..a49bf9b 100644 --- a/patchwork/tests/test_patchparser.py +++ b/patchwork/tests/test_patchparser.py @@ -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 \n' + + 'Reviewed-by: Test User \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')