Merge lp:~jml/launchpad/upcall-testcase into lp:launchpad

Proposed by Jonathan Lange
Status: Merged
Approved by: Michael Hudson-Doyle
Approved revision: not available
Merged at revision: not available
Proposed branch: lp:~jml/launchpad/upcall-testcase
Merge into: lp:launchpad
Diff against target: 828 lines (+88/-47)
28 files modified
lib/canonical/config/tests/test_config_lookup.py (+7/-7)
lib/canonical/launchpad/scripts/tests/test_hwdb_submission_parser.py (+17/-12)
lib/canonical/launchpad/scripts/tests/test_hwdb_submission_processing.py (+3/-0)
lib/canonical/launchpad/scripts/tests/test_runlaunchpad.py (+2/-2)
lib/canonical/launchpad/webapp/tests/__init__.py (+2/-1)
lib/canonical/launchpad/webapp/tests/test_dbpolicy.py (+8/-5)
lib/canonical/launchpad/webapp/tests/test_menu.py (+1/-0)
lib/canonical/launchpad/webapp/tests/test_servers.py (+1/-2)
lib/lp/archiveuploader/tests/test_buildduploads.py (+2/-2)
lib/lp/archiveuploader/tests/test_ppauploadprocessor.py (+1/-1)
lib/lp/archiveuploader/tests/test_securityuploads.py (+2/-2)
lib/lp/archiveuploader/tests/test_uploadprocessor.py (+2/-1)
lib/lp/code/browser/tests/test_branch.py (+4/-2)
lib/lp/code/mail/tests/test_codehandler.py (+9/-3)
lib/lp/code/model/tests/test_branch.py (+4/-1)
lib/lp/code/model/tests/test_codereviewkarma.py (+2/-1)
lib/lp/code/model/tests/test_revisionauthor.py (+3/-0)
lib/lp/codehosting/puller/tests/test_worker.py (+1/-0)
lib/lp/codehosting/tests/test_rewrite.py (+1/-1)
lib/lp/registry/tests/test_distroseries.py (+1/-0)
lib/lp/registry/tests/test_prf_walker.py (+3/-0)
lib/lp/scripts/utilities/tests/test_sanitizedb.py (+1/-0)
lib/lp/services/apachelogparser/tests/test_apachelogparser.py (+2/-0)
lib/lp/services/database/tests/test_prejoin.py (+1/-0)
lib/lp/services/mail/tests/test_mailbox.py (+2/-4)
lib/lp/services/memcache/tests/test_memcache_client.py (+1/-0)
lib/lp/soyuz/scripts/tests/test_copypackage.py (+1/-0)
lib/lp/translations/scripts/tests/test_remove_translations.py (+4/-0)
To merge this branch: bzr merge lp:~jml/launchpad/upcall-testcase
Reviewer Review Type Date Requested Status
Michael Hudson-Doyle Approve
Review via email: mp+17002@code.launchpad.net

Commit message

Upcall setUp and tearDown everywhere, allowing use of testtools

To post a comment you must log in.
Revision history for this message
Jonathan Lange (jml) wrote :

This branch is pretty simple in intent. It goes through many, many test cases and makes them upcall setUp and tearDown.

It's a prequisite for using testtools, which mandates upcalling setUp & tearDown to avoid more painful errors.

I've also changed a lot of the upcalls to be new-style.

Revision history for this message
Michael Hudson-Doyle (mwhudson) wrote :

It looks fine. I worry slightly about doing super(...).setUp(argument), but only slightly.

