]> git.ozlabs.org Git - patchwork/commitdiff
patchwork: Explicitly load states fixtures
authorJeremy Kerr <jk@ozlabs.org>
Fri, 5 Jun 2015 06:32:26 +0000 (14:32 +0800)
committerJeremy Kerr <jk@ozlabs.org>
Fri, 5 Jun 2015 06:37:09 +0000 (14:37 +0800)
Apps with migrations will no longer load the initial_data fixtures by
default. In order to prepare to add migrations to patchwork, rename the
initial_data fixture to default_states (to match the default_tags
fixture), and explicitly load them in tests that require them.

Also, include this step in the INSTALL document.

Signed-off-by: Jeremy Kerr <jk@ozlabs.org>
12 files changed:
docs/INSTALL
patchwork/fixtures/default_states.xml [new file with mode: 0644]
patchwork/fixtures/initial_data.xml [deleted file]
patchwork/tests/test_bundles.py
patchwork/tests/test_encodings.py
patchwork/tests/test_expiry.py
patchwork/tests/test_list.py
patchwork/tests/test_mboxviews.py
patchwork/tests/test_notifications.py
patchwork/tests/test_patchparser.py
patchwork/tests/test_tags.py
patchwork/tests/test_updates.py

index 611fbb4258404acc58c3a5e380ce39cfd02cb230..bd9577023deed4e75d72be67575e0599f40f7e62 100644 (file)
@@ -148,10 +148,10 @@ in brackets):
 
      PYTHONPATH=lib/python ./manage.py collectstatic
 
-    If you'd like to use the default tag set (Acked-by, Reviewed-by and
-    Tested-by), then load these default tags:
+    You'll also need to load the initial tags and states into the
+    patchwork database:
 
-     PYTHONPATH=lib/python ./manage.py loaddata default_tags
+     PYTHONPATH=lib/python ./manage.py loaddata default_tags default_states
 
     Finally, add privileges for your mail and web users. This is only needed if
     you use the ident-based approach. If you use password-based database
diff --git a/patchwork/fixtures/default_states.xml b/patchwork/fixtures/default_states.xml
new file mode 100644 (file)
index 0000000..86e1105
--- /dev/null
@@ -0,0 +1,55 @@
+<?xml version="1.0" encoding="utf-8"?>
+<django-objects version="1.0">
+
+  <!-- default states -->
+  <object pk="1" model="patchwork.state">
+    <field type="CharField" name="name">New</field>
+    <field type="IntegerField" name="ordering">0</field>
+    <field type="BooleanField" name="action_required">True</field>
+  </object>
+  <object pk="2" model="patchwork.state">
+    <field type="CharField" name="name">Under Review</field>
+    <field type="IntegerField" name="ordering">1</field>
+    <field type="BooleanField" name="action_required">True</field>
+  </object>
+  <object pk="3" model="patchwork.state">
+    <field type="CharField" name="name">Accepted</field>
+    <field type="IntegerField" name="ordering">2</field>
+    <field type="BooleanField" name="action_required">False</field>
+  </object>
+  <object pk="4" model="patchwork.state">
+    <field type="CharField" name="name">Rejected</field>
+    <field type="IntegerField" name="ordering">3</field>
+    <field type="BooleanField" name="action_required">False</field>
+  </object>
+  <object pk="5" model="patchwork.state">
+    <field type="CharField" name="name">RFC</field>
+    <field type="IntegerField" name="ordering">4</field>
+    <field type="BooleanField" name="action_required">False</field>
+  </object>
+  <object pk="6" model="patchwork.state">
+    <field type="CharField" name="name">Not Applicable</field>
+    <field type="IntegerField" name="ordering">5</field>
+    <field type="BooleanField" name="action_required">False</field>
+  </object>
+  <object pk="7" model="patchwork.state">
+    <field type="CharField" name="name">Changes Requested</field>
+    <field type="IntegerField" name="ordering">6</field>
+    <field type="BooleanField" name="action_required">False</field>
+  </object>
+  <object pk="8" model="patchwork.state">
+    <field type="CharField" name="name">Awaiting Upstream</field>
+    <field type="IntegerField" name="ordering">7</field>
+    <field type="BooleanField" name="action_required">False</field>
+  </object>
+  <object pk="9" model="patchwork.state">
+    <field type="CharField" name="name">Superseded</field>
+    <field type="IntegerField" name="ordering">8</field>
+    <field type="BooleanField" name="action_required">False</field>
+  </object>
+  <object pk="10" model="patchwork.state">
+    <field type="CharField" name="name">Deferred</field>
+    <field type="IntegerField" name="ordering">9</field>
+    <field type="BooleanField" name="action_required">False</field>
+  </object>
+</django-objects>
diff --git a/patchwork/fixtures/initial_data.xml b/patchwork/fixtures/initial_data.xml
deleted file mode 100644 (file)
index 86e1105..0000000
+++ /dev/null
@@ -1,55 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<django-objects version="1.0">
-
-  <!-- default states -->
-  <object pk="1" model="patchwork.state">
-    <field type="CharField" name="name">New</field>
-    <field type="IntegerField" name="ordering">0</field>
-    <field type="BooleanField" name="action_required">True</field>
-  </object>
-  <object pk="2" model="patchwork.state">
-    <field type="CharField" name="name">Under Review</field>
-    <field type="IntegerField" name="ordering">1</field>
-    <field type="BooleanField" name="action_required">True</field>
-  </object>
-  <object pk="3" model="patchwork.state">
-    <field type="CharField" name="name">Accepted</field>
-    <field type="IntegerField" name="ordering">2</field>
-    <field type="BooleanField" name="action_required">False</field>
-  </object>
-  <object pk="4" model="patchwork.state">
-    <field type="CharField" name="name">Rejected</field>
-    <field type="IntegerField" name="ordering">3</field>
-    <field type="BooleanField" name="action_required">False</field>
-  </object>
-  <object pk="5" model="patchwork.state">
-    <field type="CharField" name="name">RFC</field>
-    <field type="IntegerField" name="ordering">4</field>
-    <field type="BooleanField" name="action_required">False</field>
-  </object>
-  <object pk="6" model="patchwork.state">
-    <field type="CharField" name="name">Not Applicable</field>
-    <field type="IntegerField" name="ordering">5</field>
-    <field type="BooleanField" name="action_required">False</field>
-  </object>
-  <object pk="7" model="patchwork.state">
-    <field type="CharField" name="name">Changes Requested</field>
-    <field type="IntegerField" name="ordering">6</field>
-    <field type="BooleanField" name="action_required">False</field>
-  </object>
-  <object pk="8" model="patchwork.state">
-    <field type="CharField" name="name">Awaiting Upstream</field>
-    <field type="IntegerField" name="ordering">7</field>
-    <field type="BooleanField" name="action_required">False</field>
-  </object>
-  <object pk="9" model="patchwork.state">
-    <field type="CharField" name="name">Superseded</field>
-    <field type="IntegerField" name="ordering">8</field>
-    <field type="BooleanField" name="action_required">False</field>
-  </object>
-  <object pk="10" model="patchwork.state">
-    <field type="CharField" name="name">Deferred</field>
-    <field type="IntegerField" name="ordering">9</field>
-    <field type="BooleanField" name="action_required">False</field>
-  </object>
-</django-objects>
index 38f3a2c48a39bf69d265b40e52ec44ff16f3d05c..a9ee8dd5786353cc0c7c76c1acb360eb63a98c17 100644 (file)
@@ -54,6 +54,7 @@ class BundleListTest(TestCase):
         self.user.delete()
 
 class BundleTestBase(TestCase):
