Rev 197: Merged TestCaseWithQueue work. in http://bzr.daniel-watkins.co.uk/pqm/abstract-patch

Daniel Watkins daniel at daniel-watkins.co.uk
Sun Jul 20 14:57:56 BST 2008


At http://bzr.daniel-watkins.co.uk/pqm/abstract-patch

------------------------------------------------------------
revno: 197
revision-id: daniel at daniel-watkins.co.uk-20080720135622-0g07e2i4hpas5m89
parent: daniel at daniel-watkins.co.uk-20080720135450-oy11dliev8n9etb4
parent: daniel at daniel-watkins.co.uk-20080717104404-m2mkd8o1luidl0s0
committer: Daniel Watkins <daniel at daniel-watkins.co.uk>
branch nick: abstract-patch
timestamp: Sun 2008-07-20 14:56:22 +0100
message:
  Merged TestCaseWithQueue work.
modified:
  pqm/tests/__init__.py          i_74708178-eda5-4993-8549-5eddd090ce8e
  pqm/tests/test_pqm.py          x_Robert_Collins_<robert.collins at canonical.com>_Thu_Aug__4_22:52:41_2005_804.0
  pqm/ui/tests/test_twisted.py   x_Robert_Collins_<robert.collins at canonical.com>_Sat_Jul__9_22:36:13_2005_7873.0
    ------------------------------------------------------------
    revno: 176.1.10
    revision-id: daniel at daniel-watkins.co.uk-20080717104404-m2mkd8o1luidl0s0
    parent: daniel at daniel-watkins.co.uk-20080717102329-dnul7uxcu03b5bih
    committer: Daniel Watkins <daniel at daniel-watkins.co.uk>
    branch nick: TestCaseWithQueue
    timestamp: Thu 2008-07-17 11:44:04 +0100
    message:
      Fixed up as per lifeless' review comments.
    modified:
      pqm/tests/__init__.py          i_74708178-eda5-4993-8549-5eddd090ce8e
    ------------------------------------------------------------
    revno: 176.1.9
    revision-id: daniel at daniel-watkins.co.uk-20080717102329-dnul7uxcu03b5bih
    parent: daniel at daniel-watkins.co.uk-20080710164650-dd3c037m6wah8yuq
    parent: robertc at robertcollins.net-20080717100934-40fjde09nglggsub
    committer: Daniel Watkins <daniel at daniel-watkins.co.uk>
    branch nick: TestCaseWithQueue
    timestamp: Thu 2008-07-17 11:23:29 +0100
    message:
      Merged pqm.dev r182.
    added:
      pqm/commandline.py             commandline.py-20080416102158-op31dy0lnkeo91ww-1
      pqm/errors.py                  errors.py-20080528044209-lpacj0a0ub4woseh-1
      pqm/script.py                  script.py-20080528044209-lpacj0a0ub4woseh-2
      pqm/tests/test_commandline.py  test_commandline.py-20080416102209-p18w8m9sw21704j9-1
    modified:
      .bzrignore                     bzrignore-20060322120158-35e5bcdaf76b6fdf
      Makefile.am                    i_Automake_rules_for_toplevel_tla-pqm_directory
      bin/pqm                        i_Simple_patch_queue_manager_for_tla
      configure.ac                   i_Toplevel_Autoconf_configuration_script
      pqm/__init__.py                i_dc99ede3-0c64-434d-ac84-305c06455a8d
      pqm/tests/__init__.py          i_74708178-eda5-4993-8549-5eddd090ce8e
      pqm/tests/test_lockfile.py     test_lockfile.py-20060111035725-07e8b573302c8fef
      pqm/tests/test_pqm.py          x_Robert_Collins_<robert.collins at canonical.com>_Thu_Aug__4_22:52:41_2005_804.0
      pqm/ui/tests/test_twisted.py   x_Robert_Collins_<robert.collins at canonical.com>_Sat_Jul__9_22:36:13_2005_7873.0
      pqm/ui/twistd.py               x_Robert_Collins_<robert.collins at canonical.com>_Sun_Jul_10_02:00:08_2005_15556.0
    ------------------------------------------------------------
    revno: 176.1.8
    revision-id: daniel at daniel-watkins.co.uk-20080710164650-dd3c037m6wah8yuq
    parent: daniel at daniel-watkins.co.uk-20080710164337-y4962o5sczz0tqv7
    committer: Daniel Watkins <daniel at daniel-watkins.co.uk>
    branch nick: TestCaseWithQueue
    timestamp: Thu 2008-07-10 17:46:50 +0100
    message:
      Converted TestTwistedUI to subclass TestCaseWithQueue.
    modified:
      pqm/ui/tests/test_twisted.py   x_Robert_Collins_<robert.collins at canonical.com>_Sat_Jul__9_22:36:13_2005_7873.0
    ------------------------------------------------------------
    revno: 176.1.7
    revision-id: daniel at daniel-watkins.co.uk-20080710164337-y4962o5sczz0tqv7
    parent: daniel at daniel-watkins.co.uk-20080710164201-zmw1dgimft79nd1f
    committer: Daniel Watkins <daniel at daniel-watkins.co.uk>
    branch nick: TestCaseWithQueue
    timestamp: Thu 2008-07-10 17:43:37 +0100
    message:
      Import cleanup.
    modified:
      pqm/tests/test_pqm.py          x_Robert_Collins_<robert.collins at canonical.com>_Thu_Aug__4_22:52:41_2005_804.0
      pqm/ui/tests/test_twisted.py   x_Robert_Collins_<robert.collins at canonical.com>_Sat_Jul__9_22:36:13_2005_7873.0
    ------------------------------------------------------------
    revno: 176.1.6
    revision-id: daniel at daniel-watkins.co.uk-20080710164201-zmw1dgimft79nd1f
    parent: daniel at daniel-watkins.co.uk-20080710163552-maaev5jnyg7iyp3h
    committer: Daniel Watkins <daniel at daniel-watkins.co.uk>
    branch nick: TestCaseWithQueue
    timestamp: Thu 2008-07-10 17:42:01 +0100
    message:
      Converted TestWithQueueDirectory to subclass TestCaseWithQueue.
    modified:
      pqm/tests/test_pqm.py          x_Robert_Collins_<robert.collins at canonical.com>_Thu_Aug__4_22:52:41_2005_804.0
    ------------------------------------------------------------
    revno: 176.1.5
    revision-id: daniel at daniel-watkins.co.uk-20080710163552-maaev5jnyg7iyp3h
    parent: daniel at daniel-watkins.co.uk-20080710162506-tpi33egh01pu79tg
    committer: Daniel Watkins <daniel at daniel-watkins.co.uk>
    branch nick: TestCaseWithQueue
    timestamp: Thu 2008-07-10 17:35:52 +0100
    message:
      Removed need for scriptname to be a instance variable.
    modified:
      pqm/tests/test_pqm.py          x_Robert_Collins_<robert.collins at canonical.com>_Thu_Aug__4_22:52:41_2005_804.0
    ------------------------------------------------------------
    revno: 176.1.4
    revision-id: daniel at daniel-watkins.co.uk-20080710162506-tpi33egh01pu79tg
    parent: daniel at daniel-watkins.co.uk-20080710161953-ohx24ca1c88s9m0j
    committer: Daniel Watkins <daniel at daniel-watkins.co.uk>
    branch nick: TestCaseWithQueue
    timestamp: Thu 2008-07-10 17:25:06 +0100
    message:
      Added pqm.tests.TestCaseWithQueue.
    modified:
      pqm/tests/__init__.py          i_74708178-eda5-4993-8549-5eddd090ce8e
      pqm/tests/test_pqm.py          x_Robert_Collins_<robert.collins at canonical.com>_Thu_Aug__4_22:52:41_2005_804.0
    ------------------------------------------------------------
    revno: 176.1.3
    revision-id: daniel at daniel-watkins.co.uk-20080710161953-ohx24ca1c88s9m0j
    parent: daniel at daniel-watkins.co.uk-20080710160216-hazgu51bbkw9fums
    committer: Daniel Watkins <daniel at daniel-watkins.co.uk>
    branch nick: TestCaseWithQueue
    timestamp: Thu 2008-07-10 17:19:53 +0100
    message:
      Moved QueueSetup to pqm.tests.QueueSetup.
    modified:
      pqm/tests/__init__.py          i_74708178-eda5-4993-8549-5eddd090ce8e
      pqm/tests/test_pqm.py          x_Robert_Collins_<robert.collins at canonical.com>_Thu_Aug__4_22:52:41_2005_804.0
    ------------------------------------------------------------
    revno: 176.1.2
    revision-id: daniel at daniel-watkins.co.uk-20080710160216-hazgu51bbkw9fums
    parent: daniel at daniel-watkins.co.uk-20080710155822-i9toa3rw19sp0pt2
    committer: Daniel Watkins <daniel at daniel-watkins.co.uk>
    branch nick: empty-queue
    timestamp: Thu 2008-07-10 17:02:16 +0100
    message:
      Added 'empty' parameter to QueueSetup, to define whether there should be anything in the queue.
    modified:
      pqm/tests/test_pqm.py          x_Robert_Collins_<robert.collins at canonical.com>_Thu_Aug__4_22:52:41_2005_804.0
    ------------------------------------------------------------
    revno: 176.1.1
    revision-id: daniel at daniel-watkins.co.uk-20080710155822-i9toa3rw19sp0pt2
    parent: robertc at robertcollins.net-20080710074340-dl0w25nbutl88sz2
    committer: Daniel Watkins <daniel at daniel-watkins.co.uk>
    branch nick: empty-queue
    timestamp: Thu 2008-07-10 16:58:22 +0100
    message:
      Added processing option on QueueSetup, to define whether any further queue requests are being processed.
    modified:
      pqm/tests/test_pqm.py          x_Robert_Collins_<robert.collins at canonical.com>_Thu_Aug__4_22:52:41_2005_804.0
