Merge lp:~mwhudson/launchpad/bzr-2.1c1-update into lp:launchpad

Proposed by Michael Hudson-Doyle
Status: Merged
Approved by: Michael Hudson-Doyle
Approved revision: not available
Merged at revision: not available
Proposed branch: lp:~mwhudson/launchpad/bzr-2.1c1-update
Merge into: lp:launchpad
Diff against target: 1289 lines (+216/-170)
39 files modified
bzrplugins/lpserve.py (+2/-2)
cronscripts/mpcreationjobs.py (+2/-2)
cronscripts/rosetta-branches.py (+2/-2)
cronscripts/sendbranchmail.py (+2/-2)
lib/canonical/launchpad/webapp/tests/test_errorlog.py (+1/-0)
lib/lp/code/mail/codehandler.py (+2/-2)
lib/lp/code/mail/tests/test_codehandler.py (+2/-2)
lib/lp/code/model/branchjob.py (+4/-5)
lib/lp/code/model/branchmergeproposaljob.py (+4/-4)
lib/lp/code/model/directbranchcommit.py (+2/-2)
lib/lp/codehosting/bzrutils.py (+2/-2)
lib/lp/codehosting/codeimport/tests/servers.py (+6/-6)
lib/lp/codehosting/codeimport/tests/test_foreigntree.py (+4/-4)
lib/lp/codehosting/codeimport/tests/test_worker.py (+8/-8)
lib/lp/codehosting/codeimport/tests/test_workermonitor.py (+16/-10)
lib/lp/codehosting/puller/tests/test_acceptance.py (+4/-4)
lib/lp/codehosting/puller/tests/test_worker.py (+2/-4)
lib/lp/codehosting/puller/tests/test_worker_formats.py (+0/-5)
lib/lp/codehosting/puller/worker.py (+2/-2)
lib/lp/codehosting/scanner/branch_scanner.py (+3/-2)
lib/lp/codehosting/scanner/fixture.py (+17/-1)
lib/lp/codehosting/scanner/tests/test_bzrsync.py (+6/-6)
lib/lp/codehosting/sftp.py (+1/-1)
lib/lp/codehosting/sshserver/tests/test_logging.py (+0/-18)
lib/lp/codehosting/tests/servers.py (+2/-2)
lib/lp/codehosting/tests/test_acceptance.py (+4/-4)
lib/lp/codehosting/tests/test_branchdistro.py (+2/-2)
lib/lp/codehosting/tests/test_bzrutils.py (+4/-4)
lib/lp/codehosting/tests/test_sftp.py (+6/-0)
lib/lp/codehosting/vfs/branchfs.py (+8/-8)
lib/lp/codehosting/vfs/tests/test_branchfs.py (+45/-24)
lib/lp/codehosting/vfs/tests/test_filesystem.py (+2/-2)
lib/lp/codehosting/vfs/tests/test_transport.py (+2/-2)
lib/lp/codehosting/vfs/transport.py (+13/-13)
lib/lp/testing/__init__.py (+26/-5)
lib/lp/translations/scripts/translations_to_branch.py (+2/-2)
scripts/branch-distro.py (+2/-2)
scripts/update-stacked-on.py (+2/-2)
versions.cfg (+2/-2)
To merge this branch: bzr merge lp:~mwhudson/launchpad/bzr-2.1c1-update
Reviewer Review Type Date Requested Status
Henning Eggers (community) code Approve
Review via email: mp+18358@code.launchpad.net

Commit message

Upgrade to bzr 2.1rc2, with fixes for bug 514090 and bug 513432

To post a comment you must log in.
Revision history for this message
Michael Hudson-Doyle (mwhudson) wrote :

Hi there,

This branch updates Launchpad to bzr 2.1rc1. It's mostly very boring fallout from bzrlib's Server class setUp -> start_server renaming although there a few test infrastructure and logging related changes too.

Revision history for this message
Henning Eggers (henninge) wrote :
Download full text (3.2 KiB)

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

> Hi there,
>
> This branch updates Launchpad to bzr 2.1rc1. It's mostly very boring fallout from bzrlib's Server class setUp -> start_server renaming although there a few test infrastructure and logging related changes too.
>

Yes, this was actually kind of boring but I managed to stay awake ... ;-)

As a consequence, I only have one marginal suggestion. But if you don't
feel like doing something about it, feel free to land this branch ... ;)
Thank you for doing this boring work!

 review approve code

Cheers,
Henning

> === modified file 'lib/lp/codehosting/scanner/branch_scanner.py'
> --- lib/lp/codehosting/scanner/branch_scanner.py 2009-12-17 02:00:16 +0000
> +++ lib/lp/codehosting/scanner/branch_scanner.py 2010-02-01 05:13:16 +0000
> @@ -23,7 +23,7 @@
> from lp.codehosting.scanner.bzrsync import (
> BzrSync, schedule_diff_updates, schedule_translation_upload)
> from lp.codehosting.scanner.fixture import (
> - Fixtures, make_zope_event_fixture, run_with_fixture)
> + Fixtures, make_zope_event_fixture, run_with_fixture, ServerFixture)
> from canonical.launchpad.webapp import canonical_url, errorlog
>
>
> @@ -100,7 +100,8 @@
> schedule_translation_upload,
> ]
> server = get_scanner_server()
> - fixture = Fixtures([server, make_zope_event_fixture(*event_handlers)])
> + fixture = Fixtures(
> + [ServerFixture(server), make_zope_event_fixture(*event_handlers)])

Wouldn't it be cool to be able to just do "IFixture(server)" here? See
below.

> self.log.info('Starting branch scanning')
> branches = getUtility(IBranchScanner).getBranchesToScan()
> run_with_fixture(fixture, self.scanBranches, branches)
>
> === modified file 'lib/lp/codehosting/scanner/fixture.py'
> --- lib/lp/codehosting/scanner/fixture.py 2009-06-30 16:56:07 +0000
> +++ lib/lp/codehosting/scanner/fixture.py 2010-02-01 05:13:16 +0000
> @@ -1,4 +1,4 @@
> -# Copyright 2009 Canonical Ltd. This software is licensed under the
> +# Copyright 2009, 2010 Canonical Ltd. This software is licensed under the
> # GNU Affero General Public License version 3 (see the file LICENSE).
>
> # pylint: disable-msg=E0211
> @@ -16,6 +16,7 @@
> 'IFixture',
> 'make_zope_event_fixture',
> 'run_with_fixture',
> + 'ServerFixture',
> 'with_fixture',
> ]
>
> @@ -121,3 +122,18 @@
>
> def make_zope_event_fixture(*handlers):
> return Fixtures(map(ZopeEventHandlerFixture, handlers))
> +
> +
> +class ServerFixture:
> + """Adapt a bzrlib `Server` into an `IFixture`."""
> +
> + implements(IFixture)

adapts(...)

Maybe this could be registered as a real adapter? But I am not sure if
there is an interface available that could be adapted.

> +
> + def __init__(self, server):
> + self.server = server
> +
> + def setUp(self):
> + self.server.start_server()
> +
> + def tearDown(self):
> + self.server.stop_server()
>

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.9 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org

iEYEARECAAYFAktmxtgACgkQBT3oW1L17iiaIACgv/EpHTRVrmy...

Read more...