+    fixtures = ['default_states']
     def setUp(self, patch_count=3):
         patch_names = ['testpatch%d' % (i) for i in range(1, patch_count+1)]
         self.user = create_user()
index b9032bb7901f913d3a6ec3f9fa1cffbe08cbb871..b639078df0a89d41ff4d9220cacf9e687a88eb53 100644 (file)
@@ -26,6 +26,7 @@ from django.test import TestCase
 from django.test.client import Client
 
 class UTF8PatchViewTest(TestCase):
+    fixtures = ['default_states']
     patch_filename = '0002-utf-8.patch'
     patch_encoding = 'utf-8'
 
@@ -63,6 +64,7 @@ class UTF8PatchViewTest(TestCase):
         defaults.project.delete()
 
 class UTF8HeaderPatchViewTest(UTF8PatchViewTest):
+    fixtures = ['default_states']
     patch_filename = '0002-utf-8.patch'
     patch_encoding = 'utf-8'
     patch_author_name = u'P\xe4tch Author'
index 844ed4b8c87a837f7095ba593ebb492058e5a945..ca22970ccddf9fd5fadece47b4cf9dcc8255ab29 100644 (file)
@@ -26,6 +26,7 @@ from patchwork.tests.utils import create_user, defaults
 from patchwork.utils import do_expiry
 
 class TestRegistrationExpiry(TestCase):
+    fixtures = ['default_states']
 
     def register(self, date):
         user = create_user()
index a795a5f4825f43de19aa115fc2773f67e5167935..c7fbbea23b6b0eb048f77fe2aec88cd23be1c467 100644 (file)
@@ -42,6 +42,7 @@ class EmptyPatchListTest(TestCase):
         self.assertNotContains(response, 'tbody')
 
 class PatchOrderTest(TestCase):