-------------- next part --------------
=== modified file 'pqm/tests/__init__.py'
--- a/pqm/tests/__init__.py	2006-01-11 03:58:41 +0000
+++ b/pqm/tests/__init__.py	2008-07-17 10:44:04 +0000
@@ -0,0 +1,86 @@
+import os
+import shutil
+from textwrap import dedent
+
+from twisted.trial import unittest
+
+
+sample_message = dedent("""\
+    From: John.Citizen at example.com
+    Subject: A new action
+    star-merge http://www.example.com/foo/bar http://www.example.com/bar/baz
+    """)
+
+sample_message_2 = dedent("""\
+    From: John.Citizen at example.com
+    Subject: A new action
+    star-merge http://www.example.com/qux/thud http://www.example.com/fred/waldo
+    """)
+
+sample_message_bad = dedent("""\
+    From: John.Citizen at example.com
+    Subject: A new action
+    star-merge http://www.example.com/foo/bar http://www.example.com/foo/unregistered
+    """)
+
+
+class QueueSetup(object):
+    """Setup a queue with mock messages in it."""
+
+    def __init__(self, processing=True, empty=False):
+        self.configFileName = "Foo"
+        self.cwd = os.path.abspath(os.path.curdir)
+        self.processing = processing
+        self.empty = empty
+        if not empty:
+            self.message = sample_message
+            self.message_bad = sample_message_bad
+            self.message3 = sample_message_2
+
+    def setUp(self):
+        myFile=open(self.configFileName, "w")
+        myFile.write(dedent("""\
+            [DEFAULT]
+            queuedir=%s/queue
+            [http://www.example.com/bar/baz]
+            project=project
+            [http://www.example.com/fred/waldo]
+            """ % self.cwd))
+        myFile.close()
+        self.queuedir = os.path.join(self.cwd, "queue")
+        try:
+            os.mkdir(self.queuedir)
+            os.mkdir(self.queuedir + '/pqm')
+        except OSError:
+            pass
+        if not self.processing:
+            open("%s/stop.patch" % (self.queuedir,), "w").close()
+        if not self.empty:
+            self.messageFileName = os.path.join(self.queuedir,
+                                                "patch.00000001")
+            messageFile = open(self.messageFileName, "w")
+            messageFile.write(self.message)
+            messageFile.close()
+            self.messageFileNameBad = os.path.join(self.queuedir,
+                                                   "patch.00000002")
+            messageFile = open(self.messageFileNameBad, "w")
+            messageFile.write(self.message_bad)
+            messageFile.close()
+            self.messageFileName3 = os.path.join(self.queuedir,
+                                                 "patch.00000003")
+            messageFile = open(self.messageFileName3, "w")
+            messageFile.write(self.message3)
+            messageFile.close()
+
+    def tearDown(self):
+        os.unlink(self.configFileName)
+        shutil.rmtree(self.queuedir, ignore_errors=True)
+
+
+class TestCaseWithQueue(unittest.TestCase):
+
+    def getQueue(self, processing=True, empty=False):
+        queue = QueueSetup(processing, empty)
+        queue.setUp()
+        self.addCleanup(queue.tearDown)
+        return queue