review: Approve (code)

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
=== modified file 'bzrplugins/lpserve.py'
--- bzrplugins/lpserve.py 2009-07-17 00:26:05 +0000
+++ bzrplugins/lpserve.py 2010-02-04 00:33:17 +0000
@@ -92,7 +92,7 @@
92 lp_server = get_lp_server(92 lp_server = get_lp_server(
93 int(user_id), branchfs_endpoint_url,93 int(user_id), branchfs_endpoint_url,
94 upload_directory, mirror_directory)94 upload_directory, mirror_directory)
95 lp_server.setUp()95 lp_server.start_server()
9696
97 old_lockdir_timeout = lockdir._DEFAULT_TIMEOUT_SECONDS97 old_lockdir_timeout = lockdir._DEFAULT_TIMEOUT_SECONDS
98 try:98 try:
@@ -102,7 +102,7 @@
102 self.run_server(smart_server)102 self.run_server(smart_server)
103 finally:103 finally:
104 lockdir._DEFAULT_TIMEOUT_SECONDS = old_lockdir_timeout104 lockdir._DEFAULT_TIMEOUT_SECONDS = old_lockdir_timeout
105 lp_server.tearDown()105 lp_server.stop_server()
106106
107107
108register_command(cmd_launchpad_server)108register_command(cmd_launchpad_server)
109109
=== modified file 'cronscripts/mpcreationjobs.py'
--- cronscripts/mpcreationjobs.py 2009-10-13 14:38:07 +0000
+++ cronscripts/mpcreationjobs.py 2010-02-04 00:33:17 +0000
@@ -33,11 +33,11 @@
33 job_source = getUtility(IMergeProposalCreatedJobSource)33 job_source = getUtility(IMergeProposalCreatedJobSource)
34 runner = JobRunner.fromReady(job_source, self.logger)34 runner = JobRunner.fromReady(job_source, self.logger)
35 server = get_scanner_server()35 server = get_scanner_server()
36 server.setUp()36 server.start_server()
37 try:37 try:
38 runner.runAll()38 runner.runAll()
39 finally:39 finally:
40 server.tearDown()40 server.stop_server()
41 self.logger.info(41 self.logger.info(
42 'Ran %d MergeProposalCreatedJobs.', len(runner.completed_jobs))42 'Ran %d MergeProposalCreatedJobs.', len(runner.completed_jobs))
4343
4444
=== modified file 'cronscripts/rosetta-branches.py'
--- cronscripts/rosetta-branches.py 2009-10-13 14:38:07 +0000
+++ cronscripts/rosetta-branches.py 2010-02-04 00:33:17 +0000
@@ -32,11 +32,11 @@
32 runner = JobRunner.fromReady(32 runner = JobRunner.fromReady(
33 getUtility(IRosettaUploadJobSource), self.logger)33 getUtility(IRosettaUploadJobSource), self.logger)
34 server = get_scanner_server()34 server = get_scanner_server()
35 server.setUp()35 server.start_server()
36 try:36 try:
37 runner.runAll()37 runner.runAll()
38 finally:38 finally:
39 server.tearDown()39 server.stop_server()
40 self.logger.info('Ran %d RosettaBranchJobs.',40 self.logger.info('Ran %d RosettaBranchJobs.',
41 len(runner.completed_jobs))41 len(runner.completed_jobs))
4242
4343
=== modified file 'cronscripts/sendbranchmail.py'
--- cronscripts/sendbranchmail.py 2009-10-13 14:38:07 +0000
+++ cronscripts/sendbranchmail.py 2010-02-04 00:33:17 +0000
@@ -33,11 +33,11 @@
33 jobs.extend(getUtility(IRevisionsAddedJobSource).iterReady())33 jobs.extend(getUtility(IRevisionsAddedJobSource).iterReady())
34 runner = JobRunner(jobs, self.logger)34 runner = JobRunner(jobs, self.logger)
35 server = get_scanner_server()35 server = get_scanner_server()
36 server.setUp()36 server.start_server()
37 try:37 try:
38 runner.runAll()38 runner.runAll()
39 finally:39 finally:
40 server.tearDown()40 server.stop_server()
41 self.logger.info(41 self.logger.info(
42 'Ran %d RevisionMailJobs.' % len(runner.completed_jobs))42 'Ran %d RevisionMailJobs.' % len(runner.completed_jobs))
4343
4444
=== modified file 'lib/canonical/launchpad/webapp/tests/test_errorlog.py'
--- lib/canonical/launchpad/webapp/tests/test_errorlog.py 2009-11-26 16:06:55 +0000
+++ lib/canonical/launchpad/webapp/tests/test_errorlog.py 2010-02-04 00:33:17 +0000
@@ -581,6 +581,7 @@
581 class UnprintableException(Exception):581 class UnprintableException(Exception):
582 def __str__(self):582 def __str__(self):
583 raise RuntimeError('arrgh')583 raise RuntimeError('arrgh')
584 __repr__ = __str__
584585
585 log = InstalledHandler('SiteError')586 log = InstalledHandler('SiteError')
586 try:587 try:
587588
=== modified file 'lib/lp/code/mail/codehandler.py'
--- lib/lp/code/mail/codehandler.py 2009-12-07 02:57:22 +0000
+++ lib/lp/code/mail/codehandler.py 2010-02-04 00:33:17 +0000
@@ -491,7 +491,7 @@
491491
492 # Create the LP server as if the submitter was pushing a branch to LP.492 # Create the LP server as if the submitter was pushing a branch to LP.
493 lp_server = get_lp_server(submitter.id)493 lp_server = get_lp_server(submitter.id)
494 lp_server.setUp()494 lp_server.start_server()
495 try:495 try:
496 source_url = urljoin(lp_server.get_url(), db_source.unique_name)496 source_url = urljoin(lp_server.get_url(), db_source.unique_name)
497 target_url = urljoin(lp_server.get_url(), db_target.unique_name)497 target_url = urljoin(lp_server.get_url(), db_target.unique_name)
@@ -512,7 +512,7 @@
512 db_source.requestMirror()512 db_source.requestMirror()
513 return db_source513 return db_source
514 finally:514 finally:
515 lp_server.tearDown()515 lp_server.stop_server()
516516
517 def _pullRevisionsFromMergeDirectiveIntoSourceBranch(self, md,517 def _pullRevisionsFromMergeDirectiveIntoSourceBranch(self, md,
518 target_url,518 target_url,
519519
=== modified file 'lib/lp/code/mail/tests/test_codehandler.py'
--- lib/lp/code/mail/tests/test_codehandler.py 2010-01-12 01:25:35 +0000
+++ lib/lp/code/mail/tests/test_codehandler.py 2010-02-04 00:33:17 +0000
@@ -850,8 +850,8 @@
850 The client has write access to the branch.850 The client has write access to the branch.
851 """851 """
852 lp_server = get_lp_server(db_branch.owner.id)852 lp_server = get_lp_server(db_branch.owner.id)
853 lp_server.setUp()853 lp_server.start_server()
854 self.addCleanup(lp_server.tearDown)854 self.addCleanup(lp_server.stop_server)
855 branch_url = urljoin(lp_server.get_url(), db_branch.unique_name)855 branch_url = urljoin(lp_server.get_url(), db_branch.unique_name)
856 return Branch.open(branch_url)856 return Branch.open(branch_url)
857857
858858
=== modified file 'lib/lp/code/model/branchjob.py'
--- lib/lp/code/model/branchjob.py 2010-02-03 11:17:12 +0000
+++ lib/lp/code/model/branchjob.py 2010-02-04 00:33:17 +0000
@@ -50,8 +50,7 @@
50from lp.code.model.revision import RevisionSet50from lp.code.model.revision import RevisionSet
51from lp.codehosting.scanner import buglinks, email, mergedetection51from lp.codehosting.scanner import buglinks, email, mergedetection
52from lp.codehosting.scanner.fixture import (52from lp.codehosting.scanner.fixture import (
53 Fixtures, make_zope_event_fixture, run_with_fixture53 Fixtures, ServerFixture, make_zope_event_fixture)
54)
55from lp.codehosting.scanner.bzrsync import (54from lp.codehosting.scanner.bzrsync import (
56 BzrSync, schedule_diff_updates, schedule_translation_upload55 BzrSync, schedule_diff_updates, schedule_translation_upload
57)56)
@@ -299,7 +298,7 @@
299 schedule_translation_upload,298 schedule_translation_upload,
300 ]299 ]
301 fixture = Fixtures(300 fixture = Fixtures(
302 [cls.server, make_zope_event_fixture(*event_handlers)])301 [ServerFixture(cls.server), make_zope_event_fixture(*event_handlers)])
303 fixture.setUp()302 fixture.setUp()
304 yield303 yield
305 fixture.tearDown()304 fixture.tearDown()
@@ -329,9 +328,9 @@
329 """See `IBranchUpgradeJobSource`."""328 """See `IBranchUpgradeJobSource`."""
330 errorlog.globalErrorUtility.configure('upgrade_branches')329 errorlog.globalErrorUtility.configure('upgrade_branches')
331 server = get_multi_server(write_hosted=True)330 server = get_multi_server(write_hosted=True)
332 server.setUp()331 server.start_server()
333 yield332 yield
334 server.tearDown()333 server.stop_server()
335334
336 def run(self):335 def run(self):
337 """See `IBranchUpgradeJob`."""336 """See `IBranchUpgradeJob`."""
338337
=== modified file 'lib/lp/code/model/branchmergeproposaljob.py'
--- lib/lp/code/model/branchmergeproposaljob.py 2010-02-01 20:49:35 +0000
+++ lib/lp/code/model/branchmergeproposaljob.py 2010-02-04 00:33:17 +0000
@@ -272,9 +272,9 @@
272 """See `IUpdatePreviewDiffJobSource`."""272 """See `IUpdatePreviewDiffJobSource`."""
273 errorlog.globalErrorUtility.configure('update_preview_diffs')273 errorlog.globalErrorUtility.configure('update_preview_diffs')
274 server = get_scanner_server()274 server = get_scanner_server()
275 server.setUp()275 server.start_server()
276 yield276 yield
277 server.tearDown()277 server.stop_server()
278278
279 def run(self):279 def run(self):
280 """See `IRunnableJob`"""280 """See `IRunnableJob`"""
@@ -339,11 +339,11 @@
339 setupInteraction(principal, email_addr)339 setupInteraction(principal, email_addr)
340340
341 server = get_multi_server(write_hosted=True)341 server = get_multi_server(write_hosted=True)
342 server.setUp()342 server.start_server()
343 try:343 try:
344 return CodeHandler().processMergeProposal(message)344 return CodeHandler().processMergeProposal(message)
345 finally:345 finally:
346 server.tearDown()346 server.stop_server()
347347
348 def getOopsRecipients(self):348 def getOopsRecipients(self):
349 message = self.getMessage()349 message = self.getMessage()
350350
=== modified file 'lib/lp/code/model/directbranchcommit.py'
--- lib/lp/code/model/directbranchcommit.py 2009-11-18 13:26:03 +0000
+++ lib/lp/code/model/directbranchcommit.py 2010-02-04 00:33:17 +0000
@@ -56,12 +56,12 @@
56 allows write access to lp-hosted:/// URLs:56 allows write access to lp-hosted:/// URLs:
5757
58 bzrserver = get_multi_server(write_hosted=True)58 bzrserver = get_multi_server(write_hosted=True)
59 bzrserver.setUp()59 bzrserver.start_server()
60 try:60 try:
61 branchcommit = DirectBranchCommit(branch)61 branchcommit = DirectBranchCommit(branch)
62 # ...62 # ...
63 finally:63 finally:
64 bzrserver.tearDown()64 bzrserver.stop_server()
6565
66 Or in tests, just call `useBzrBranches` before creating a66 Or in tests, just call `useBzrBranches` before creating a
67 `DirectBranchCommit`.67 `DirectBranchCommit`.
6868
=== modified file 'lib/lp/codehosting/bzrutils.py'
--- lib/lp/codehosting/bzrutils.py 2009-12-22 23:50:27 +0000
+++ lib/lp/codehosting/bzrutils.py 2010-02-04 00:33:17 +0000
@@ -217,13 +217,13 @@
217 """217 """
218 self.schemes = schemes218 self.schemes = schemes
219219
220 def setUp(self):220 def start_server(self):
221 """Prevent transports being created for specified schemes."""221 """Prevent transports being created for specified schemes."""
222 for scheme in self.schemes:222 for scheme in self.schemes:
223 register_transport(scheme, self._deny)223 register_transport(scheme, self._deny)
224 self._is_set_up = True224 self._is_set_up = True
225225
226 def tearDown(self):226 def stop_server(self):
227 """Re-enable creation of transports for specified schemes."""227 """Re-enable creation of transports for specified schemes."""
228 if not self._is_set_up:228 if not self._is_set_up:
229 return229 return
230230
=== modified file 'lib/lp/codehosting/codeimport/tests/servers.py'
--- lib/lp/codehosting/codeimport/tests/servers.py 2009-12-14 18:11:07 +0000
+++ lib/lp/codehosting/codeimport/tests/servers.py 2010-02-04 00:33:17 +0000
@@ -82,8 +82,8 @@
82 else:82 else:
83 return local_path_to_url(self.repository_path)83 return local_path_to_url(self.repository_path)
8484
85 def setUp(self):85 def start_server(self):
86 super(SubversionServer, self).setUp()86 super(SubversionServer, self).start_server()
87 self.createRepository(self.repository_path)87 self.createRepository(self.repository_path)
88 if self._use_svn_serve:88 if self._use_svn_serve:
89 conf_path = os.path.join(89 conf_path = os.path.join(
@@ -109,8 +109,8 @@
109 raise AssertionError(109 raise AssertionError(
110 "svnserve didn't start accepting connections")110 "svnserve didn't start accepting connections")
111111
112 def tearDown(self):112 def stop_server(self):
113 super(SubversionServer, self).tearDown()113 super(SubversionServer, self).stop_server()
114 if self._use_svn_serve:114 if self._use_svn_serve:
115 os.kill(self._svnserve.pid, signal.SIGINT)115 os.kill(self._svnserve.pid, signal.SIGINT)
116 self._svnserve.communicate()116 self._svnserve.communicate()
@@ -186,9 +186,9 @@
186 module=module_name, log="import", vendor="vendor",186 module=module_name, log="import", vendor="vendor",
187 release=['release'], dir='.')187 release=['release'], dir='.')
188188
189 def setUp(self):189 def start_server(self):
190 # Initialize the repository.190 # Initialize the repository.
191 super(CVSServer, self).setUp()191 super(CVSServer, self).start_server()
192 self._repository = self.createRepository(self._repository_path)192 self._repository = self.createRepository(self._repository_path)
193193
194194
195195
=== modified file 'lib/lp/codehosting/codeimport/tests/test_foreigntree.py'
--- lib/lp/codehosting/codeimport/tests/test_foreigntree.py 2009-06-25 04:06:00 +0000
+++ lib/lp/codehosting/codeimport/tests/test_foreigntree.py 2010-02-04 00:33:17 +0000
@@ -40,8 +40,8 @@
40 def setUp(self):40 def setUp(self):
41 TestCaseWithTransport.setUp(self)41 TestCaseWithTransport.setUp(self)
42 svn_server = SubversionServer('repository_path')42 svn_server = SubversionServer('repository_path')
43 svn_server.setUp()43 svn_server.start_server()
44 self.addCleanup(svn_server.tearDown)44 self.addCleanup(svn_server.stop_server)
45 self.svn_branch_url = svn_server.makeBranch(45 self.svn_branch_url = svn_server.makeBranch(
46 'trunk', [('README', 'original')])46 'trunk', [('README', 'original')])
4747
@@ -122,11 +122,11 @@
122 def setUp(self):122 def setUp(self):
123 TestCaseWithTransport.setUp(self)123 TestCaseWithTransport.setUp(self)
124 self.cvs_server = CVSServer('repository_path')124 self.cvs_server = CVSServer('repository_path')
125 self.cvs_server.setUp()125 self.cvs_server.start_server()
126 self.module_name = 'test_module'126 self.module_name = 'test_module'
127 self.cvs_server.makeModule(127 self.cvs_server.makeModule(
128 self.module_name, [('README', 'Random content\n')])128 self.module_name, [('README', 'Random content\n')])
129 self.addCleanup(self.cvs_server.tearDown)129 self.addCleanup(self.cvs_server.stop_server)
130130
131 def test_path(self):131 def test_path(self):
132 # The local path is passed to the constructor and available as132 # The local path is passed to the constructor and available as
133133
=== modified file 'lib/lp/codehosting/codeimport/tests/test_worker.py'
--- lib/lp/codehosting/codeimport/tests/test_worker.py 2010-02-01 03:55:59 +0000
+++ lib/lp/codehosting/codeimport/tests/test_worker.py 2010-02-04 00:33:17 +0000
@@ -773,8 +773,8 @@
773 """Make a CVS `CodeImportSourceDetails` pointing at a real CVS repo.773 """Make a CVS `CodeImportSourceDetails` pointing at a real CVS repo.
774 """774 """
775 cvs_server = CVSServer(self.makeTemporaryDirectory())775 cvs_server = CVSServer(self.makeTemporaryDirectory())
776 cvs_server.setUp()776 cvs_server.start_server()
777 self.addCleanup(cvs_server.tearDown)777 self.addCleanup(cvs_server.stop_server)
778778
779 cvs_server.makeModule('trunk', [('README', 'original\n')])779 cvs_server.makeModule('trunk', [('README', 'original\n')])
780780
@@ -804,8 +804,8 @@
804 """Make a SVN `CodeImportSourceDetails` pointing at a real SVN repo.804 """Make a SVN `CodeImportSourceDetails` pointing at a real SVN repo.
805 """805 """
806 svn_server = SubversionServer(self.makeTemporaryDirectory())806 svn_server = SubversionServer(self.makeTemporaryDirectory())
807 svn_server.setUp()807 svn_server.start_server()
808 self.addCleanup(svn_server.tearDown)808 self.addCleanup(svn_server.stop_server)
809809
810 svn_branch_url = svn_server.makeBranch(branch_name, files)810 svn_branch_url = svn_server.makeBranch(branch_name, files)
811 svn_branch_url = svn_branch_url.replace('://localhost/', ':///')811 svn_branch_url = svn_branch_url.replace('://localhost/', ':///')
@@ -897,8 +897,8 @@
897 """897 """
898 repository_path = self.makeTemporaryDirectory()898 repository_path = self.makeTemporaryDirectory()
899 git_server = GitServer(repository_path)899 git_server = GitServer(repository_path)
900 git_server.setUp()900 git_server.start_server()
901 self.addCleanup(git_server.tearDown)901 self.addCleanup(git_server.stop_server)
902902
903 git_server.makeRepo(files)903 git_server.makeRepo(files)
904 self.foreign_commit_count = 1904 self.foreign_commit_count = 1
@@ -948,8 +948,8 @@
948 """948 """
949 repository_path = self.makeTemporaryDirectory()949 repository_path = self.makeTemporaryDirectory()
950 hg_server = MercurialServer(repository_path)950 hg_server = MercurialServer(repository_path)
951 hg_server.setUp()951 hg_server.start_server()
952 self.addCleanup(hg_server.tearDown)952 self.addCleanup(hg_server.stop_server)
953953
954 hg_server.makeRepo(files)954 hg_server.makeRepo(files)
955 self.foreign_commit_count = 1955 self.foreign_commit_count = 1
956956
=== modified file 'lib/lp/codehosting/codeimport/tests/test_workermonitor.py'
--- lib/lp/codehosting/codeimport/tests/test_workermonitor.py 2010-02-01 03:49:23 +0000
+++ lib/lp/codehosting/codeimport/tests/test_workermonitor.py 2010-02-04 00:33:17 +0000
@@ -358,6 +358,9 @@
358 """Tests for `CodeImportWorkerMonitor.run` that don't launch a subprocess.358 """Tests for `CodeImportWorkerMonitor.run` that don't launch a subprocess.
359 """359 """
360360
361 # This works around a clash between the TrialTestCase and the BzrTestCase.
362 skip = None
363
361 class WorkerMonitor(CodeImportWorkerMonitor):364 class WorkerMonitor(CodeImportWorkerMonitor):
362 """See `CodeImportWorkerMonitor`.365 """See `CodeImportWorkerMonitor`.
363366
@@ -472,6 +475,9 @@
472475
473 layer = TwistedLaunchpadZopelessLayer476 layer = TwistedLaunchpadZopelessLayer
474477
478 # This works around a clash between the TrialTestCase and the BzrTestCase.
479 skip = None
480
475 def setUp(self):481 def setUp(self):
476 BzrTestCase.setUp(self)482 BzrTestCase.setUp(self)
477 login('no-priv@canonical.com')483 login('no-priv@canonical.com')
@@ -489,8 +495,8 @@
489 def makeCVSCodeImport(self):495 def makeCVSCodeImport(self):
490 """Make a `CodeImport` that points to a real CVS repository."""496 """Make a `CodeImport` that points to a real CVS repository."""
491 cvs_server = CVSServer(self.repo_path)497 cvs_server = CVSServer(self.repo_path)
492 cvs_server.setUp()498 cvs_server.start_server()
493 self.addCleanup(cvs_server.tearDown)499 self.addCleanup(cvs_server.stop_server)
494500
495 cvs_server.makeModule('trunk', [('README', 'original\n')])501 cvs_server.makeModule('trunk', [('README', 'original\n')])
496 self.foreign_commit_count = 2502 self.foreign_commit_count = 2
@@ -501,8 +507,8 @@
501 def makeSVNCodeImport(self):507 def makeSVNCodeImport(self):
502 """Make a `CodeImport` that points to a real Subversion repository."""508 """Make a `CodeImport` that points to a real Subversion repository."""
503 self.subversion_server = SubversionServer(self.repo_path)509 self.subversion_server = SubversionServer(self.repo_path)
504 self.subversion_server.setUp()510 self.subversion_server.start_server()
505 self.addCleanup(self.subversion_server.tearDown)511 self.addCleanup(self.subversion_server.stop_server)
506 url = self.subversion_server.makeBranch(512 url = self.subversion_server.makeBranch(
507 'trunk', [('README', 'contents')])513 'trunk', [('README', 'contents')])
508 self.foreign_commit_count = 2514 self.foreign_commit_count = 2
@@ -513,8 +519,8 @@
513 """Make a `CodeImport` that points to a real Subversion repository."""519 """Make a `CodeImport` that points to a real Subversion repository."""
514 self.subversion_server = SubversionServer(520 self.subversion_server = SubversionServer(
515 self.repo_path, use_svn_serve=True)521 self.repo_path, use_svn_serve=True)
516 self.subversion_server.setUp()522 self.subversion_server.start_server()
517 self.addCleanup(self.subversion_server.tearDown)523 self.addCleanup(self.subversion_server.stop_server)
518 url = self.subversion_server.makeBranch(524 url = self.subversion_server.makeBranch(
519 'trunk', [('README', 'contents')])525 'trunk', [('README', 'contents')])
520 self.foreign_commit_count = 2526 self.foreign_commit_count = 2
@@ -526,8 +532,8 @@
526 """Make a `CodeImport` that points to a real Git repository."""532 """Make a `CodeImport` that points to a real Git repository."""
527 load_optional_plugin('git')533 load_optional_plugin('git')
528 self.git_server = GitServer(self.repo_path)534 self.git_server = GitServer(self.repo_path)
529 self.git_server.setUp()535 self.git_server.start_server()
530 self.addCleanup(self.git_server.tearDown)536 self.addCleanup(self.git_server.stop_server)
531537
532 self.git_server.makeRepo([('README', 'contents')])538 self.git_server.makeRepo([('README', 'contents')])
533 self.foreign_commit_count = 1539 self.foreign_commit_count = 1
@@ -538,8 +544,8 @@
538 """Make a `CodeImport` that points to a real Mercurial repository."""544 """Make a `CodeImport` that points to a real Mercurial repository."""
539 load_optional_plugin('hg')545 load_optional_plugin('hg')
540 self.hg_server = MercurialServer(self.repo_path)546 self.hg_server = MercurialServer(self.repo_path)
541 self.hg_server.setUp()547 self.hg_server.start_server()
542 self.addCleanup(self.hg_server.tearDown)548 self.addCleanup(self.hg_server.stop_server)
543549
544 self.hg_server.makeRepo([('README', 'contents')])550 self.hg_server.makeRepo([('README', 'contents')])
545 self.foreign_commit_count = 1551 self.foreign_commit_count = 1
546552
=== modified file 'lib/lp/codehosting/puller/tests/test_acceptance.py'
--- lib/lp/codehosting/puller/tests/test_acceptance.py 2009-09-17 05:07:50 +0000
+++ lib/lp/codehosting/puller/tests/test_acceptance.py 2010-02-04 00:33:17 +0000
@@ -140,7 +140,7 @@
140 """Serve the current directory over HTTP, returning the server URL."""140 """Serve the current directory over HTTP, returning the server URL."""
141 http_server = HttpServer()141 http_server = HttpServer()
142 http_server.port = port142 http_server.port = port
143 http_server.setUp()143 http_server.start_server()
144 # Join cleanup added before the tearDown so the tearDown is executed144 # Join cleanup added before the tearDown so the tearDown is executed
145 # first as this tells the thread to die. We then join explicitly as145 # first as this tells the thread to die. We then join explicitly as
146 # the HttpServer.tearDown does not join. There is a check in the146 # the HttpServer.tearDown does not join. There is a check in the
@@ -149,7 +149,7 @@
149 # threads and let the garbage collector get them, however this causes149 # threads and let the garbage collector get them, however this causes
150 # issues with the test runner.150 # issues with the test runner.
151 self.addCleanup(http_server._http_thread.join)151 self.addCleanup(http_server._http_thread.join)
152 self.addCleanup(http_server.tearDown)152 self.addCleanup(http_server.stop_server)
153 return http_server.get_url().rstrip('/')153 return http_server.get_url().rstrip('/')
154154
155 def getLPServerForUser(self, user):155 def getLPServerForUser(self, user):
@@ -167,8 +167,8 @@
167 # in a subprocess which would have no way of knowing which directories167 # in a subprocess which would have no way of knowing which directories
168 # to look in if we used freshly created temporary directories.168 # to look in if we used freshly created temporary directories.
169 lp_server = get_lp_server(user.id)169 lp_server = get_lp_server(user.id)
170 lp_server.setUp()170 lp_server.start_server()
171 self.addCleanup(lp_server.tearDown)171 self.addCleanup(lp_server.stop_server)
172 return lp_server172 return lp_server
173173
174 def openBranchAsUser(self, db_branch, user):174 def openBranchAsUser(self, db_branch, user):
175175
=== modified file 'lib/lp/codehosting/puller/tests/test_worker.py'
--- lib/lp/codehosting/puller/tests/test_worker.py 2010-01-07 06:40:23 +0000
+++ lib/lp/codehosting/puller/tests/test_worker.py 2010-02-04 00:33:17 +0000
@@ -34,7 +34,6 @@
34from lp.testing import TestCase34from lp.testing import TestCase
35from lp.testing.factory import LaunchpadObjectFactory35from lp.testing.factory import LaunchpadObjectFactory
36from lazr.uri import URI36from lazr.uri import URI
37from canonical.testing import reset_logging
3837
3938
40def get_netstrings(line):39def get_netstrings(line):
@@ -737,13 +736,12 @@
737 def tearDown(self):736 def tearDown(self):
738 TestCaseWithTransport.tearDown(self)737 TestCaseWithTransport.tearDown(self)
739 bzrlib.ui.ui_factory = self.saved_factory738 bzrlib.ui.ui_factory = self.saved_factory
740 reset_logging()
741739
742 def getHttpServerForCwd(self):740 def getHttpServerForCwd(self):
743 """Get an `HttpServer` instance that serves from '.'."""741 """Get an `HttpServer` instance that serves from '.'."""
744 server = HttpServer()742 server = HttpServer()
745 server.setUp()743 server.start_server()
746 self.addCleanup(server.tearDown)744 self.addCleanup(server.stop_server)
747 # The gc.collect allows the threads behind any HTTP requests to exit.745 # The gc.collect allows the threads behind any HTTP requests to exit.
748 self.addCleanup(gc.collect)746 self.addCleanup(gc.collect)
749 return server747 return server
750748
=== modified file 'lib/lp/codehosting/puller/tests/test_worker_formats.py'
--- lib/lp/codehosting/puller/tests/test_worker_formats.py 2009-12-22 23:52:00 +0000
+++ lib/lp/codehosting/puller/tests/test_worker_formats.py 2010-02-04 00:33:17 +0000
@@ -17,7 +17,6 @@
17from lp.codehosting.puller.tests import PullerWorkerMixin17from lp.codehosting.puller.tests import PullerWorkerMixin
18from lp.codehosting.tests.helpers import LoomTestMixin18from lp.codehosting.tests.helpers import LoomTestMixin
19from lazr.uri import URI19from lazr.uri import URI
20from canonical.testing import reset_logging
2120
2221
23class TestPullerWorkerFormats(TestCaseWithRepository, PullerWorkerMixin,22class TestPullerWorkerFormats(TestCaseWithRepository, PullerWorkerMixin,
@@ -31,10 +30,6 @@
31 self.get_url(self._source_branch_path),30 self.get_url(self._source_branch_path),
32 self.get_url('dest-path'))31 self.get_url('dest-path'))
3332
34 def tearDown(self):
35 TestCaseWithRepository.tearDown(self)
36 reset_logging()
37
38 def _createSourceBranch(self, repository_format, bzrdir_format,33 def _createSourceBranch(self, repository_format, bzrdir_format,
39 branch_format=None):34 branch_format=None):
40 """Make a source branch with the given formats."""35 """Make a source branch with the given formats."""
4136
=== modified file 'lib/lp/codehosting/puller/worker.py'
--- lib/lp/codehosting/puller/worker.py 2010-01-07 05:04:49 +0000
+++ lib/lp/codehosting/puller/worker.py 2010-02-04 00:33:17 +0000
@@ -419,12 +419,12 @@
419 from lp.codehosting.vfs import get_puller_server419 from lp.codehosting.vfs import get_puller_server
420420
421 server = get_puller_server()421 server = get_puller_server()
422 server.setUp()422 server.start_server()
423 try:423 try:
424 source_branch = self.branch_mirrorer.open(self.source)424 source_branch = self.branch_mirrorer.open(self.source)
425 return self.branch_mirrorer.mirror(source_branch, self.dest)425 return self.branch_mirrorer.mirror(source_branch, self.dest)
426 finally:426 finally:
427 server.tearDown()427 server.stop_server()
428428
429 def mirror(self):429 def mirror(self):
430 """Open source and destination branches and pull source into430 """Open source and destination branches and pull source into
431431
=== modified file 'lib/lp/codehosting/scanner/branch_scanner.py'
--- lib/lp/codehosting/scanner/branch_scanner.py 2009-12-17 02:00:16 +0000
+++ lib/lp/codehosting/scanner/branch_scanner.py 2010-02-04 00:33:17 +0000
@@ -23,7 +23,7 @@
23from lp.codehosting.scanner.bzrsync import (23from lp.codehosting.scanner.bzrsync import (
24 BzrSync, schedule_diff_updates, schedule_translation_upload)24 BzrSync, schedule_diff_updates, schedule_translation_upload)
25from lp.codehosting.scanner.fixture import (25from lp.codehosting.scanner.fixture import (
26 Fixtures, make_zope_event_fixture, run_with_fixture)26 Fixtures, make_zope_event_fixture, run_with_fixture, ServerFixture)
27from canonical.launchpad.webapp import canonical_url, errorlog27from canonical.launchpad.webapp import canonical_url, errorlog
2828
2929
@@ -100,7 +100,8 @@
100 schedule_translation_upload,100 schedule_translation_upload,
101 ]101 ]
102 server = get_scanner_server()102 server = get_scanner_server()
103 fixture = Fixtures([server, make_zope_event_fixture(*event_handlers)])103 fixture = Fixtures(
104 [ServerFixture(server), make_zope_event_fixture(*event_handlers)])
104 self.log.info('Starting branch scanning')105 self.log.info('Starting branch scanning')
105 branches = getUtility(IBranchScanner).getBranchesToScan()106 branches = getUtility(IBranchScanner).getBranchesToScan()
106 run_with_fixture(fixture, self.scanBranches, branches)107 run_with_fixture(fixture, self.scanBranches, branches)
107108
=== modified file 'lib/lp/codehosting/scanner/fixture.py'
--- lib/lp/codehosting/scanner/fixture.py 2009-06-30 16:56:07 +0000
+++ lib/lp/codehosting/scanner/fixture.py 2010-02-04 00:33:17 +0000
@@ -1,4 +1,4 @@
1# Copyright 2009 Canonical Ltd. This software is licensed under the1# Copyright 2009, 2010 Canonical Ltd. This software is licensed under the
2# GNU Affero General Public License version 3 (see the file LICENSE).2# GNU Affero General Public License version 3 (see the file LICENSE).
33
4# pylint: disable-msg=E02114# pylint: disable-msg=E0211
@@ -16,6 +16,7 @@
16 'IFixture',16 'IFixture',
17 'make_zope_event_fixture',17 'make_zope_event_fixture',
18 'run_with_fixture',18 'run_with_fixture',
19 'ServerFixture',
19 'with_fixture',20 'with_fixture',
20 ]21 ]
2122
@@ -121,3 +122,18 @@
121122
122def make_zope_event_fixture(*handlers):123def make_zope_event_fixture(*handlers):
123 return Fixtures(map(ZopeEventHandlerFixture, handlers))124 return Fixtures(map(ZopeEventHandlerFixture, handlers))
125
126
127class ServerFixture:
128 """Adapt a bzrlib `Server` into an `IFixture`."""
129
130 implements(IFixture)
131
132 def __init__(self, server):
133 self.server = server
134
135 def setUp(self):
136 self.server.start_server()
137
138 def tearDown(self):
139 self.server.stop_server()
124140
=== modified file 'lib/lp/codehosting/scanner/tests/test_bzrsync.py'
--- lib/lp/codehosting/scanner/tests/test_bzrsync.py 2010-01-06 09:26:56 +0000
+++ lib/lp/codehosting/scanner/tests/test_bzrsync.py 2010-02-04 00:33:17 +0000
@@ -73,7 +73,7 @@
73 self._url_prefix = url_prefix73 self._url_prefix = url_prefix
74 self._chroot_server = None74 self._chroot_server = None
7575
76 def setUp(self):76 def start_server(self):
77 """Activate the transport URL."""77 """Activate the transport URL."""
78 # The scanner tests assume that branches live on a Launchpad virtual78 # The scanner tests assume that branches live on a Launchpad virtual
79 # filesystem rooted at 'lp-mirrored:///'. Rather than provide the79 # filesystem rooted at 'lp-mirrored:///'. Rather than provide the
@@ -81,11 +81,11 @@
81 # transport do the work.81 # transport do the work.
82 register_transport(self._url_prefix, self._transportFactory)82 register_transport(self._url_prefix, self._transportFactory)
83 self._chroot_server = ChrootServer(self._transport)83 self._chroot_server = ChrootServer(self._transport)
84 self._chroot_server.setUp()84 self._chroot_server.start_server()
8585
86 def tearDown(self):86 def stop_server(self):
87 """Deactivate the transport URL."""87 """Deactivate the transport URL."""
88 self._chroot_server.tearDown()88 self._chroot_server.stop_server()
89 unregister_transport(self._url_prefix, self._transportFactory)89 unregister_transport(self._url_prefix, self._transportFactory)
9090
91 def _transportFactory(self, url):91 def _transportFactory(self, url):
@@ -111,8 +111,8 @@
111 # Here we set up a fake so that we can test without worrying about111 # Here we set up a fake so that we can test without worrying about
112 # authservers and the like.112 # authservers and the like.
113 server = FakeTransportServer(self.get_transport())113 server = FakeTransportServer(self.get_transport())
114 server.setUp()114 server.start_server()
115 self.addCleanup(server.tearDown)115 self.addCleanup(server.stop_server)
116116
117 def makeFixtures(self):117 def makeFixtures(self):
118 """Makes test fixtures before we switch to the scanner db user."""118 """Makes test fixtures before we switch to the scanner db user."""
119119
=== modified file 'lib/lp/codehosting/sftp.py'
--- lib/lp/codehosting/sftp.py 2009-11-27 21:59:26 +0000
+++ lib/lp/codehosting/sftp.py 2010-02-04 00:33:17 +0000
@@ -251,7 +251,7 @@
251 config.codehosting.mirrored_branches_root)251 config.codehosting.mirrored_branches_root)
252 server = LaunchpadServer(252 server = LaunchpadServer(
253 avatar.branchfs_proxy, user_id, hosted_transport, mirror_transport)253 avatar.branchfs_proxy, user_id, hosted_transport, mirror_transport)
254 server.setUp()254 server.start_server()
255 transport = AsyncLaunchpadTransport(server, server.get_url())255 transport = AsyncLaunchpadTransport(server, server.get_url())
256 notify(accesslog.SFTPStarted(avatar))256 notify(accesslog.SFTPStarted(avatar))
257 return TransportSFTPServer(transport)257 return TransportSFTPServer(transport)
258258
=== modified file 'lib/lp/codehosting/sshserver/tests/test_logging.py'
--- lib/lp/codehosting/sshserver/tests/test_logging.py 2009-06-25 04:06:00 +0000
+++ lib/lp/codehosting/sshserver/tests/test_logging.py 2010-02-04 00:33:17 +0000
@@ -24,7 +24,6 @@
24from canonical.config import config24from canonical.config import config
25from canonical.launchpad.scripts import WatchedFileHandler25from canonical.launchpad.scripts import WatchedFileHandler
26from lp.testing import TestCase26from lp.testing import TestCase
27from canonical.testing import reset_logging
2827
2928
30class TestLoggingBazaarInteraction(BzrTestCase):29class TestLoggingBazaarInteraction(BzrTestCase):
@@ -36,16 +35,6 @@
36 self._real_stderr = sys.stderr35 self._real_stderr = sys.stderr
37 sys.stderr = codecs.getwriter('utf8')(StringIO())36 sys.stderr = codecs.getwriter('utf8')(StringIO())
3837
39 # We want to use Bazaar's default logging -- not its test logging --
40 # so here we disable the testing logging system (which restores
41 # default logging).
42 self._finishLogFile()
43
44 # We don't use BaseLayer because we want to keep the amount of
45 # pre-configured logging systems to an absolute minimum, in order to
46 # make it easier to test this particular logging system.
47 self.addCleanup(reset_logging)
48
49 def tearDown(self):38 def tearDown(self):
50 sys.stderr = self._real_stderr39 sys.stderr = self._real_stderr
51 BzrTestCase.tearDown(self)40 BzrTestCase.tearDown(self)
@@ -77,13 +66,6 @@
7766
78class TestLoggingManager(TestCase):67class TestLoggingManager(TestCase):
7968
80 def setUp(self):
81 TestCase.setUp(self)
82 # We don't use BaseLayer because we want to keep the amount of
83 # pre-configured logging systems to an absolute minimum, in order to
84 # make it easier to test this particular logging system.
85 self.addCleanup(reset_logging)
86
87 def test_returns_codehosting_logger(self):69 def test_returns_codehosting_logger(self):
88 # get_codehosting_logger returns the 'codehosting' logger.70 # get_codehosting_logger returns the 'codehosting' logger.
89 self.assertIs(71 self.assertIs(
9072
=== modified file 'lib/lp/codehosting/tests/servers.py'
--- lib/lp/codehosting/tests/servers.py 2009-06-25 04:06:00 +0000
+++ lib/lp/codehosting/tests/servers.py 2010-02-04 00:33:17 +0000
@@ -126,10 +126,10 @@
126 transport = get_transport(self.get_url()).clone(path)126 transport = get_transport(self.get_url()).clone(path)
127 return transport127 return transport
128128
129 def setUp(self):129 def start_server(self):
130 self._real_home, self._fake_home = self.setUpFakeHome()130 self._real_home, self._fake_home = self.setUpFakeHome()
131131
132 def tearDown(self):132 def stop_server(self):
133 os.environ['HOME'] = self._real_home133 os.environ['HOME'] = self._real_home
134 shutil.rmtree(self._fake_home)134 shutil.rmtree(self._fake_home)
135135
136136
=== modified file 'lib/lp/codehosting/tests/test_acceptance.py'
--- lib/lp/codehosting/tests/test_acceptance.py 2009-12-22 23:45:50 +0000
+++ lib/lp/codehosting/tests/test_acceptance.py 2010-02-04 00:33:17 +0000
@@ -89,15 +89,15 @@
89 self.disable_directory_isolation()89 self.disable_directory_isolation()
90 tac_handler = SSHServerLayer.getTacHandler()90 tac_handler = SSHServerLayer.getTacHandler()
91 self.server = SSHCodeHostingServer(self.scheme, tac_handler)91 self.server = SSHCodeHostingServer(self.scheme, tac_handler)
92 self.server.setUp()92 self.server.start_server()
93 self.addCleanup(self.server.tearDown)93 self.addCleanup(self.server.stop_server)
9494
95 # Prevent creation of in-process sftp:// and bzr+ssh:// transports --95 # Prevent creation of in-process sftp:// and bzr+ssh:// transports --
96 # such connections tend to leak threads and occasionally create96 # such connections tend to leak threads and occasionally create
97 # uncollectable garbage.97 # uncollectable garbage.
98 ssh_denier = DenyingServer(['bzr+ssh://', 'sftp://'])98 ssh_denier = DenyingServer(['bzr+ssh://', 'sftp://'])
99 ssh_denier.setUp()99 ssh_denier.start_server()
100 self.addCleanup(ssh_denier.tearDown)100 self.addCleanup(ssh_denier.stop_server)
101101
102 # Create a local branch with one revision102 # Create a local branch with one revision
103 tree = self.make_branch_and_tree('.')103 tree = self.make_branch_and_tree('.')
104104
=== modified file 'lib/lp/codehosting/tests/test_branchdistro.py'
--- lib/lp/codehosting/tests/test_branchdistro.py 2009-10-26 22:37:15 +0000
+++ lib/lp/codehosting/tests/test_branchdistro.py 2010-02-04 00:33:17 +0000
@@ -59,8 +59,8 @@
59 # location.59 # location.
6060
61 chroot_server = ChrootServer(self.get_transport())61 chroot_server = ChrootServer(self.get_transport())
62 chroot_server.setUp()62 chroot_server.start_server()
63 self.addCleanup(chroot_server.tearDown)63 self.addCleanup(chroot_server.stop_server)
64 scheme = chroot_server.get_url().rstrip('/:')64 scheme = chroot_server.get_url().rstrip('/:')
6565
66 old_branch = FakeBranch(1)66 old_branch = FakeBranch(1)
6767
=== modified file 'lib/lp/codehosting/tests/test_bzrutils.py'
--- lib/lp/codehosting/tests/test_bzrutils.py 2009-12-22 23:52:00 +0000
+++ lib/lp/codehosting/tests/test_bzrutils.py 2010-02-04 00:33:17 +0000
@@ -127,9 +127,9 @@
127 branch.base.startswith('file://'),127 branch.base.startswith('file://'),
128 "make_branch() didn't make branch with file:// URL")128 "make_branch() didn't make branch with file:// URL")
129 file_denier = DenyingServer(['file://'])129 file_denier = DenyingServer(['file://'])
130 file_denier.setUp()130 file_denier.start_server()
131 self.assertRaises(AssertionError, Branch.open, branch.base)131 self.assertRaises(AssertionError, Branch.open, branch.base)
132 file_denier.tearDown()132 file_denier.stop_server()
133 # This is just "assertNotRaises":133 # This is just "assertNotRaises":
134 Branch.open(branch.base)134 Branch.open(branch.base)
135135
@@ -188,8 +188,8 @@
188 # RemoteBranch.188 # RemoteBranch.
189 vfs_branch = self.make_branch('.')189 vfs_branch = self.make_branch('.')
190 smart_server = server.SmartTCPServer_for_testing()190 smart_server = server.SmartTCPServer_for_testing()
191 smart_server.setUp(self.get_vfs_only_server())191 smart_server.start_server(self.get_vfs_only_server())
192 self.addCleanup(smart_server.tearDown)192 self.addCleanup(smart_server.stop_server)
193 remote_branch = Branch.open(smart_server.get_url())193 remote_branch = Branch.open(smart_server.get_url())
194 # Check that our set up worked: remote_branch is Remote and194 # Check that our set up worked: remote_branch is Remote and
195 # source_branch is not.195 # source_branch is not.
196196
=== modified file 'lib/lp/codehosting/tests/test_sftp.py'
--- lib/lp/codehosting/tests/test_sftp.py 2009-12-08 16:24:12 +0000
+++ lib/lp/codehosting/tests/test_sftp.py 2010-02-04 00:33:17 +0000
@@ -161,6 +161,9 @@
161161
162 layer = TwistedLayer162 layer = TwistedLayer
163163
164 # This works around a clash between the TrialTestCase and the BzrTestCase.
165 skip = None
166
164 def setUp(self):167 def setUp(self):
165 TrialTestCase.setUp(self)168 TrialTestCase.setUp(self)
166 TestCaseInTempDir.setUp(self)169 TestCaseInTempDir.setUp(self)
@@ -413,6 +416,9 @@
413416
414 layer = TwistedLayer417 layer = TwistedLayer
415418
419 # This works around a clash between the TrialTestCase and the BzrTestCase.
420 skip = None
421
416 def setUp(self):422 def setUp(self):
417 TrialTestCase.setUp(self)423 TrialTestCase.setUp(self)
418 TestCaseInTempDir.setUp(self)424 TestCaseInTempDir.setUp(self)
419425
=== modified file 'lib/lp/codehosting/vfs/branchfs.py'
--- lib/lp/codehosting/vfs/branchfs.py 2010-01-07 05:05:37 +0000
+++ lib/lp/codehosting/vfs/branchfs.py 2010-02-04 00:33:17 +0000
@@ -340,7 +340,7 @@
340 configured to use the given default stacked-on location.340 configured to use the given default stacked-on location.
341 """341 """
342 memory_server = MemoryServer()342 memory_server = MemoryServer()
343 memory_server.setUp()343 memory_server.start_server()
344 transport = get_transport(memory_server.get_url())344 transport = get_transport(memory_server.get_url())
345 if default_stack_on == '':345 if default_stack_on == '':
346 return transport346 return transport
@@ -378,7 +378,7 @@
378 """378 """
379 AsyncVirtualServer.__init__(self, scheme)379 AsyncVirtualServer.__init__(self, scheme)
380 self._authserver = BranchFileSystemClient(authserver, user_id)380 self._authserver = BranchFileSystemClient(authserver, user_id)
381 self._is_set_up = False381 self._is_start_server = False
382382
383 def translateVirtualPath(self, virtual_url_fragment):383 def translateVirtualPath(self, virtual_url_fragment):
384 """See `AsyncVirtualServer.translateVirtualPath`.384 """See `AsyncVirtualServer.translateVirtualPath`.
@@ -429,8 +429,8 @@
429 scheme, authserver, LAUNCHPAD_SERVICES)429 scheme, authserver, LAUNCHPAD_SERVICES)
430 self._transport_dispatch = BranchTransportDispatch(branch_transport)430 self._transport_dispatch = BranchTransportDispatch(branch_transport)
431431
432 def setUp(self):432 def start_server(self):
433 super(LaunchpadInternalServer, self).setUp()433 super(LaunchpadInternalServer, self).start_server()
434 try:434 try:
435 self._transport_dispatch.base_transport.ensure_base()435 self._transport_dispatch.base_transport.ensure_base()
436 except TransportNotPossible:436 except TransportNotPossible:
@@ -439,7 +439,7 @@
439 def destroy(self):439 def destroy(self):
440 """Delete the on-disk branches and tear down."""440 """Delete the on-disk branches and tear down."""
441 self._transport_dispatch.base_transport.delete_tree('.')441 self._transport_dispatch.base_transport.delete_tree('.')
442 self.tearDown()442 self.stop_server()
443443
444444
445class DirectDatabaseLaunchpadServer(AsyncVirtualServer):445class DirectDatabaseLaunchpadServer(AsyncVirtualServer):
@@ -448,8 +448,8 @@
448 AsyncVirtualServer.__init__(self, scheme)448 AsyncVirtualServer.__init__(self, scheme)
449 self._transport_dispatch = BranchTransportDispatch(branch_transport)449 self._transport_dispatch = BranchTransportDispatch(branch_transport)
450450
451 def setUp(self):451 def start_server(self):
452 super(DirectDatabaseLaunchpadServer, self).setUp()452 super(DirectDatabaseLaunchpadServer, self).start_server()
453 try:453 try:
454 self._transport_dispatch.base_transport.ensure_base()454 self._transport_dispatch.base_transport.ensure_base()
455 except TransportNotPossible:455 except TransportNotPossible:
@@ -458,7 +458,7 @@
458 def destroy(self):458 def destroy(self):
459 """Delete the on-disk branches and tear down."""459 """Delete the on-disk branches and tear down."""
460 self._transport_dispatch.base_transport.delete_tree('.')460 self._transport_dispatch.base_transport.delete_tree('.')
461 self.tearDown()461 self.stop_server()
462462
463 def translateVirtualPath(self, virtual_url_fragment):463 def translateVirtualPath(self, virtual_url_fragment):
464 """See `AsyncVirtualServer.translateVirtualPath`.464 """See `AsyncVirtualServer.translateVirtualPath`.
465465
=== modified file 'lib/lp/codehosting/vfs/tests/test_branchfs.py'
--- lib/lp/codehosting/vfs/tests/test_branchfs.py 2009-12-22 23:50:27 +0000
+++ lib/lp/codehosting/vfs/tests/test_branchfs.py 2010-02-04 00:33:17 +0000
@@ -49,7 +49,7 @@
49 def setUp(self):49 def setUp(self):
50 super(TestBranchTransportDispatch, self).setUp()50 super(TestBranchTransportDispatch, self).setUp()
51 memory_server = MemoryServer()51 memory_server = MemoryServer()
52 memory_server.setUp()52 memory_server.start_server()
53 self.base_transport = get_transport(memory_server.get_url())53 self.base_transport = get_transport(memory_server.get_url())
54 self.factory = BranchTransportDispatch(self.base_transport)54 self.factory = BranchTransportDispatch(self.base_transport)
5555
@@ -90,7 +90,7 @@
90 def setUp(self):90 def setUp(self):
91 super(TestTransportDispatch, self).setUp()91 super(TestTransportDispatch, self).setUp()
92 memory_server = MemoryServer()92 memory_server = MemoryServer()
93 memory_server.setUp()93 memory_server.start_server()
94 base_transport = get_transport(memory_server.get_url())94 base_transport = get_transport(memory_server.get_url())
95 base_transport.mkdir('hosted')95 base_transport.mkdir('hosted')
96 base_transport.mkdir('mirrored')96 base_transport.mkdir('mirrored')
@@ -199,16 +199,16 @@
199 def test_setUp(self):199 def test_setUp(self):
200 # Setting up the server registers its schema with the protocol200 # Setting up the server registers its schema with the protocol
201 # handlers.201 # handlers.
202 self.server.setUp()202 self.server.start_server()
203 self.addCleanup(self.server.tearDown)203 self.addCleanup(self.server.stop_server)
204 self.assertTrue(204 self.assertTrue(
205 self.server.get_url() in _get_protocol_handlers().keys())205 self.server.get_url() in _get_protocol_handlers().keys())
206206
207 def test_tearDown(self):207 def test_tearDown(self):
208 # Setting up then tearing down the server removes its schema from the208 # Setting up then tearing down the server removes its schema from the
209 # protocol handlers.209 # protocol handlers.
210 self.server.setUp()210 self.server.start_server()
211 self.server.tearDown()211 self.server.stop_server()
212 self.assertFalse(212 self.assertFalse(
213 self.server.get_url() in _get_protocol_handlers().keys())213 self.server.get_url() in _get_protocol_handlers().keys())
214214
@@ -216,6 +216,9 @@
216class TestLaunchpadServer(MixinBaseLaunchpadServerTests, TrialTestCase,216class TestLaunchpadServer(MixinBaseLaunchpadServerTests, TrialTestCase,
217 BzrTestCase):217 BzrTestCase):
218218
219 # This works around a clash between the TrialTestCase and the BzrTestCase.
220 skip = None
221
219 def setUp(self):222 def setUp(self):
220 BzrTestCase.setUp(self)223 BzrTestCase.setUp(self)
221 MixinBaseLaunchpadServerTests.setUp(self)224 MixinBaseLaunchpadServerTests.setUp(self)
@@ -287,8 +290,8 @@
287 # The URL of the server is 'lp-<number>:///', where <number> is the290 # The URL of the server is 'lp-<number>:///', where <number> is the
288 # id() of the server object. Including the id allows for multiple291 # id() of the server object. Including the id allows for multiple
289 # Launchpad servers to be running within a single process.292 # Launchpad servers to be running within a single process.
290 self.server.setUp()293 self.server.start_server()
291 self.addCleanup(self.server.tearDown)294 self.addCleanup(self.server.stop_server)
292 self.assertEqual('lp-%d:///' % id(self.server), self.server.get_url())295 self.assertEqual('lp-%d:///' % id(self.server), self.server.get_url())
293296
294297
@@ -315,8 +318,8 @@
315 return deferred.addCallback(check_branch_transport)318 return deferred.addCallback(check_branch_transport)
316319
317 def test_translate_control_dir_path(self):320 def test_translate_control_dir_path(self):
318 self.server.setUp()321 self.server.start_server()
319 self.addCleanup(self.server.tearDown)322 self.addCleanup(self.server.stop_server)
320 branch = self.factory.makeProductBranch()323 branch = self.factory.makeProductBranch()
321 branch.product.development_focus.branch = branch324 branch.product.development_focus.branch = branch
322 transport = get_transport(self.server.get_url())325 transport = get_transport(self.server.get_url())
@@ -327,8 +330,8 @@
327 def test_open_containing_raises_branch_not_found(self):330 def test_open_containing_raises_branch_not_found(self):
328 # open_containing_from_transport raises NotBranchError if there's no331 # open_containing_from_transport raises NotBranchError if there's no
329 # branch at that URL.332 # branch at that URL.
330 self.server.setUp()333 self.server.start_server()
331 self.addCleanup(self.server.tearDown)334 self.addCleanup(self.server.stop_server)
332 branch = self.factory.makeAnyBranch(owner=self.requester)335 branch = self.factory.makeAnyBranch(owner=self.requester)
333 transport = get_transport(self.server.get_url())336 transport = get_transport(self.server.get_url())
334 transport = transport.clone(branch.unique_name)337 transport = transport.clone(branch.unique_name)
@@ -342,6 +345,9 @@
342 LaunchpadInternalServerTests):345 LaunchpadInternalServerTests):
343 """Tests for `LaunchpadInternalServer`, used by the puller and scanner."""346 """Tests for `LaunchpadInternalServer`, used by the puller and scanner."""
344347
348 # This works around a clash between the TrialTestCase and the BzrTestCase.
349 skip = None
350
345 def setUp(self):351 def setUp(self):
346 BzrTestCase.setUp(self)352 BzrTestCase.setUp(self)
347 self.disable_directory_isolation()353 self.disable_directory_isolation()
@@ -358,6 +364,9 @@
358364
359 layer = ZopelessDatabaseLayer365 layer = ZopelessDatabaseLayer
360366
367 # This works around a clash between the TrialTestCase and the BzrTestCase.
368 skip = None
369
361 def setUp(self):370 def setUp(self):
362 super(TestDirectDatabaseLaunchpadServer, self).setUp()371 super(TestDirectDatabaseLaunchpadServer, self).setUp()
363 self.requester = self.factory.makePerson()372 self.requester = self.factory.makePerson()
@@ -371,6 +380,9 @@
371380
372 layer = TwistedLayer381 layer = TwistedLayer
373382
383 # This works around a clash between the TrialTestCase and the BzrTestCase.
384 skip = None
385
374 class VirtualServer(Server):386 class VirtualServer(Server):
375 """Very simple server that provides a AsyncVirtualTransport."""387 """Very simple server that provides a AsyncVirtualTransport."""
376388
@@ -383,11 +395,11 @@
383 def get_url(self):395 def get_url(self):
384 return self.scheme396 return self.scheme
385397
386 def setUp(self):398 def start_server(self):
387 self.scheme = 'virtual:///'399 self.scheme = 'virtual:///'
388 register_transport(self.scheme, self._transportFactory)400 register_transport(self.scheme, self._transportFactory)
389401
390 def tearDown(self):402 def stop_server(self):
391 unregister_transport(self.scheme, self._transportFactory)403 unregister_transport(self.scheme, self._transportFactory)
392404
393 def translateVirtualPath(self, virtual_path):405 def translateVirtualPath(self, virtual_path):
@@ -399,8 +411,8 @@
399 TestCaseInTempDir.setUp(self)411 TestCaseInTempDir.setUp(self)
400 self.server = self.VirtualServer(412 self.server = self.VirtualServer(
401 FatLocalTransport(local_path_to_url('.')))413 FatLocalTransport(local_path_to_url('.')))
402 self.server.setUp()414 self.server.start_server()
403 self.addCleanup(self.server.tearDown)415 self.addCleanup(self.server.stop_server)
404 self.transport = get_transport(self.server.get_url())416 self.transport = get_transport(self.server.get_url())
405417
406 def test_writeChunk(self):418 def test_writeChunk(self):
@@ -477,8 +489,8 @@
477 self.server = self.getServer(489 self.server = self.getServer(
478 authserver, self.requester.id, self.backing_transport,490 authserver, self.requester.id, self.backing_transport,
479 MemoryTransport())491 MemoryTransport())
480 self.server.setUp()492 self.server.start_server()
481 self.addCleanup(self.server.tearDown)493 self.addCleanup(self.server.stop_server)
482494
483 def assertFiresFailure(self, exception, function, *args, **kwargs):495 def assertFiresFailure(self, exception, function, *args, **kwargs):
484 """Assert that calling `function` will cause `exception` to be fired.496 """Assert that calling `function` will cause `exception` to be fired.
@@ -770,6 +782,9 @@
770782
771class TestLaunchpadTransportSync(LaunchpadTransportTests, TrialTestCase):783class TestLaunchpadTransportSync(LaunchpadTransportTests, TrialTestCase):
772784
785 # This works around a clash between the TrialTestCase and the BzrTestCase.
786 skip = None
787
773 def _ensureDeferred(self, function, *args, **kwargs):788 def _ensureDeferred(self, function, *args, **kwargs):
774 def call_function_and_check_not_deferred():789 def call_function_and_check_not_deferred():
775 ret = function(*args, **kwargs)790 ret = function(*args, **kwargs)
@@ -793,6 +808,9 @@
793808
794class TestLaunchpadTransportAsync(LaunchpadTransportTests, TrialTestCase):809class TestLaunchpadTransportAsync(LaunchpadTransportTests, TrialTestCase):
795810
811 # This works around a clash between the TrialTestCase and the BzrTestCase.
812 skip = None
813
796 def _ensureDeferred(self, function, *args, **kwargs):814 def _ensureDeferred(self, function, *args, **kwargs):
797 deferred = function(*args, **kwargs)815 deferred = function(*args, **kwargs)
798 self.assertIsInstance(deferred, defer.Deferred)816 self.assertIsInstance(deferred, defer.Deferred)
@@ -828,8 +846,8 @@
828 self._server = LaunchpadServer(846 self._server = LaunchpadServer(
829 XMLRPCWrapper(self.authserver), self.requester.id,847 XMLRPCWrapper(self.authserver), self.requester.id,
830 self.backing_transport, self.mirror_transport)848 self.backing_transport, self.mirror_transport)
831 self._server.setUp()849 self._server.start_server()
832 self.addCleanup(self._server.tearDown)850 self.addCleanup(self._server.stop_server)
833 return self._server851 return self._server
834852
835 def test_no_mirrors_requested_if_no_branches_changed(self):853 def test_no_mirrors_requested_if_no_branches_changed(self):
@@ -861,6 +879,9 @@
861 # See comment on TestLaunchpadServer.879 # See comment on TestLaunchpadServer.
862 layer = TwistedLayer880 layer = TwistedLayer
863881
882 # This works around a clash between the TrialTestCase and the BzrTestCase.
883 skip = None
884
864 def setUp(self):885 def setUp(self):
865 BzrTestCase.setUp(self)886 BzrTestCase.setUp(self)
866887
@@ -890,8 +911,8 @@
890911
891 def _setUpMemoryServer(self):912 def _setUpMemoryServer(self):
892 memory_server = MemoryServer()913 memory_server = MemoryServer()
893 memory_server.setUp()914 memory_server.start_server()
894 self.addCleanup(memory_server.tearDown)915 self.addCleanup(memory_server.stop_server)
895 return memory_server916 return memory_server
896917
897 def _setUpLaunchpadServer(self, user_id, authserver, backing_transport,918 def _setUpLaunchpadServer(self, user_id, authserver, backing_transport,
@@ -899,8 +920,8 @@
899 server = LaunchpadServer(920 server = LaunchpadServer(
900 XMLRPCWrapper(authserver), user_id, backing_transport,921 XMLRPCWrapper(authserver), user_id, backing_transport,
901 mirror_transport)922 mirror_transport)
902 server.setUp()923 server.start_server()
903 self.addCleanup(server.tearDown)924 self.addCleanup(server.stop_server)
904 return server925 return server
905926
906 def test_mkdir_readonly(self):927 def test_mkdir_readonly(self):
907928
=== modified file 'lib/lp/codehosting/vfs/tests/test_filesystem.py'
--- lib/lp/codehosting/vfs/tests/test_filesystem.py 2009-11-21 00:34:12 +0000
+++ lib/lp/codehosting/vfs/tests/test_filesystem.py 2010-02-04 00:33:17 +0000
@@ -34,8 +34,8 @@
34 self.requester = self.factory.makePerson()34 self.requester = self.factory.makePerson()
35 self._server = LaunchpadServer(35 self._server = LaunchpadServer(
36 endpoint, self.requester.id, MemoryTransport(), MemoryTransport())36 endpoint, self.requester.id, MemoryTransport(), MemoryTransport())
37 self._server.setUp()37 self._server.start_server()
38 self.addCleanup(self._server.tearDown)38 self.addCleanup(self._server.stop_server)
3939
40 def getTransport(self, relpath=None):40 def getTransport(self, relpath=None):
41 return get_transport(self._server.get_url()).clone(relpath)41 return get_transport(self._server.get_url()).clone(relpath)
4242
=== modified file 'lib/lp/codehosting/vfs/tests/test_transport.py'
--- lib/lp/codehosting/vfs/tests/test_transport.py 2009-12-22 23:52:00 +0000
+++ lib/lp/codehosting/vfs/tests/test_transport.py 2010-02-04 00:33:17 +0000
@@ -60,7 +60,7 @@
60 self._branch_path).clone('.bzr')60 self._branch_path).clone('.bzr')
61 bzrdir_transport.ensure_base()61 bzrdir_transport.ensure_base()
62 chroot_server = chroot.ChrootServer(bzrdir_transport)62 chroot_server = chroot.ChrootServer(bzrdir_transport)
63 chroot_server.setUp()63 chroot_server.start_server()
64 self._chroot_servers.append(chroot_server)64 self._chroot_servers.append(chroot_server)
65 return get_transport(chroot_server.get_url()).clone(relpath)65 return get_transport(chroot_server.get_url()).clone(relpath)
6666
@@ -71,7 +71,7 @@
71 ChrootServer instances we've set up.71 ChrootServer instances we've set up.
72 """72 """
73 for chroot_server in self._chroot_servers:73 for chroot_server in self._chroot_servers:
74 chroot_server.tearDown()74 chroot_server.stop_server()
75 LaunchpadInternalServer.tearDown(self)75 LaunchpadInternalServer.tearDown(self)
7676
7777
7878
=== modified file 'lib/lp/codehosting/vfs/transport.py'
--- lib/lp/codehosting/vfs/transport.py 2009-12-22 23:50:27 +0000
+++ lib/lp/codehosting/vfs/transport.py 2010-02-04 00:33:17 +0000
@@ -57,7 +57,7 @@
57 if mkdir:57 if mkdir:
58 transport.create_prefix()58 transport.create_prefix()
59 chroot_server = chroot.ChrootServer(transport)59 chroot_server = chroot.ChrootServer(transport)
60 chroot_server.setUp()60 chroot_server.start_server()
61 return get_transport(chroot_server.get_url())61 return get_transport(chroot_server.get_url())
6262
6363
@@ -74,17 +74,17 @@
74 def __init__(self, *servers):74 def __init__(self, *servers):
75 self._servers = servers75 self._servers = servers
7676
77 def setUp(self):77 def start_server(self):
78 for server in self._servers:78 for server in self._servers:
79 server.setUp()79 server.start_server()
8080
81 def destroy(self):81 def destroy(self):
82 for server in reversed(self._servers):82 for server in reversed(self._servers):
83 server.destroy()83 server.destroy()
8484
85 def tearDown(self):85 def stop_server(self):
86 for server in reversed(self._servers):86 for server in reversed(self._servers):
87 server.tearDown()87 server.stop_server()
8888
8989
90class AsyncVirtualTransport(Transport):90class AsyncVirtualTransport(Transport):
@@ -383,7 +383,7 @@
383 # safely upcall it.383 # safely upcall it.
384 # pylint: disable-msg=W0231384 # pylint: disable-msg=W0231
385 self._scheme = scheme385 self._scheme = scheme
386 self._is_set_up = False386 self._is_started = False
387387
388 def _transportFactory(self, url):388 def _transportFactory(self, url):
389 """Create a transport for this server pointing at `url`.389 """Create a transport for this server pointing at `url`.
@@ -412,14 +412,14 @@
412 """Return the URL of this server."""412 """Return the URL of this server."""
413 return self._scheme413 return self._scheme
414414
415 def setUp(self):415 def start_server(self):
416 """See Server.setUp."""416 """See Server.start_server."""
417 register_transport(self.get_url(), self._transportFactory)417 register_transport(self.get_url(), self._transportFactory)
418 self._is_set_up = True418 self._is_started = True
419419
420 def tearDown(self):420 def stop_server(self):
421 """See Server.tearDown."""421 """See Server.stop_server."""
422 if not self._is_set_up:422 if not self._is_started:
423 return423 return
424 self._is_set_up = False424 self._is_started = False
425 unregister_transport(self.get_url(), self._transportFactory)425 unregister_transport(self.get_url(), self._transportFactory)
426426
=== modified file 'lib/lp/testing/__init__.py'
--- lib/lp/testing/__init__.py 2010-02-02 11:26:31 +0000
+++ lib/lp/testing/__init__.py 2010-02-04 00:33:17 +0000
@@ -524,18 +524,39 @@
524 server = get_multi_server(524 server = get_multi_server(
525 write_hosted=True, write_mirrored=True,525 write_hosted=True, write_mirrored=True,
526 direct_database=direct_database)526 direct_database=direct_database)
527 server.setUp()527 server.start_server()
528 self.addCleanup(server.destroy)528 self.addCleanup(server.destroy)
529 else:529 else:
530 os.mkdir('lp-mirrored')530 os.mkdir('lp-mirrored')
531 mirror_server = FakeTransportServer(get_transport('lp-mirrored'))531 mirror_server = FakeTransportServer(get_transport('lp-mirrored'))
532 mirror_server.setUp()532 mirror_server.start_server()
533 self.addCleanup(mirror_server.tearDown)533 self.addCleanup(mirror_server.stop_server)
534 os.mkdir('lp-hosted')534 os.mkdir('lp-hosted')
535 hosted_server = FakeTransportServer(535 hosted_server = FakeTransportServer(
536 get_transport('lp-hosted'), url_prefix='lp-hosted:///')536 get_transport('lp-hosted'), url_prefix='lp-hosted:///')
537 hosted_server.setUp()537 hosted_server.start_server()
538 self.addCleanup(hosted_server.tearDown)538 self.addCleanup(hosted_server.stop_server)
539
540
541class WindmillTestCase(TestCaseWithFactory):
542 """A TestCase class for Windmill tests.
543
544 It provides a WindmillTestClient (self.client) with Launchpad's front
545 page loaded.
546 """
547
548 suite_name = ''
549
550 def setUp(self):
551 TestCaseWithFactory.setUp(self)
552 self.client = WindmillTestClient(self.suite_name)
553 # Load the front page to make sure we don't get fooled by stale pages
554 # left by the previous test. (For some reason, when you create a new
555 # WindmillTestClient you get a new session and everything, but if you
556 # do anything before you open() something you'd be operating on the
557 # page that was last accessed by the previous test, which is the cause
558 # of things like https://launchpad.net/bugs/515494)
559 self.client.open(url=u'http://launchpad.dev:8085')
539560
540561
541class WindmillTestCase(TestCaseWithFactory):562class WindmillTestCase(TestCaseWithFactory):
542563
=== modified file 'lib/lp/translations/scripts/translations_to_branch.py'
--- lib/lp/translations/scripts/translations_to_branch.py 2010-01-10 04:29:39 +0000
+++ lib/lp/translations/scripts/translations_to_branch.py 2010-02-04 00:33:17 +0000
@@ -274,8 +274,8 @@
274 productseries = productseries.order_by(ProductSeries.id)274 productseries = productseries.order_by(ProductSeries.id)
275275
276 bzrserver = get_multi_server(write_hosted=True)276 bzrserver = get_multi_server(write_hosted=True)
277 bzrserver.setUp()277 bzrserver.start_server()
278 try:278 try:
279 self._exportToBranches(productseries)279 self._exportToBranches(productseries)
280 finally:280 finally:
281 bzrserver.tearDown()281 bzrserver.stop_server()
282282
=== modified file 'scripts/branch-distro.py'
--- scripts/branch-distro.py 2009-10-23 16:15:35 +0000
+++ scripts/branch-distro.py 2010-02-04 00:33:17 +0000
@@ -26,7 +26,7 @@
26 brancher = DistroBrancher.fromNames(self.logger, *self.args)26 brancher = DistroBrancher.fromNames(self.logger, *self.args)
27 server = get_multi_server(27 server = get_multi_server(
28 write_mirrored=True, write_hosted=True, direct_database=True)28 write_mirrored=True, write_hosted=True, direct_database=True)
29 server.setUp()29 server.start_server()
30 try:30 try:
31 if self.options.check:31 if self.options.check:
32 if not brancher.checkNewBranches():32 if not brancher.checkNewBranches():
@@ -34,7 +34,7 @@
34 else:34 else:
35 brancher.makeNewBranches()35 brancher.makeNewBranches()
36 finally:36 finally:
37 server.tearDown()37 server.stop_server()
3838
39if __name__ == '__main__':39if __name__ == '__main__':
40 BranchDistroScript("branch-distro", dbuser='branch-distro').run()40 BranchDistroScript("branch-distro", dbuser='branch-distro').run()
4141
=== modified file 'scripts/update-stacked-on.py'
--- scripts/update-stacked-on.py 2009-10-13 14:38:07 +0000
+++ scripts/update-stacked-on.py 2010-02-04 00:33:17 +0000
@@ -94,14 +94,14 @@
9494
95 def main(self):95 def main(self):
96 server = get_server(self.options.dry_run)96 server = get_server(self.options.dry_run)
97 server.setUp()97 server.start_server()
98 if self.options.dry_run:98 if self.options.dry_run:
99 self.logger.debug('Running read-only')99 self.logger.debug('Running read-only')
100 self.logger.debug('Beginning processing')100 self.logger.debug('Beginning processing')
101 try:101 try:
102 self.updateBranches(self.parseFromStream(sys.stdin))102 self.updateBranches(self.parseFromStream(sys.stdin))
103 finally:103 finally:
104 server.tearDown()104 server.stop_server()
105 self.logger.info('Done')105 self.logger.info('Done')
106106
107 def updateStackedOn(self, branch_id, bzr_branch_url, stacked_on_location):107 def updateStackedOn(self, branch_id, bzr_branch_url, stacked_on_location):
108108
=== modified file 'versions.cfg'
--- versions.cfg 2010-02-03 22:43:51 +0000
+++ versions.cfg 2010-02-04 00:33:17 +0000
@@ -5,8 +5,8 @@
5# Alphabetical, case-insensitive, please! :-)5# Alphabetical, case-insensitive, please! :-)
66
7ampoule = 0.2.07ampoule = 0.2.0
8# Non-released bzr version from bzr+ssh://bazaar.launchpad.net/~mwhudson/bzr/2.1.0b4-lp28# From lp:~mwhudson/bzr/bzr-2.1.0rc2-lp-1 ('make dist' from r4807)
9bzr = 2.1b4-lp29bzr = 2.1.0rc2-lp-1
10chameleon.core = 1.0b3510chameleon.core = 1.0b35
11chameleon.zpt = 1.0b1711chameleon.zpt = 1.0b17
12ClientForm = 0.2.1012ClientForm = 0.2.10