+    fixtures = ['default_states']
 
     d = datetime.datetime
     patchmeta = [
index 0e57f4260668846a050236517cc8a31e2d377218..02d04cbe80fd2491bfc2ade2c640d5cc36578609 100644 (file)
@@ -29,6 +29,8 @@ from patchwork.models import Patch, Comment, Person
 from patchwork.tests.utils import defaults, create_user, find_in_context
 
 class MboxPatchResponseTest(TestCase):
+    fixtures = ['default_states']
+
     """ Test that the mbox view appends the Acked-by from a patch comment """
     def setUp(self):
         defaults.project.save()
@@ -56,6 +58,8 @@ class MboxPatchResponseTest(TestCase):
                 'Acked-by: 1\nAcked-by: 2\n')
 
 class MboxPatchSplitResponseTest(TestCase):
+    fixtures = ['default_states']
+
     """ Test that the mbox view appends the Acked-by from a patch comment,
         and places it before an '---' update line. """
     def setUp(self):
@@ -84,6 +88,8 @@ class MboxPatchSplitResponseTest(TestCase):
                 'Acked-by: 1\nAcked-by: 2\n')
 
 class MboxPassThroughHeaderTest(TestCase):
+    fixtures = ['default_states']
+
     """ Test that we see 'Cc' and 'To' headers passed through from original
         message to mbox view """
 
@@ -122,6 +128,8 @@ class MboxPassThroughHeaderTest(TestCase):
         self.assertContains(response, self.date_header)
 
 class MboxBrokenFromHeaderTest(TestCase):
+    fixtures = ['default_states']
+
     """ Test that a person with characters outside ASCII in his name do
         produce correct From header. As RFC 2822 state we must retain the
         <user@doamin.tld> format for the mail while the name part may be coded
@@ -145,6 +153,8 @@ class MboxBrokenFromHeaderTest(TestCase):
         self.assertContains(response, from_email)
 
 class MboxDateHeaderTest(TestCase):
+    fixtures = ['default_states']
+
     """ Test that the date provided in the patch mail view is correct """
 
     def setUp(self):
@@ -181,6 +191,8 @@ class MboxDateHeaderTest(TestCase):
         self.assertEqual(mail_date, date)
 
 class MboxCommentPostcriptUnchangedTest(TestCase):
+    fixtures = ['default_states']
+
     """ Test that the mbox view doesn't change the postscript part of a mail.
         There where always a missing blank right after the postscript
         delimiter '---' and an additional newline right before. """
index ed351409175293d530f91d9b5d5c9f4620e30b28..c46af612bbde09611df8c4c49d12d00ae93d24ab 100644 (file)
@@ -28,6 +28,8 @@ from patchwork.tests.utils import defaults, create_maintainer
 from patchwork.utils import send_notifications
 
 class PatchNotificationModelTest(TestCase):
+    fixtures = ['default_states']
+
     """Tests for the creation & update of the PatchChangeNotification model"""
 
     def setUp(self):
@@ -120,6 +122,7 @@ class PatchNotificationModelTest(TestCase):
         self.assertEqual(PatchChangeNotification.objects.count(), 0)
 
 class PatchNotificationEmailTest(TestCase):
+    fixtures = ['default_states']
 
     def setUp(self):
         self.project = defaults.project
index da2b07a96c8a38b156ab0f467f9e93368c65bd26..58689bbd86c98d5a990d9e911eeb54b5ffa48aaf 100644 (file)
@@ -32,6 +32,7 @@ except ImportError:
     from email.MIMEText import MIMEText
 
 class PatchTest(TestCase):
+    fixtures = ['default_states']
     default_sender = defaults.sender
     default_subject = defaults.subject
     project = defaults.project
@@ -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"
@@ -558,7 +562,7 @@ class ParseInitialTagsTest(PatchTest):
     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']
+    fixtures = ['default_tags', 'default_states']
 
     def setUp(self):
         project = defaults.project
index f1196e7a80ec258a74c2921be6fd4b9fadc85a0a..a1e03f5eac1ba9d9b41be4f871aa92a825b557ca 100644 (file)
@@ -31,7 +31,7 @@ class ExtractTagsTest(TestCase):
 
     email = 'test@exmaple.com'
     name_email = 'test name <' + email + '>'
-    fixtures = ['default_tags']
+    fixtures = ['default_tags', 'default_states']
 
     def assertTagsEqual(self, str, acks, reviews, tests):
         counts = extract_tags(str, Tag.objects.all())
@@ -83,7 +83,7 @@ class PatchTagsTest(TransactionTestCase):
     ACK = 1
     REVIEW = 2
     TEST = 3
-    fixtures = ['default_tags']
+    fixtures = ['default_tags', 'default_states']
 
     def assertTagsEqual(self, patch, acks, reviews, tests):
         patch = Patch.objects.get(pk=patch.pk)
index 177ee78ae3b243ac2d1f00737e3c2929be2ca27c..d2f4126b242d2c94a2c49707c3c0417ce278da14 100644 (file)
@@ -23,6 +23,8 @@ from patchwork.models import Patch, Person, State
 from patchwork.tests.utils import defaults, create_maintainer
 
 class MultipleUpdateTest(TestCase):
+    fixtures = ['default_states']
+
     def setUp(self):
         defaults.project.save()
         self.user = create_maintainer(defaults.project)