=== modified file 'pqm/tests/test_pqm.py'
--- a/pqm/tests/test_pqm.py	2008-07-20 13:54:50 +0000
+++ b/pqm/tests/test_pqm.py	2008-07-20 13:56:22 +0000
@@ -9,6 +9,12 @@
 from twisted.trial import unittest
 
 import pqm
+from pqm.tests import (sample_message,
+                       sample_message_2,
+                       sample_message_bad,
+                       TestCaseWithQueue,
+                      )
+
 from pqm.errors import PQMCmdFailure
 from pqm.PQMConfigParser import ConfigParser
 from pqm.script import (Command,
@@ -18,21 +24,6 @@
                         PatchCommand,
                        )
 
-sample_message = dedent("""\
-    From: John.Citizen at example.com
-    Subject: A new action
-    star-merge http://www.example.com/foo/bar http://www.example.com/bar/baz
-    """)
-sample_message_2 = dedent("""\
-    From: John.Citizen at example.com
-    Subject: A new action
-    star-merge http://www.example.com/qux/thud http://www.example.com/fred/waldo
-    """)
-sample_message_bad = dedent("""\
-    From: John.Citizen at example.com
-    Subject: A new action
-    star-merge http://www.example.com/foo/bar http://www.example.com/foo/unregistered
-    """)
 sample_signed_message = dedent("""\
     From: whee at bar.com (Matthew Thomas)
     Subject: [trivial] fix various actions portlet icons
@@ -120,83 +111,30 @@
     """)
 
 
