Bug 1289514 - Factor common test code into base class; r=catlee
authorGregory Szorc <gps@mozilla.com>
Tue, 26 Jul 2016 11:51:09 -0700
changeset 4877 93f15cf0f724e3df24c7e411b7ed0673e682d923
parent 4876 528c39fe4a5aa67a63e8e66db83595a5545ca7e6
child 4878 d76e0a6a3900f728240c404c2d1dc3beb2359241
push id3643
push userbmo:gps@mozilla.com
push dateTue, 26 Jul 2016 22:50:34 +0000
reviewerscatlee
bugs1289514
Bug 1289514 - Factor common test code into base class; r=catlee I'll be writing some more tests. So I don't have to write more boilerplate, copy common code for running tests into a base class. setUp() has been merged into doTest because otherwise a single test function couldn't call doTest() multiple times without state getting all out of whack. MozReview-Commit-ID: SI9biNsYl6
test/test_hgpoller.py
--- a/test/test_hgpoller.py
+++ b/test/test_hgpoller.py
@@ -304,178 +304,161 @@ class PushlogParsing(unittest.TestCase):
     def testMalformedPushlog(self):
         self.failUnlessRaises(
             JSONDecodeError, hgpoller.parse_pushlog_json, malformedPushlog)
 
     def testEmptyPushlog(self):
         self.failUnlessRaises(JSONDecodeError, hgpoller.parse_pushlog_json, "")
 
 
-class RepoBranchHandling(unittest.TestCase):
-    def setUp(self):
+class PollingTest(unittest.TestCase):
+    def doTest(self, data=validPushlog, **kwargs):
         self.changes = []
 
-    def doTest(self, repo_branch):
         changes = self.changes
 
         class TestPoller(hgpoller.BaseHgPoller):
             def __init__(self):
                 hgpoller.BaseHgPoller.__init__(self, 'http://localhost', 'whatever',
-                                      repo_branch=repo_branch)
+                                               **kwargs)
                 self.emptyRepo = True
 
         class parent:
             def addChange(self, change):
                 changes.append(change)
 
         p = TestPoller()
         p.parent = parent()
-        p.processData(validPushlog)
+        p.processData(data)
+        return p
+
 
+class RepoBranchHandling(PollingTest):
     def testNoRepoBranch(self):
-        self.doTest(None)
+        self.doTest(repo_branch=None)
 
         self.assertEquals(len(self.changes), 2)
 
     def testDefaultRepoBranch(self):
-        self.doTest('default')
+        self.doTest(repo_branch='default')
 
         # mergePushChanges is on by default, so we end up with a single change
         # here
         self.assertEquals(len(self.changes), 1)
         self.assertEquals(self.changes[0].revision,
                           '33be08836cb164f9e546231fc59e9e4cf98ed991')
 
         titles = self.changes[0].properties.getProperty('commit_titles')
         self.assertEquals(len(titles), 2)
         self.assertEquals(titles[0],
                           'Bug 563088 - Re-enable image discarding.r=joe,a=blocker')
         self.assertEquals(titles[1],
                           'Backout of changesets c866e73f3209 and baff7b7b32bc because of sicking\'s push-and-run bustage.')
 
     def testRelbranch(self):
-        self.doTest('GECKO20b5pre_20100820_RELBRANCH')
+        self.doTest(repo_branch='GECKO20b5pre_20100820_RELBRANCH')
 
         self.assertEquals(len(self.changes), 1)
         self.assertEquals(self.changes[0].revision,
                           '4c23e51a484f077ea27af3ea4a4ee13da5aeb5e6')
 
 
-class MaxChangesHandling(unittest.TestCase):
-    def setUp(self):
-        self.changes = []
-
-    def doTest(self, repo_branch, maxChanges, mergePushChanges):
-        changes = self.changes
-
-        class TestPoller(hgpoller.BaseHgPoller):
-            def __init__(self):
-                hgpoller.BaseHgPoller.__init__(self, 'http://localhost', 'whatever',
-                                      repo_branch=repo_branch, maxChanges=maxChanges, mergePushChanges=mergePushChanges)
-                self.emptyRepo = True
-
-        class parent:
-            def addChange(self, change):
-                changes.append(change)
-
-        p = TestPoller()
-        p.parent = parent()
-        p.processData(validPushlog)
-
+class MaxChangesHandling(PollingTest):
     def testNoRepoBigMax(self):
         # Test that we get all of the changes when maxChanges is large enough
-        self.doTest(None, 10, False)
+        self.doTest(repo_branch=None, maxChanges=10, mergePushChanges=False)
 
         self.assertEquals(len(self.changes), 3)
         # Check that we got the right changes
         self.assertEquals(self.changes[0].revision,
                           '4c23e51a484f077ea27af3ea4a4ee13da5aeb5e6')
         self.assertEquals(self.changes[1].revision,
                           'ee6fb954cbc3de0f76e84cad6bdff452116e1b03')
         self.assertEquals(self.changes[2].revision,
                           '33be08836cb164f9e546231fc59e9e4cf98ed991')
 
     def testMergingNoRepoBigMax(self):
         # Test that we get all of the changes when maxChanges is large enough