review: Approve

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'lib/canonical/config/tests/test_config_lookup.py'
2--- lib/canonical/config/tests/test_config_lookup.py 2009-07-17 00:26:05 +0000
3+++ lib/canonical/config/tests/test_config_lookup.py 2010-01-08 04:12:19 +0000
4@@ -8,18 +8,17 @@
5
6 import os
7 import shutil
8+from tempfile import mkdtemp, NamedTemporaryFile
9 import unittest
10
11-from tempfile import mkdtemp, NamedTemporaryFile
12-from unittest import makeSuite, TestCase, TestSuite
13-
14-import lp.testing
15-
16 from canonical import config
17+from lp.testing import TestCase
18+
19
20 class TestConfigLookup(TestCase):
21
22 def setUp(self):
23+ super(TestConfigLookup, self).setUp()
24 self.temp_lookup_file = None
25 self.original_CONFIG_LOOKUP_FILES = config.CONFIG_LOOKUP_FILES
26 self.original_LPCONFIG = os.environ['LPCONFIG']
27@@ -28,6 +27,7 @@
28 del self.temp_lookup_file
29 config.CONFIG_LOOKUP_FILES = self.original_CONFIG_LOOKUP_FILES
30 os.environ['LPCONFIG'] = self.original_LPCONFIG
31+ super(TestConfigLookup, self).tearDown()
32
33 def makeLookupFile(self):
34 self.temp_lookup_file = NamedTemporaryFile()
35@@ -61,7 +61,7 @@
36 config.find_instance_name(), config.DEFAULT_CONFIG)
37
38
39-class ConfigTestCase(lp.testing.TestCase):
40+class ConfigTestCase(TestCase):
41 """Base test case that provides fixtures for testing configuration.
42 """
43
44@@ -79,7 +79,6 @@
45 shutil.rmtree(self.temp_config_root_dir)
46 config.CONFIG_ROOT_DIRS = self.original_root_dirs
47
48-
49 def setUpInstanceConfig(self, instance_name):
50 """Create an instance directory with empty config files.
51
52@@ -104,6 +103,7 @@
53 """Test where instance config directories are looked up."""
54
55 def setUp(self):
56+ super(TestInstanceConfigDirLookup, self).setUp()
57 self.setUpConfigRoots()
58
59 def test_find_config_dir_raises_ValueError(self):
60
61=== modified file 'lib/canonical/launchpad/scripts/tests/test_hwdb_submission_parser.py'
62--- lib/canonical/launchpad/scripts/tests/test_hwdb_submission_parser.py 2009-10-27 14:36:03 +0000
63+++ lib/canonical/launchpad/scripts/tests/test_hwdb_submission_parser.py 2010-01-08 04:12:19 +0000
64@@ -25,12 +25,14 @@
65
66 from lp.testing import TestCase, validate_mock_class
67
68+
69 class SubmissionParserTestParseSoftware(SubmissionParser):
70 """A Variant used to test SubmissionParser._parseSoftware.
71
72 This class can be used to test the regular case of
73 submission data.
74 """
75+
76 def __init__(self, test, logger=None):
77 super(SubmissionParserTestParseSoftware, self).__init__(logger)
78 self.test = test
79@@ -54,6 +56,7 @@
80 This class is intended to test submission data that does not contain
81 a <xorg> node.
82 """
83+
84 def __init__(self, test, logger=None):
85 super(SubmissionParserTestParseSoftwareNoXorgNode, self).__init__(
86 logger)
87@@ -74,6 +77,7 @@
88 This class is intended to test submission data that does not contain
89 a <packages> node.
90 """
91+
92 def __init__(self, test, logger=None):
93 super(SubmissionParserTestParseSoftwareNoPackagesNode, self).__init__(
94 logger)
95@@ -95,6 +99,7 @@
96
97 def setUp(self):
98 """Setup the test environment."""
99+ super(TestHWDBSubmissionParser, self).setUp()
100 self.log = logging.getLogger('test_hwdb_submission_parser')
101 self.log.setLevel(logging.INFO)
102 self.handler = Handler(self)
103@@ -250,7 +255,7 @@
104 {'name': 'architecture_info',
105 'version': '1.1'},
106 {'name': 'find_network_controllers',
107- 'version': '2.34'}]}
108+ 'version': '2.34'}]},
109 }
110 self.assertEqual(
111 summary, expected_data,
112@@ -293,7 +298,7 @@
113 'plugins': [
114 {
115 'name': 'architecture_info',
116- 'version': '1.1'
117+ 'version': '1.1',
118 },
119 {
120 'name': 'find_network_controllers',
121@@ -484,7 +489,6 @@
122 """)
123 self.assertRaises(ValueError, parser._parseProperties, node)
124
125-
126 def testDevice(self):
127 """A device node is converted into a dictionary."""
128 test = self
129@@ -919,6 +923,7 @@
130
131 All "method substitutes" return a valid result.
132 """
133+
134 def __init__(self, logger=None):
135 super(self.__class__, self).__init__(logger)
136 self.hal_result = 'parsed HAL data'
137@@ -1312,6 +1317,7 @@
138
139 All "method substitutes" return a valid result.
140 """
141+
142 def __init__(self, logger=None):
143 SubmissionParser.__init__(self, logger)
144 self.summary_result = 'parsed summary'
145@@ -1363,8 +1369,8 @@
146 'summary': 'parsed summary',
147 'hardware': 'parsed hardware',
148 'software': 'parsed software',
149- 'questions': 'parsed questions',
150- 'context': 'parsed context',
151+ 'questions': 'parsed questions',
152+ 'context': 'parsed context',
153 }
154
155 result = parser.parseMainSections(node)
156@@ -1550,7 +1556,7 @@
157 'hardware': {
158 'udev': udev,
159 'sysfs-attributes': sysfs_attributes,
160- 'processors': processors
161+ 'processors': processors,
162 },
163 'software': {
164 'packages': packages
165@@ -1579,7 +1585,7 @@
166 ]
167 processors = [
168 {'id': 1},
169- {'id': 2}
170+ {'id': 2},
171 ]
172 packages = {
173 'bzr': {'id': 4},
174@@ -1589,7 +1595,7 @@
175 'hardware': {
176 'udev': udev,
177 'sysfs-attributes': sysfs_attributes,
178- 'processors': processors
179+ 'processors': processors,
180 },
181 'software': {
182 'packages': packages
183@@ -1646,7 +1652,7 @@
184 submission = {
185 'hardware': {
186 'udev': devices,
187- 'processors': processors
188+ 'processors': processors,
189 },
190 'software': {
191 'packages': packages
192@@ -1707,8 +1713,7 @@
193 {'udi': DEVICE_2_UDI,
194 'properties': {
195 'info.parent': (ROOT_UDI,
196- 'dbus.String')}
197- }]
198+ 'dbus.String')}}]
199
200 def testUDIDeviceMap(self):
201 """Test the creation of the mapping UDI -> device."""
202@@ -1893,7 +1898,7 @@
203 'properties':
204 {'info.parent':
205 (self.CIRCULAR_UDI_1, 'str')}}
206- devices = [device1, device2, circular_device1, circular_device2]
207+ devices = [device1, device2, circular_device1, circular_device2]
208 parser = SubmissionParser()
209 udi_device_map = parser.getUDIDeviceMap(devices)
210 udi_children = parser.getUDIChildren(udi_device_map)
211
212=== modified file 'lib/canonical/launchpad/scripts/tests/test_hwdb_submission_processing.py'
213--- lib/canonical/launchpad/scripts/tests/test_hwdb_submission_processing.py 2009-11-05 15:12:46 +0000
214+++ lib/canonical/launchpad/scripts/tests/test_hwdb_submission_processing.py 2010-01-08 04:12:19 +0000
215@@ -34,6 +34,7 @@
216
217 from lp.testing import TestCase, validate_mock_class
218
219+
220 class TestCaseHWDB(TestCase):
221 """Common base class for HWDB processing tests."""
222
223@@ -91,6 +92,7 @@
224
225 def setUp(self):
226 """Setup the test environment."""
227+ super(TestCaseHWDB, self).setUp()
228 self.log = logging.getLogger('test_hwdb_submission_parser')
229 self.log.setLevel(logging.INFO)
230 self.handler = Handler(self)
231@@ -4534,6 +4536,7 @@
232
233 def setUp(self):
234 """Setup the test environment."""
235+ super(TestHWDBSubmissionTablePopulation, self).setUp()
236 self.log = logging.getLogger('test_hwdb_submission_parser')
237 self.log.setLevel(logging.INFO)
238 self.handler = Handler(self)
239
240=== modified file 'lib/canonical/launchpad/scripts/tests/test_runlaunchpad.py'
241--- lib/canonical/launchpad/scripts/tests/test_runlaunchpad.py 2009-08-12 19:07:45 +0000
242+++ lib/canonical/launchpad/scripts/tests/test_runlaunchpad.py 2010-01-08 04:12:19 +0000
243@@ -6,7 +6,7 @@
244 __metaclass__ = type
245 __all__ = [
246 'CommandLineArgumentProcessing',
247- 'ServersToStart'
248+ 'ServersToStart',
249 ]
250
251
252@@ -68,11 +68,11 @@
253 split_out_runlaunchpad_arguments(['-o', 'foo', '--bar=baz']))
254
255
256-
257 class TestDefaultConfigArgument(lp.testing.TestCase):
258 """Tests for the processing of the -C argument."""
259
260 def setUp(self):
261+ super(TestDefaultConfigArgument, self).setUp()
262 self.config_root = tempfile.mkdtemp('configs')
263 self.saved_instance = config.instance_name
264 self.saved_config_roots = canonical.config.CONFIG_ROOT_DIRS
265
266=== modified file 'lib/canonical/launchpad/webapp/tests/__init__.py'
267--- lib/canonical/launchpad/webapp/tests/__init__.py 2009-08-20 13:32:32 +0000
268+++ lib/canonical/launchpad/webapp/tests/__init__.py 2010-01-08 04:12:19 +0000
269@@ -21,10 +21,11 @@
270 """A test case that installs a DummyWebServiceConfiguration."""
271
272 def setUp(self):
273+ super(DummyConfigurationTestCase, self).setUp()
274 self.config = DummyWebServiceConfiguration()
275 provideUtility(self.config, IWebServiceConfiguration)
276
277 def tearDown(self):
278 getGlobalSiteManager().unregisterUtility(
279 self.config, IWebServiceConfiguration)
280-
281+ super(DummyConfigurationTestCase, self).tearDown()
282
283=== modified file 'lib/canonical/launchpad/webapp/tests/test_dbpolicy.py'
284--- lib/canonical/launchpad/webapp/tests/test_dbpolicy.py 2009-10-13 05:48:15 +0000
285+++ lib/canonical/launchpad/webapp/tests/test_dbpolicy.py 2010-01-08 04:12:19 +0000
286@@ -60,12 +60,14 @@
287 policy = None
288
289 def setUp(self):
290+ super(BaseDatabasePolicyTestCase, self).setUp()
291 if self.policy is None:
292 self.policy = BaseDatabasePolicy()
293 getUtility(IStoreSelector).push(self.policy)
294
295 def tearDown(self):
296 getUtility(IStoreSelector).pop()
297+ super(BaseDatabasePolicyTestCase, self).tearDown()
298
299 def test_correctly_implements_IDatabasePolicy(self):
300 self.assertProvides(self.policy, IDatabasePolicy)
301@@ -77,7 +79,7 @@
302 def setUp(self):
303 if self.policy is None:
304 self.policy = SlaveDatabasePolicy()
305- BaseDatabasePolicyTestCase.setUp(self)
306+ super(SlaveDatabasePolicyTestCase, self).setUp()
307
308 def test_defaults(self):
309 for store in ALL_STORES:
310@@ -97,7 +99,7 @@
311
312 def setUp(self):
313 self.policy = SlaveOnlyDatabasePolicy()
314- BaseDatabasePolicyTestCase.setUp(self)
315+ super(SlaveOnlyDatabasePolicyTestCase, self).setUp()
316
317 def test_master_allowed(self):
318 for store in ALL_STORES:
319@@ -111,7 +113,7 @@
320
321 def setUp(self):
322 self.policy = MasterDatabasePolicy()
323- BaseDatabasePolicyTestCase.setUp(self)
324+ super(MasterDatabasePolicyTestCase, self).setUp()
325
326 def test_XMLRPCRequest_uses_MasterPolicy(self):
327 """XMLRPC should always use the master flavor, since they always
328@@ -139,10 +141,11 @@
329 This test just checks the defaults, which is the same as the
330 slave policy for unauthenticated requests.
331 """
332+
333 def setUp(self):
334 request = LaunchpadTestRequest(SERVER_URL='http://launchpad.dev')
335 self.policy = LaunchpadDatabasePolicy(request)
336- SlaveDatabasePolicyTestCase.setUp(self)
337+ super(LaunchpadDatabasePolicyTestCase, self).setUp()
338
339
340 class LayerDatabasePolicyTestCase(TestCase):
341@@ -243,7 +246,7 @@
342
343 def setUp(self):
344 self.policy = ReadOnlyLaunchpadDatabasePolicy()
345- BaseDatabasePolicyTestCase.setUp(self)
346+ super(ReadOnlyLaunchpadDatabasePolicyTestCase, self).setUp()
347
348 def test_defaults(self):
349 # default Store is the slave.
350
351=== modified file 'lib/canonical/launchpad/webapp/tests/test_menu.py'
352--- lib/canonical/launchpad/webapp/tests/test_menu.py 2009-08-05 17:19:14 +0000
353+++ lib/canonical/launchpad/webapp/tests/test_menu.py 2010-01-08 04:12:19 +0000
354@@ -36,6 +36,7 @@
355
356 def tearDown(self):
357 logout()
358+ super(TestMenuBaseLinkCaching, self).tearDown()
359
360 def test_no_cache_when_there_is_no_request(self):
361 # Calling login() would cause a new interaction to be setup with a
362
363=== modified file 'lib/canonical/launchpad/webapp/tests/test_servers.py'
364--- lib/canonical/launchpad/webapp/tests/test_servers.py 2009-09-17 14:23:16 +0000
365+++ lib/canonical/launchpad/webapp/tests/test_servers.py 2010-01-08 04:12:19 +0000
366@@ -418,7 +418,7 @@
367 {'QUERY_STRING': "a=1&b=2&c=3", 'REQUEST_METHOD': 'POST'})
368 self.assertEqual(request.method, 'POST')
369 self.assertEqual(
370- {'a':['1'], 'b': ['2'], 'c': ['3']},
371+ {'a': ['1'], 'b': ['2'], 'c': ['3']},
372 request.query_string_params,
373 "The query_string_params dict is populated from the "
374 "QUERY_STRING during POST requests.")
375@@ -461,4 +461,3 @@
376 optionflags=NORMALIZE_WHITESPACE | ELLIPSIS))
377 suite.addTest(unittest.TestLoader().loadTestsFromName(__name__))
378 return suite
379-
380
381=== modified file 'lib/lp/archiveuploader/tests/test_buildduploads.py'
382--- lib/lp/archiveuploader/tests/test_buildduploads.py 2009-08-28 07:34:44 +0000
383+++ lib/lp/archiveuploader/tests/test_buildduploads.py 2010-01-08 04:12:19 +0000
384@@ -70,7 +70,7 @@
385
386 real_policy = self.policy
387 self.policy = 'insecure'
388- TestStagedBinaryUploadBase.setUp(self)
389+ super(TestBuilddUploads, self).setUp()
390 self.policy = real_policy
391
392 def _publishBuildQueueItem(self, queue_item):
393@@ -125,6 +125,6 @@
394 build_used.title)
395 self.assertEqual('FULLYBUILT', build_used.buildstate.name)
396
397+
398 def test_suite():
399 return unittest.TestLoader().loadTestsFromName(__name__)
400-
401
402=== modified file 'lib/lp/archiveuploader/tests/test_ppauploadprocessor.py'
403--- lib/lp/archiveuploader/tests/test_ppauploadprocessor.py 2009-11-18 02:58:23 +0000
404+++ lib/lp/archiveuploader/tests/test_ppauploadprocessor.py 2010-01-08 04:12:19 +0000
405@@ -50,7 +50,7 @@
406 Additionally to the TestUploadProcessorBase.setUp, set 'breezy'
407 distroseries and an new uploadprocessor instance.
408 """
409- TestUploadProcessorBase.setUp(self)
410+ super(TestPPAUploadProcessorBase, self).setUp()
411 self.ubuntu = getUtility(IDistributionSet).getByName('ubuntu')
412 # Let's make 'name16' person member of 'launchpad-beta-tester'
413 # team only in the context of this test.
414
415=== modified file 'lib/lp/archiveuploader/tests/test_securityuploads.py'
416--- lib/lp/archiveuploader/tests/test_securityuploads.py 2009-08-28 07:34:44 +0000
417+++ lib/lp/archiveuploader/tests/test_securityuploads.py 2010-01-08 04:12:19 +0000
418@@ -67,7 +67,7 @@
419 6. Clean log messages.
420 7. Commit transaction, so the upload source can be seen.
421 """
422- TestUploadProcessorBase.setUp(self)
423+ super(TestStagedBinaryUploadBase, self).setUp()
424 self.options.context = self.policy
425 self.options.nomails = self.no_mails
426 # Set up the uploadprocessor with appropriate options and logger
427@@ -164,7 +164,7 @@
428
429 def setUp(self):
430 """Setup base class and create the required new distroarchseries."""
431- TestStagedBinaryUploadBase.setUp(self)
432+ super(TestStagedSecurityUploads, self).setUp()
433 distribution = getUtility(IDistributionSet).getByName(
434 self.distribution_name)
435 distroseries = distribution[self.distroseries.name]
436
437=== modified file 'lib/lp/archiveuploader/tests/test_uploadprocessor.py'
438--- lib/lp/archiveuploader/tests/test_uploadprocessor.py 2009-11-18 02:58:23 +0000
439+++ lib/lp/archiveuploader/tests/test_uploadprocessor.py 2010-01-08 04:12:19 +0000
440@@ -107,7 +107,7 @@
441 layer = LaunchpadZopelessLayer
442
443 def setUp(self):
444- TestCaseWithFactory.setUp(self)
445+ super(TestUploadProcessorBase, self).setUp()
446
447 self.queue_folder = tempfile.mkdtemp()
448 os.makedirs(os.path.join(self.queue_folder, "incoming"))
449@@ -134,6 +134,7 @@
450
451 def tearDown(self):
452 shutil.rmtree(self.queue_folder)
453+ super(TestUploadProcessorBase, self).tearDown()
454
455 def assertLogContains(self, line):
456 """Assert if a given line is present in the log messages."""
457
458=== modified file 'lib/lp/code/browser/tests/test_branch.py'
459--- lib/lp/code/browser/tests/test_branch.py 2009-11-13 21:16:15 +0000
460+++ lib/lp/code/browser/tests/test_branch.py 2010-01-08 04:12:19 +0000
461@@ -119,12 +119,13 @@
462 layer = LaunchpadFunctionalLayer
463
464 def setUp(self):
465- TestCaseWithFactory.setUp(self)
466+ super(TestBranchView, self).setUp()
467 login(ANONYMOUS)
468 self.request = LaunchpadTestRequest()
469
470 def tearDown(self):
471 logout()
472+ super(TestBranchView, self).tearDown()
473
474 def testMirrorStatusMessageIsTruncated(self):
475 """mirror_status_message is truncated if the text is overly long."""
476@@ -238,13 +239,14 @@
477 layer = DatabaseFunctionalLayer
478
479 def setUp(self):
480- TestCaseWithFactory.setUp(self)
481+ super(TestBranchAddView, self).setUp()
482 self.person = self.factory.makePerson()
483 login_person(self.person)
484 self.request = LaunchpadTestRequest()
485
486 def tearDown(self):
487 logout()
488+ super(TestBranchAddView, self).tearDown()
489
490 def get_view(self, context):
491 view = BranchAddView(context, self.request)
492
493=== modified file 'lib/lp/code/mail/tests/test_codehandler.py'
494--- lib/lp/code/mail/tests/test_codehandler.py 2009-10-23 19:33:09 +0000
495+++ lib/lp/code/mail/tests/test_codehandler.py 2010-01-08 04:12:19 +0000
496@@ -127,12 +127,13 @@
497 layer = ZopelessAppServerLayer
498
499 def setUp(self):
500- TestCaseWithFactory.setUp(self, user='test@canonical.com')
501+ super(TestCodeHandler, self).setUp(user='test@canonical.com')
502 self.code_handler = CodeHandler()
503 self._old_policy = setSecurityPolicy(LaunchpadSecurityPolicy)
504
505 def tearDown(self):
506 setSecurityPolicy(self._old_policy)
507+ super(TestCodeHandler, self).tearDown()
508
509 def switchDbUser(self, user):
510 """Commit the transactionand switch to the new user."""
511@@ -1060,6 +1061,7 @@
512 # We don't need no stinking layer.
513
514 def setUp(self):
515+ super(TestVoteEmailCommand, self).setUp()
516 class FakeExecutionContext:
517 vote = None
518 vote_tags = None
519@@ -1149,7 +1151,8 @@
520 layer = LaunchpadZopelessLayer
521
522 def setUp(self):
523- TestCaseWithFactory.setUp(self, user='test@canonical.com')
524+ super(TestUpdateStatusEmailCommand, self).setUp(
525+ user='test@canonical.com')
526 self._old_policy = setSecurityPolicy(LaunchpadSecurityPolicy)
527 self.merge_proposal = self.factory.makeBranchMergeProposal()
528 # Default the user to be the target branch owner, so they are
529@@ -1161,6 +1164,7 @@
530
531 def tearDown(self):
532 setSecurityPolicy(self._old_policy)
533+ super(TestUpdateStatusEmailCommand, self).tearDown()
534
535 def test_numberOfArguments(self):
536 # The command needs one and only one arg.
537@@ -1257,7 +1261,8 @@
538 layer = LaunchpadZopelessLayer
539
540 def setUp(self):
541- TestCaseWithFactory.setUp(self, user='test@canonical.com')
542+ super(TestAddReviewerEmailCommand, self).setUp(
543+ user='test@canonical.com')
544 self._old_policy = setSecurityPolicy(LaunchpadSecurityPolicy)
545 self.merge_proposal = self.factory.makeBranchMergeProposal()
546 # Default the user to be the target branch owner, so they are
547@@ -1270,6 +1275,7 @@
548
549 def tearDown(self):
550 setSecurityPolicy(self._old_policy)
551+ super(TestAddReviewerEmailCommand, self).tearDown()
552
553 def test_numberOfArguments(self):
554 # The command needs at least one arg.
555
556=== modified file 'lib/lp/code/model/tests/test_branch.py'
557--- lib/lp/code/model/tests/test_branch.py 2009-12-11 00:56:16 +0000
558+++ lib/lp/code/model/tests/test_branch.py 2010-01-08 04:12:19 +0000
559@@ -75,6 +75,7 @@
560 layer = LaunchpadZopelessLayer
561
562 def setUp(self):
563+ super(TestCodeImport, self).setUp()
564 login('test@canonical.com')
565 self.factory = LaunchpadObjectFactory()
566
567@@ -650,6 +651,7 @@
568 layer = LaunchpadZopelessLayer
569
570 def setUp(self):
571+ super(TestBranchDeletionConsequences, self).setUp()
572 login('test@canonical.com')
573 self.factory = LaunchpadObjectFactory()
574 # Has to be a product branch because of merge proposals.
575@@ -1035,7 +1037,7 @@
576 layer = DatabaseFunctionalLayer
577
578 def setUp(self):
579- TestCaseWithFactory.setUp(self, 'admin@canonical.com')
580+ super(BranchAddLandingTarget, self).setUp('admin@canonical.com')
581 self.product = self.factory.makeProduct()
582
583 self.user = self.factory.makePerson()
584@@ -1048,6 +1050,7 @@
585
586 def tearDown(self):
587 logout()
588+ super(BranchAddLandingTarget, self).tearDown()
589
590 def test_junkSource(self):
591 """Junk branches cannot be used as a source for merge proposals."""
592
593=== modified file 'lib/lp/code/model/tests/test_codereviewkarma.py'
594--- lib/lp/code/model/tests/test_codereviewkarma.py 2009-06-25 04:06:00 +0000
595+++ lib/lp/code/model/tests/test_codereviewkarma.py 2010-01-08 04:12:19 +0000
596@@ -29,7 +29,7 @@
597 def setUp(self):
598 # Use an admin to get launchpad.Edit on all the branches to easily
599 # approve and reject the proposals.
600- TestCaseWithFactory.setUp(self, 'admin@canonical.com')
601+ super(TestCodeReviewKarma, self).setUp('admin@canonical.com')
602 # The way the zope infrastructure works is that we can register
603 # subscribers easily, but there is no way to unregister them (bug
604 # 2338). TestEventListener does this with by setting a property to
605@@ -46,6 +46,7 @@
606
607 def tearDown(self):
608 self.karma_listener.unregister()
609+ super(TestCodeReviewKarma, self).tearDown()
610
611 def _on_karma_assigned(self, object, event):
612 # Store the karma event for checking in the test method.
613
614=== modified file 'lib/lp/code/model/tests/test_revisionauthor.py'
615--- lib/lp/code/model/tests/test_revisionauthor.py 2009-06-25 04:06:00 +0000
616+++ lib/lp/code/model/tests/test_revisionauthor.py 2010-01-08 04:12:19 +0000
617@@ -33,6 +33,7 @@
618 layer = LaunchpadZopelessLayer
619
620 def setUp(self):
621+ super(TestRevisionEmailExtraction, self).setUp()
622 LaunchpadZopelessLayer.switchDbUser(config.branchscanner.dbuser)
623
624 def test_email_extracted_from_name(self):
625@@ -132,6 +133,7 @@
626
627 def setUp(self):
628 # Create a revision author that doesn't have a user yet.
629+ super(TestNewlyValidatedEmailsLinkRevisionAuthors, self).setUp()
630 launchpad_dbuser = config.launchpad.dbuser
631 LaunchpadZopelessLayer.switchDbUser(config.branchscanner.dbuser)
632 self.author = RevisionSet()._createRevisionAuthor(
633@@ -171,6 +173,7 @@
634 layer = LaunchpadZopelessLayer
635
636 def setUp(self):
637+ super(TestRevisionAuthor, self).setUp()
638 LaunchpadZopelessLayer.switchDbUser(config.branchscanner.dbuser)
639
640 def testGetNameWithoutEmailReturnsNamePart(self):
641
642=== modified file 'lib/lp/codehosting/puller/tests/test_worker.py'
643--- lib/lp/codehosting/puller/tests/test_worker.py 2009-12-22 23:50:27 +0000
644+++ lib/lp/codehosting/puller/tests/test_worker.py 2010-01-08 04:12:19 +0000
645@@ -566,6 +566,7 @@
646 """Tests specific to `MirroredBranchPolicy`."""
647
648 def setUp(self):
649+ super(TestMirroredBranchPolicy, self).setUp()
650 self.factory = LaunchpadObjectFactory()
651
652 def testNoFileURL(self):
653
654=== modified file 'lib/lp/codehosting/tests/test_rewrite.py'
655--- lib/lp/codehosting/tests/test_rewrite.py 2009-11-05 19:06:56 +0000
656+++ lib/lp/codehosting/tests/test_rewrite.py 2010-01-08 04:12:19 +0000
657@@ -28,7 +28,7 @@
658 layer = DatabaseFunctionalLayer
659
660 def setUp(self):
661- TestCaseWithFactory.setUp(self)
662+ super(TestBranchRewriter, self).setUp()
663 self.fake_time = FakeTime(0)
664
665 def makeRewriter(self):
666
667=== modified file 'lib/lp/registry/tests/test_distroseries.py'
668--- lib/lp/registry/tests/test_distroseries.py 2009-08-28 07:34:44 +0000
669+++ lib/lp/registry/tests/test_distroseries.py 2010-01-08 04:12:19 +0000
670@@ -34,6 +34,7 @@
671
672 def setUp(self):
673 # Log in as an admin, so that we can create distributions.
674+ super(TestDistroSeriesCurrentSourceReleases, self).setUp()
675 login('foo.bar@canonical.com')
676 self.publisher = SoyuzTestPublisher()
677 self.factory = self.publisher.factory
678
679=== modified file 'lib/lp/registry/tests/test_prf_walker.py'
680--- lib/lp/registry/tests/test_prf_walker.py 2009-07-17 18:46:25 +0000
681+++ lib/lp/registry/tests/test_prf_walker.py 2010-01-08 04:12:19 +0000
682@@ -177,6 +177,7 @@
683
684 def tearDown(self):
685 reset_logging()
686+ super(WalkerBase_walk, self).tearDown()
687
688 def test_walk_UnicodeEncodeError(self):
689 """Verify that a UnicodeEncodeError is logged."""
690@@ -311,6 +312,7 @@
691
692 def tearDown(self):
693 reset_logging()
694+ super(HTTPWalker_ListDir, self).tearDown()
695
696 def setUpWalker(self, listing_url, listing_content):
697 from lp.registry.scripts.productreleasefinder.walker import (
698@@ -487,6 +489,7 @@
699
700 def tearDown(self):
701 reset_logging()
702+ super(HTTPWalker_IsDirectory, self).tearDown()
703
704 def testFtpIsDirectory(self):
705 # Test that no requests are made by isDirectory() when walking
706
707=== modified file 'lib/lp/scripts/utilities/tests/test_sanitizedb.py'
708--- lib/lp/scripts/utilities/tests/test_sanitizedb.py 2009-10-01 03:54:04 +0000
709+++ lib/lp/scripts/utilities/tests/test_sanitizedb.py 2010-01-08 04:12:19 +0000
710@@ -20,6 +20,7 @@
711 layer = DatabaseLayer
712
713 def setUp(self):
714+ super(SanitizeDbScriptTestCase, self).setUp()
715 self.script_path = os.path.join(
716 config.root, 'utilities', 'sanitize-db.py')
717 DatabaseLayer.force_dirty_database()
718
719=== modified file 'lib/lp/services/apachelogparser/tests/test_apachelogparser.py'
720--- lib/lp/services/apachelogparser/tests/test_apachelogparser.py 2009-11-17 18:36:20 +0000
721+++ lib/lp/services/apachelogparser/tests/test_apachelogparser.py 2010-01-08 04:12:19 +0000
722@@ -230,6 +230,7 @@
723 root = os.path.join(here, 'apache-log-files')
724
725 def setUp(self):
726+ super(TestParsedFilesDetection, self).setUp()
727 self.layer.switchDbUser(DBUSER)
728
729 def test_not_parsed_file(self):
730@@ -301,6 +302,7 @@
731 layer = LaunchpadZopelessLayer
732
733 def setUp(self):
734+ super(Test_create_or_update_parsedlog_entry, self).setUp()
735 self.layer.switchDbUser(DBUSER)
736
737 def test_creation_of_new_entries(self):
738
739=== modified file 'lib/lp/services/database/tests/test_prejoin.py'
740--- lib/lp/services/database/tests/test_prejoin.py 2009-10-28 12:38:31 +0000
741+++ lib/lp/services/database/tests/test_prejoin.py 2010-01-08 04:12:19 +0000
742@@ -20,6 +20,7 @@
743 layer = LaunchpadZopelessLayer
744
745 def setUp(self):
746+ super(PrejoinTestCase, self).setUp()
747 self.store = IMasterStore(Product)
748
749 # All products
750
751=== modified file 'lib/lp/services/mail/tests/test_mailbox.py'
752--- lib/lp/services/mail/tests/test_mailbox.py 2009-06-30 16:56:07 +0000
753+++ lib/lp/services/mail/tests/test_mailbox.py 2010-01-08 04:12:19 +0000
754@@ -19,12 +19,10 @@
755 class TestDirectoryMailBox(TestCase):
756
757 def setUp(self):
758+ super(TestDirectoryMailBox, self).setUp()
759 # Create a temp directory.
760 self.email_dir = tempfile.mkdtemp()
761-
762- def tearDown(self):
763- # Delete the directory.
764- rmtree(self.email_dir)
765+ self.addCleanup(rmtree, self.email_dir)
766
767 def test_verify_interface(self):
768 # Make sure that the object actually implements the interface.
769
770=== modified file 'lib/lp/services/memcache/tests/test_memcache_client.py'
771--- lib/lp/services/memcache/tests/test_memcache_client.py 2009-10-15 13:04:44 +0000
772+++ lib/lp/services/memcache/tests/test_memcache_client.py 2010-01-08 04:12:19 +0000
773@@ -18,6 +18,7 @@
774 layer = LaunchpadZopelessLayer
775
776 def setUp(self):
777+ super(MemcacheClientTestCase, self).setUp()
778 self.client = getUtility(IMemcacheClient)
779
780 def test_basics(self):
781
782=== modified file 'lib/lp/soyuz/scripts/tests/test_copypackage.py'
783--- lib/lp/soyuz/scripts/tests/test_copypackage.py 2009-12-21 12:54:47 +0000
784+++ lib/lp/soyuz/scripts/tests/test_copypackage.py 2010-01-08 04:12:19 +0000
785@@ -1236,6 +1236,7 @@
786 The records annotated will be excluded during the operation checks,
787 see checkCopies().
788 """
789+ super(CopyPackageTestCase, self).setUp()
790 pending_sources = SecureSourcePackagePublishingHistory.selectBy(
791 status=PackagePublishingStatus.PENDING)
792 self.sources_pending_ids = [pub.id for pub in pending_sources]
793
794=== modified file 'lib/lp/translations/scripts/tests/test_remove_translations.py'
795--- lib/lp/translations/scripts/tests/test_remove_translations.py 2009-10-17 14:06:03 +0000
796+++ lib/lp/translations/scripts/tests/test_remove_translations.py 2010-01-08 04:12:19 +0000
797@@ -45,6 +45,7 @@
798 layer = LaunchpadZopelessLayer
799
800 def setUp(self):
801+ super(TestRemoveTranslationsConstraints, self).setUp()
802 # Acquire privileges to delete TranslationMessages. We won't
803 # actually do that here, but we'll go through all the motions.
804 self.layer.switchDbUser('postgres')
805@@ -155,6 +156,7 @@
806 layer = LaunchpadZopelessLayer
807
808 def setUp(self):
809+ super(TestRemoveTranslationsOptionsHandling, self).setUp()
810 self.factory = LaunchpadObjectFactory()
811
812 def test_WithNativeArgs(self):
813@@ -222,6 +224,7 @@
814 layer = LaunchpadZopelessLayer
815
816 def setUp(self):
817+ super(TestRemoveTranslations, self).setUp()
818 # Acquire privileges to delete TranslationMessages. That's not
819 # something we normally do. Actually we should test under
820 # rosettaadmin, but that user does not have all the privileges
821@@ -553,6 +556,7 @@
822 layer = LaunchpadZopelessLayer
823
824 def setUp(self):
825+ super(TestRemoveTranslationsUnmasking, self).setUp()
826 self.layer.switchDbUser('postgres')
827
828 # Set up a template with a Laotian translation file. There's