# along with Patchwork; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-import unittest
import os
from email import message_from_string
+from django.test import TestCase
from patchwork.models import Project, Person, Patch, Comment, State, \
get_default_initial_patch_state
from patchwork.tests.utils import read_patch, read_mail, create_email, \
# Python 2.4 compatibility
from email.MIMEText import MIMEText
-class PatchTest(unittest.TestCase):
+class PatchTest(TestCase):
default_sender = defaults.sender
default_subject = defaults.subject
project = defaults.project
patch_filename = '0001-add-line.patch'
test_comment = 'Test comment\nmore comment\n---\nUpdate: test update'
-class SenderEncodingTest(unittest.TestCase):
+class SenderEncodingTest(TestCase):
sender_name = u'example user'
sender_email = 'user@example.com'
from_header = 'example user <user@example.com>'
subject = u'test s\xfcbject'
subject_header = 'test =?utf-8?q?s=c3=bcbject?='
-class SenderCorrelationTest(unittest.TestCase):
+class SenderCorrelationTest(TestCase):
existing_sender = 'Existing Sender <existing@example.com>'
non_existing_sender = 'Non-existing Sender <nonexisting@example.com>'
def tearDown(self):
self.person.delete()
-class MultipleProjectPatchTest(unittest.TestCase):
+class MultipleProjectPatchTest(TestCase):
""" Test that patches sent to multiple patchwork projects are
handled correctly """
# and the one we parsed in setUp()
self.assertEquals(Comment.objects.filter(patch = patch).count(), 2)
-class ListIdHeaderTest(unittest.TestCase):
+class ListIdHeaderTest(TestCase):
""" Test that we parse List-Id headers from mails correctly """
def setUp(self):
self.project = Project(linkname = 'test-project-1', name = 'Project 1',
class GitPullHTTPUrlTest(GitPullTest):
mail_file = '0006-git-pull-request-http.mbox'
+class GitRenameOnlyTest(MBoxPatchTest):
+ mail_file = '0008-git-rename.mbox'
+
+ def testGitRename(self):
+ (patch, comment) = find_content(self.project, self.mail)
+ self.assertTrue(patch is not None)
+ self.assertTrue(comment is not None)
+ self.assertEqual(patch.content.count("\nrename from "), 2)
+ self.assertEqual(patch.content.count("\nrename to "), 2)
+
+class GitRenameWithDiffTest(MBoxPatchTest):
+ mail_file = '0009-git-rename-with-diff.mbox'
+
+ def testGitRename(self):
+ (patch, comment) = find_content(self.project, self.mail)
+ self.assertTrue(patch is not None)
+ self.assertTrue(comment is not None)
+ self.assertEqual(patch.content.count("\nrename from "), 2)
+ self.assertEqual(patch.content.count("\nrename to "), 2)
+ self.assertEqual(patch.content.count('\n-a\n+b'), 1)
+
class CVSFormatPatchTest(MBoxPatchTest):
mail_file = '0007-cvs-format-diff.mbox'
self.assertTrue(comment is not None)
self.assertTrue(patch.content.startswith('Index'))
-class DelegateRequestTest(unittest.TestCase):
+class DelegateRequestTest(TestCase):
patch_filename = '0001-add-line.patch'
msgid = '<1@example.com>'
invalid_delegate_email = "nobody"
email['Message-Id'] = self.msgid
return email
+ def _assertDelegate(self, delegate):
+ query = Patch.objects.filter(project=self.p1)
+ self.assertEquals(query.count(), 1)
+ self.assertEquals(query[0].delegate, delegate)
+
def testDelegate(self):
email = self.get_email()
email['X-Patchwork-Delegate'] = self.user.email
parse_mail(email)
- self.assertEquals(Patch.objects.filter(project=self.p1).count(), 1)
- self.assertEquals(Patch.objects.get(pk=1).delegate, self.user)
+ self._assertDelegate(self.user)
def testNoDelegate(self):
email = self.get_email()
parse_mail(email)
- self.assertEquals(Patch.objects.filter(project=self.p1).count(), 1)
- self.assertEquals(Patch.objects.get(pk=1).delegate, None)
+ self._assertDelegate(None)
def testInvalidDelegateFallsBackToNoDelegate(self):
email = self.get_email()
email['X-Patchwork-Delegate'] = self.invalid_delegate_email
parse_mail(email)
- self.assertEquals(Patch.objects.filter(project=self.p1).count(), 1)
- self.assertEquals(Patch.objects.get(pk=1).delegate, None)
+ self._assertDelegate(None)
def tearDown(self):
self.p1.delete()
self.user.delete()
-class InitialPatchStateTest(unittest.TestCase):
+class InitialPatchStateTest(TestCase):
patch_filename = '0001-add-line.patch'
msgid = '<1@example.com>'
invalid_state_name = "Nonexistent Test State"
email['Message-Id'] = self.msgid
return email
+ def _assertState(self, state):
+ query = Patch.objects.filter(project=self.p1)
+ self.assertEquals(query.count(), 1)
+ self.assertEquals(query[0].state, state)
+
def testNonDefaultStateIsActuallyNotTheDefaultState(self):
self.assertNotEqual(self.default_state, self.nondefault_state)
email = self.get_email()
email['X-Patchwork-State'] = self.nondefault_state.name
parse_mail(email)
- self.assertEquals(Patch.objects.filter(project=self.p1).count(), 1)
- self.assertEquals(Patch.objects.get(pk=1).state, self.nondefault_state)
+ self._assertState(self.nondefault_state)
def testExplicitDefaultStateRequest(self):
email = self.get_email()
email['X-Patchwork-State'] = self.default_state.name
parse_mail(email)
- self.assertEquals(Patch.objects.filter(project=self.p1).count(), 1)
- self.assertEquals(Patch.objects.get(pk=1).state, self.default_state)
+ self._assertState(self.default_state)
def testImplicitDefaultStateRequest(self):
email = self.get_email()
parse_mail(email)
- self.assertEquals(Patch.objects.filter(project=self.p1).count(), 1)
- self.assertEquals(Patch.objects.get(pk=1).state, self.default_state)
+ self._assertState(self.default_state)
def testInvalidTestStateDoesNotExist(self):
with self.assertRaises(State.DoesNotExist):
email = self.get_email()
email['X-Patchwork-State'] = self.invalid_state_name
parse_mail(email)
- self.assertEquals(Patch.objects.filter(project=self.p1).count(), 1)
- self.assertEquals(Patch.objects.get(pk=1).state, self.default_state)
+ self._assertState(self.default_state)
def tearDown(self):
self.p1.delete()