-        self.doTest(None, 10, True)
+        self.doTest(repo_branch=None, maxChanges=10, mergePushChanges=True)
 
         self.assertEquals(len(self.changes), 2)
         # Check that we got the right changes
         self.assertEquals(self.changes[0].revision,
                           '4c23e51a484f077ea27af3ea4a4ee13da5aeb5e6')
         self.assertEquals(self.changes[1].revision,
                           '33be08836cb164f9e546231fc59e9e4cf98ed991')
 
     def testNoRepoUnlimited(self):
         # Test that we get all of the changes when maxChanges is large enough
-        self.doTest(None, None, False)
+        self.doTest(repo_branch=None, maxChanges=None, mergePushChanges=False)
 
         self.assertEquals(len(self.changes), 3)
         # Check that we got the right changes
         self.assertEquals(self.changes[0].revision,
                           '4c23e51a484f077ea27af3ea4a4ee13da5aeb5e6')
         self.assertEquals(self.changes[1].revision,
                           'ee6fb954cbc3de0f76e84cad6bdff452116e1b03')
         self.assertEquals(self.changes[2].revision,
                           '33be08836cb164f9e546231fc59e9e4cf98ed991')
 
     def testMergingNoRepoUnlimited(self):
         # Test that we get all of the changes when maxChanges is large enough
-        self.doTest(None, None, True)
+        self.doTest(repo_branch=None, maxChanges=None, mergePushChanges=True)
 
         self.assertEquals(len(self.changes), 2)
         # Check that we got the right changes
         self.assertEquals(self.changes[0].revision,
                           '4c23e51a484f077ea27af3ea4a4ee13da5aeb5e6')
         self.assertEquals(self.changes[1].revision,
                           '33be08836cb164f9e546231fc59e9e4cf98ed991')
 
     def testNoRepoSmallMax(self):
         # Test that we get only 2 changes if maxChanges is set to 2
-        self.doTest(None, 2, False)
+        self.doTest(repo_branch=None, maxChanges=2, mergePushChanges=False)
 
         # The extra change is the overflow indicator
         self.assertEquals(len(self.changes), 3)
         # Check that we got the right changes
         self.assertEquals(self.changes[0].revision, None)
         self.assertEquals(self.changes[0].files, ['overflow'])
         self.assertEquals(self.changes[1].revision,
                           'ee6fb954cbc3de0f76e84cad6bdff452116e1b03')
         self.assertEquals(self.changes[2].revision,
                           '33be08836cb164f9e546231fc59e9e4cf98ed991')
 
     def testMergingNoRepoSmallMax(self):
         # Test that we get only 1 change if maxChanges is set to 1
-        self.doTest(None, 1, True)
+        self.doTest(repo_branch=None, maxChanges=1, mergePushChanges=True)
 
         self.assertEquals(len(self.changes), 1)
         # Check that we got the right changes
         self.assertEquals(self.changes[0].revision,
                           '33be08836cb164f9e546231fc59e9e4cf98ed991')
         self.assert_(
             'overflow' in self.changes[0].files, self.changes[0].files)
         self.assert_('widget/src/android/nsWindow.h' not in self.changes[
                      0].files, self.changes[0].files)
 
     def testDefaultRepoBigMax(self):
-        self.doTest('default', 10, False)
+        self.doTest(repo_branch='default', maxChanges=10, mergePushChanges=False)
 
         self.assertEquals(len(self.changes), 2)
         # Check that we got the right changes
         self.assertEquals(self.changes[0].revision,
                           'ee6fb954cbc3de0f76e84cad6bdff452116e1b03')
         self.assertEquals(self.changes[1].revision,
                           '33be08836cb164f9e546231fc59e9e4cf98ed991')
 
     def testDefaultRepoSmallMax(self):
-        self.doTest('default', 1, False)
+        self.doTest(repo_branch='default', maxChanges=1, mergePushChanges=False)
 
         self.assertEquals(len(self.changes), 2)
         # Check that we got the right changes
         self.assertEquals(self.changes[0].revision, None)
         self.assertEquals(self.changes[0].files, ['overflow'])
         self.assertEquals(self.changes[1].revision,
                           '33be08836cb164f9e546231fc59e9e4cf98ed991')
 
     def testRelbranchSmallMax(self):
-        self.doTest('GECKO20b5pre_20100820_RELBRANCH', 1, False)
+        self.doTest(repo_branch='GECKO20b5pre_20100820_RELBRANCH',
+                    maxChanges=1, mergePushChanges=False)
 
         self.assertEquals(len(self.changes), 1)