-class QueueSetup(object):
-    """Setup a queue with mock messages in it."""
-
-    def __init__(self):
-        self.configFileName = "Foo"
-        self.cwd = os.path.abspath(os.path.curdir)
-        self.message = sample_message
-        self.message_bad = sample_message_bad
-        self.message3 = sample_message_2
-
-    def setUp(self):
-        myFile=open(self.configFileName, "w")
-        myFile.write(dedent("""\
-            [DEFAULT]
-            queuedir=%s/queue
-            [http://www.example.com/bar/baz]
-            project=project
-            [http://www.example.com/fred/waldo]
-            """) % self.cwd)
-        myFile.close()
-        self.queuedir = os.path.join(self.cwd, "queue")
-        try:
-            os.mkdir(self.queuedir)
-            os.mkdir(self.queuedir + '/pqm')
-        except OSError:
-            pass
-        self.messageFileName = os.path.join(self.queuedir, "patch.00000001")
-        messageFile = open(self.messageFileName, "w")
-        messageFile.write(self.message)
-        messageFile.close()
-        self.messageFileNameBad = os.path.join(self.queuedir, "patch.00000002")
-        messageFile = open(self.messageFileNameBad, "w")
-        messageFile.write(self.message_bad)
-        messageFile.close()
-        self.messageFileName3 = os.path.join(self.queuedir, "patch.00000003")
-        messageFile = open(self.messageFileName3, "w")
-        messageFile.write(self.message3)
-        messageFile.close()
-
-    def tearDown(self):
-        os.unlink(self.configFileName)
-        shutil.rmtree(self.queuedir, ignore_errors=True)
-
-
-class TestWithQueueDirectory(unittest.TestCase):
-
-    def setUp(self):
-        unittest.TestCase.setUp(self)
-        self.queue = QueueSetup()
-        self.queue.setUp()
+class TestWithQueueDirectory(TestCaseWithQueue):
 
     def testName(self):
         patch = pqm.Script('foo.script', logging, False, 0, None, None)
         self.assertEqual(patch.filename, 'foo.script')
-        self.scriptname = 'fpp'
-
-    def tearDown(self):
-        try:
-            os.unlink(self.scriptname)
-        except OSError:
-            pass
-        self.queue.tearDown()
-
-    def getScript(self, content):
+
+    def getScript(self, queue, content):
         """Get a script for testing with."""
-        self.scriptname = 'foo.script'
-        scriptFile = open(self.scriptname, "w")
+        scriptname = 'foo.script'
+        scriptFile = open(scriptname, "w")
         scriptFile.write(content)
         scriptFile.close()
+        def cleanupScript():
+            os.unlink(scriptname)
+        self.addCleanup(cleanupScript)
         pqm.pqm_subdir = os.path.abspath('queue/pqm')
         configp = ConfigParser()
-        configp.read([self.queue.configFileName])
+        configp.read([queue.configFileName])
         handler = pqm.BranchSpecOptionHandler(configp)
-        return pqm.Script(self.scriptname, logging, False, 54, handler, configp)
+        return pqm.Script(scriptname, logging, False, 54, handler, configp)
 
     def testFields(self):
-        script = self.getScript(sample_message)
+        queue = self.getQueue()
+        script = self.getScript(queue, sample_message)
         self.assertEqual(script.getSender(), "John.Citizen at example.com")
         self.assertEqual(script.getSubject(), "A new action")
         self.assertEqual(script.getContent(),
@@ -213,7 +151,8 @@
                          script.getCommands())
 
     def testGPGFields(self):
-        script = self.getScript(sample_signed_message)
+        queue = self.getQueue()
+        script = self.getScript(queue, sample_signed_message)
         self.assertEqual(script.getSender(), "whee at bar.com (Matthew Thomas)")
         self.assertEqual(script.getSubject(),
             "[trivial] fix various actions portlet icons")
@@ -243,27 +182,30 @@
 
     def testDate(self):
         """Can we access a submission time for scripts."""
-        script = self.getScript(sample_message)
+        queue = self.getQueue()
+        script = self.getScript(queue, sample_message)
         self.assertEqual(script.getSubmissionTime(), 54)
 
     def testProjects(self):
         # A script may affect multiple branches, so we can ask the script
         # for its projects, and then for the commands for a project.
-        script = self.getScript(sample_message)
+        queue = self.getQueue()
+        script = self.getScript(queue, sample_message)
         self.assertEqual(set(['project']), script.getProjects())
 
     def test_log_status(self):
         # make an initial status file
-        status = file(self.queue.queuedir + '/pqm/status', 'wt')
+        queue = self.getQueue()
+        status = file(queue.queuedir + '/pqm/status', 'wt')
         status.write('bar\n')
         status.close()
-        script = self.getScript(sample_message)
+        script = self.getScript(queue, sample_message)
         command = Command(script,
                           script._branch_spec_handler,
                           script._configp)
         logger = MockLogger()
         command.log_with_status(logger, 'foo')
-        content = file(self.queue.queuedir + '/pqm/status').read()
+        content = file(queue.queuedir + '/pqm/status').read()
         self.assertEqual('bar\nfoo\n', content)
 
 

=== modified file 'pqm/ui/tests/test_twisted.py'
--- a/pqm/ui/tests/test_twisted.py	2008-07-16 15:44:48 +0000
+++ b/pqm/ui/tests/test_twisted.py	2008-07-17 10:23:29 +0000
@@ -1,37 +1,29 @@
-
 from twisted.trial import unittest
 from twisted.web.resource import getChildForRequest
 from twisted.web.test.test_web import DummyRequest
 import logging
 
 import pqm
+from pqm.tests import TestCaseWithQueue
 from pqm.PQMConfigParser import ConfigParser
-from pqm.tests.test_pqm import QueueSetup
-
-class TestTwistedUI(unittest.TestCase):
+
+
+class TestTwistedUI(TestCaseWithQueue):
 
     def testImports(self):
         import pqm.ui.twistd
 
-    def setUp(self):
-        unittest.TestCase.setUp(self)
-        self.queueSetup = QueueSetup()
-        self.queueSetup.setUp()
-
-    def tearDown(self):
-        unittest.TestCase.tearDown(self)
-        self.queueSetup.tearDown()
-
     def testQueue(self):
         from pqm.ui.twistd import FakeOptions
+        queue = self.getQueue()
         configp = ConfigParser()
-        configp.read([self.queueSetup.configFileName])
+        configp.read([queue.configFileName])
         handler = pqm.BranchSpecOptionHandler(configp)
         queuedir = pqm.get_queuedir(configp, logging, [])
         patches = pqm.find_patches(
             queuedir, logging, handler, configp, FakeOptions())
         self.assertEqual(3, len(patches))
-        self.assertEqual(patches[0].filename, self.queueSetup.messageFileName)
+        self.assertEqual(patches[0].filename, queue.messageFileName)
         self.assertEqual(set(['project']),
                          patches[0].getCommands()[0].getProjects())
         self.assertRaises(KeyError,
@@ -41,10 +33,11 @@
 
     def getResource(self):
         from pqm.ui.twistd import PQMInfo, QueueResource
-        statusfile = file(self.queueSetup.queuedir + '/pqm/status', 'wt')
+        queue = self.getQueue()
+        statusfile = file(queue.queuedir + '/pqm/status', 'wt')
         statusfile.write("<foo\nbar\nbaz\nquux\ntheta\n")
         statusfile.close()
-        pqminfo = PQMInfo([self.queueSetup.configFileName])
+        pqminfo = PQMInfo([queue.configFileName])
         resource = QueueResource(pqminfo)
         pqminfo.refresh()
         return resource



More information about the bazaar-commits mailing list