Merge lp:~mwhudson/launchpad/bzr-2.1c1-update into lp:launchpad
- bzr-2.1c1-update
- Merge into devel
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 |
Related bugs: |
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
Description of the change
Michael Hudson-Doyle (mwhudson) wrote : | # |
Henning Eggers (henninge) wrote : | # |
-----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/
> --- lib/lp/
> +++ lib/lp/
> @@ -23,7 +23,7 @@
> from lp.codehosting.
> BzrSync, schedule_
> from lp.codehosting.
> - Fixtures, make_zope_
> + Fixtures, make_zope_
> from canonical.
>
>
> @@ -100,7 +100,8 @@
> schedule_
> ]
> server = get_scanner_
> - fixture = Fixtures([server, make_zope_
> + fixture = Fixtures(
> + [ServerFixture(
Wouldn't it be cool to be able to just do "IFixture(server)" here? See
below.
> self.log.
> branches = getUtility(
> run_with_
>
> === modified file 'lib/lp/
> --- lib/lp/
> +++ lib/lp/
> @@ -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_
> 'run_with_fixture',
> + 'ServerFixture',
> 'with_fixture',
> ]
>
> @@ -121,3 +122,18 @@
>
> def make_zope_
> return Fixtures(
> +
> +
> +class ServerFixture:
> + """Adapt a bzrlib `Server` into an `IFixture`."""
> +
> + implements(
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.
> +
> + def tearDown(self):
> + self.server.
>
-----BEGIN PGP SIGNATURE----- iEYEARECAAYFAkt
Version: GnuPG v1.4.9 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://
Preview Diff
1 | === modified file 'bzrplugins/lpserve.py' |
2 | --- bzrplugins/lpserve.py 2009-07-17 00:26:05 +0000 |
3 | +++ bzrplugins/lpserve.py 2010-02-04 00:33:17 +0000 |
4 | @@ -92,7 +92,7 @@ |
5 | lp_server = get_lp_server( |
6 | int(user_id), branchfs_endpoint_url, |
7 | upload_directory, mirror_directory) |
8 | - lp_server.setUp() |
9 | + lp_server.start_server() |
10 | |
11 | old_lockdir_timeout = lockdir._DEFAULT_TIMEOUT_SECONDS |
12 | try: |
13 | @@ -102,7 +102,7 @@ |
14 | self.run_server(smart_server) |
15 | finally: |
16 | lockdir._DEFAULT_TIMEOUT_SECONDS = old_lockdir_timeout |
17 | - lp_server.tearDown() |
18 | + lp_server.stop_server() |
19 | |
20 | |
21 | register_command(cmd_launchpad_server) |
22 | |
23 | === modified file 'cronscripts/mpcreationjobs.py' |
24 | --- cronscripts/mpcreationjobs.py 2009-10-13 14:38:07 +0000 |
25 | +++ cronscripts/mpcreationjobs.py 2010-02-04 00:33:17 +0000 |
26 | @@ -33,11 +33,11 @@ |
27 | job_source = getUtility(IMergeProposalCreatedJobSource) |
28 | runner = JobRunner.fromReady(job_source, self.logger) |
29 | server = get_scanner_server() |
30 | - server.setUp() |
31 | + server.start_server() |
32 | try: |
33 | runner.runAll() |
34 | finally: |
35 | - server.tearDown() |
36 | + server.stop_server() |
37 | self.logger.info( |
38 | 'Ran %d MergeProposalCreatedJobs.', len(runner.completed_jobs)) |
39 | |
40 | |
41 | === modified file 'cronscripts/rosetta-branches.py' |
42 | --- cronscripts/rosetta-branches.py 2009-10-13 14:38:07 +0000 |
43 | +++ cronscripts/rosetta-branches.py 2010-02-04 00:33:17 +0000 |
44 | @@ -32,11 +32,11 @@ |
45 | runner = JobRunner.fromReady( |
46 | getUtility(IRosettaUploadJobSource), self.logger) |
47 | server = get_scanner_server() |
48 | - server.setUp() |
49 | + server.start_server() |
50 | try: |
51 | runner.runAll() |
52 | finally: |
53 | - server.tearDown() |
54 | + server.stop_server() |
55 | self.logger.info('Ran %d RosettaBranchJobs.', |
56 | len(runner.completed_jobs)) |
57 | |
58 | |
59 | === modified file 'cronscripts/sendbranchmail.py' |
60 | --- cronscripts/sendbranchmail.py 2009-10-13 14:38:07 +0000 |
61 | +++ cronscripts/sendbranchmail.py 2010-02-04 00:33:17 +0000 |
62 | @@ -33,11 +33,11 @@ |
63 | jobs.extend(getUtility(IRevisionsAddedJobSource).iterReady()) |
64 | runner = JobRunner(jobs, self.logger) |
65 | server = get_scanner_server() |
66 | - server.setUp() |
67 | + server.start_server() |
68 | try: |
69 | runner.runAll() |
70 | finally: |
71 | - server.tearDown() |
72 | + server.stop_server() |
73 | self.logger.info( |
74 | 'Ran %d RevisionMailJobs.' % len(runner.completed_jobs)) |
75 | |
76 | |
77 | === modified file 'lib/canonical/launchpad/webapp/tests/test_errorlog.py' |
78 | --- lib/canonical/launchpad/webapp/tests/test_errorlog.py 2009-11-26 16:06:55 +0000 |
79 | +++ lib/canonical/launchpad/webapp/tests/test_errorlog.py 2010-02-04 00:33:17 +0000 |
80 | @@ -581,6 +581,7 @@ |
81 | class UnprintableException(Exception): |
82 | def __str__(self): |
83 | raise RuntimeError('arrgh') |
84 | + __repr__ = __str__ |
85 | |
86 | log = InstalledHandler('SiteError') |
87 | try: |
88 | |
89 | === modified file 'lib/lp/code/mail/codehandler.py' |
90 | --- lib/lp/code/mail/codehandler.py 2009-12-07 02:57:22 +0000 |
91 | +++ lib/lp/code/mail/codehandler.py 2010-02-04 00:33:17 +0000 |
92 | @@ -491,7 +491,7 @@ |
93 | |
94 | # Create the LP server as if the submitter was pushing a branch to LP. |
95 | lp_server = get_lp_server(submitter.id) |
96 | - lp_server.setUp() |
97 | + lp_server.start_server() |
98 | try: |
99 | source_url = urljoin(lp_server.get_url(), db_source.unique_name) |
100 | target_url = urljoin(lp_server.get_url(), db_target.unique_name) |
101 | @@ -512,7 +512,7 @@ |
102 | db_source.requestMirror() |
103 | return db_source |
104 | finally: |
105 | - lp_server.tearDown() |
106 | + lp_server.stop_server() |
107 | |
108 | def _pullRevisionsFromMergeDirectiveIntoSourceBranch(self, md, |
109 | target_url, |
110 | |
111 | === modified file 'lib/lp/code/mail/tests/test_codehandler.py' |
112 | --- lib/lp/code/mail/tests/test_codehandler.py 2010-01-12 01:25:35 +0000 |
113 | +++ lib/lp/code/mail/tests/test_codehandler.py 2010-02-04 00:33:17 +0000 |
114 | @@ -850,8 +850,8 @@ |
115 | The client has write access to the branch. |
116 | """ |
117 | lp_server = get_lp_server(db_branch.owner.id) |
118 | - lp_server.setUp() |
119 | - self.addCleanup(lp_server.tearDown) |
120 | + lp_server.start_server() |
121 | + self.addCleanup(lp_server.stop_server) |
122 | branch_url = urljoin(lp_server.get_url(), db_branch.unique_name) |
123 | return Branch.open(branch_url) |
124 | |
125 | |
126 | === modified file 'lib/lp/code/model/branchjob.py' |
127 | --- lib/lp/code/model/branchjob.py 2010-02-03 11:17:12 +0000 |
128 | +++ lib/lp/code/model/branchjob.py 2010-02-04 00:33:17 +0000 |
129 | @@ -50,8 +50,7 @@ |
130 | from lp.code.model.revision import RevisionSet |
131 | from lp.codehosting.scanner import buglinks, email, mergedetection |
132 | from lp.codehosting.scanner.fixture import ( |
133 | - Fixtures, make_zope_event_fixture, run_with_fixture |
134 | -) |
135 | + Fixtures, ServerFixture, make_zope_event_fixture) |
136 | from lp.codehosting.scanner.bzrsync import ( |
137 | BzrSync, schedule_diff_updates, schedule_translation_upload |
138 | ) |
139 | @@ -299,7 +298,7 @@ |
140 | schedule_translation_upload, |
141 | ] |
142 | fixture = Fixtures( |
143 | - [cls.server, make_zope_event_fixture(*event_handlers)]) |
144 | + [ServerFixture(cls.server), make_zope_event_fixture(*event_handlers)]) |
145 | fixture.setUp() |
146 | yield |
147 | fixture.tearDown() |
148 | @@ -329,9 +328,9 @@ |
149 | """See `IBranchUpgradeJobSource`.""" |
150 | errorlog.globalErrorUtility.configure('upgrade_branches') |
151 | server = get_multi_server(write_hosted=True) |
152 | - server.setUp() |
153 | + server.start_server() |
154 | yield |
155 | - server.tearDown() |
156 | + server.stop_server() |
157 | |
158 | def run(self): |
159 | """See `IBranchUpgradeJob`.""" |
160 | |
161 | === modified file 'lib/lp/code/model/branchmergeproposaljob.py' |
162 | --- lib/lp/code/model/branchmergeproposaljob.py 2010-02-01 20:49:35 +0000 |
163 | +++ lib/lp/code/model/branchmergeproposaljob.py 2010-02-04 00:33:17 +0000 |
164 | @@ -272,9 +272,9 @@ |
165 | """See `IUpdatePreviewDiffJobSource`.""" |
166 | errorlog.globalErrorUtility.configure('update_preview_diffs') |
167 | server = get_scanner_server() |
168 | - server.setUp() |
169 | + server.start_server() |
170 | yield |
171 | - server.tearDown() |
172 | + server.stop_server() |
173 | |
174 | def run(self): |
175 | """See `IRunnableJob`""" |
176 | @@ -339,11 +339,11 @@ |
177 | setupInteraction(principal, email_addr) |
178 | |
179 | server = get_multi_server(write_hosted=True) |
180 | - server.setUp() |
181 | + server.start_server() |
182 | try: |
183 | return CodeHandler().processMergeProposal(message) |
184 | finally: |
185 | - server.tearDown() |
186 | + server.stop_server() |
187 | |
188 | def getOopsRecipients(self): |
189 | message = self.getMessage() |
190 | |
191 | === modified file 'lib/lp/code/model/directbranchcommit.py' |
192 | --- lib/lp/code/model/directbranchcommit.py 2009-11-18 13:26:03 +0000 |
193 | +++ lib/lp/code/model/directbranchcommit.py 2010-02-04 00:33:17 +0000 |
194 | @@ -56,12 +56,12 @@ |
195 | allows write access to lp-hosted:/// URLs: |
196 | |
197 | bzrserver = get_multi_server(write_hosted=True) |
198 | - bzrserver.setUp() |
199 | + bzrserver.start_server() |
200 | try: |
201 | branchcommit = DirectBranchCommit(branch) |
202 | # ... |
203 | finally: |
204 | - bzrserver.tearDown() |
205 | + bzrserver.stop_server() |
206 | |
207 | Or in tests, just call `useBzrBranches` before creating a |
208 | `DirectBranchCommit`. |
209 | |
210 | === modified file 'lib/lp/codehosting/bzrutils.py' |
211 | --- lib/lp/codehosting/bzrutils.py 2009-12-22 23:50:27 +0000 |
212 | +++ lib/lp/codehosting/bzrutils.py 2010-02-04 00:33:17 +0000 |
213 | @@ -217,13 +217,13 @@ |
214 | """ |
215 | self.schemes = schemes |
216 | |
217 | - def setUp(self): |
218 | + def start_server(self): |
219 | """Prevent transports being created for specified schemes.""" |
220 | for scheme in self.schemes: |
221 | register_transport(scheme, self._deny) |
222 | self._is_set_up = True |
223 | |
224 | - def tearDown(self): |
225 | + def stop_server(self): |
226 | """Re-enable creation of transports for specified schemes.""" |
227 | if not self._is_set_up: |
228 | return |
229 | |
230 | === modified file 'lib/lp/codehosting/codeimport/tests/servers.py' |
231 | --- lib/lp/codehosting/codeimport/tests/servers.py 2009-12-14 18:11:07 +0000 |
232 | +++ lib/lp/codehosting/codeimport/tests/servers.py 2010-02-04 00:33:17 +0000 |
233 | @@ -82,8 +82,8 @@ |
234 | else: |
235 | return local_path_to_url(self.repository_path) |
236 | |
237 | - def setUp(self): |
238 | - super(SubversionServer, self).setUp() |
239 | + def start_server(self): |
240 | + super(SubversionServer, self).start_server() |
241 | self.createRepository(self.repository_path) |
242 | if self._use_svn_serve: |
243 | conf_path = os.path.join( |
244 | @@ -109,8 +109,8 @@ |
245 | raise AssertionError( |
246 | "svnserve didn't start accepting connections") |
247 | |
248 | - def tearDown(self): |
249 | - super(SubversionServer, self).tearDown() |
250 | + def stop_server(self): |
251 | + super(SubversionServer, self).stop_server() |
252 | if self._use_svn_serve: |
253 | os.kill(self._svnserve.pid, signal.SIGINT) |
254 | self._svnserve.communicate() |
255 | @@ -186,9 +186,9 @@ |
256 | module=module_name, log="import", vendor="vendor", |
257 | release=['release'], dir='.') |
258 | |
259 | - def setUp(self): |
260 | + def start_server(self): |
261 | # Initialize the repository. |
262 | - super(CVSServer, self).setUp() |
263 | + super(CVSServer, self).start_server() |
264 | self._repository = self.createRepository(self._repository_path) |
265 | |
266 | |
267 | |
268 | === modified file 'lib/lp/codehosting/codeimport/tests/test_foreigntree.py' |
269 | --- lib/lp/codehosting/codeimport/tests/test_foreigntree.py 2009-06-25 04:06:00 +0000 |
270 | +++ lib/lp/codehosting/codeimport/tests/test_foreigntree.py 2010-02-04 00:33:17 +0000 |
271 | @@ -40,8 +40,8 @@ |
272 | def setUp(self): |
273 | TestCaseWithTransport.setUp(self) |
274 | svn_server = SubversionServer('repository_path') |
275 | - svn_server.setUp() |
276 | - self.addCleanup(svn_server.tearDown) |
277 | + svn_server.start_server() |
278 | + self.addCleanup(svn_server.stop_server) |
279 | self.svn_branch_url = svn_server.makeBranch( |
280 | 'trunk', [('README', 'original')]) |
281 | |
282 | @@ -122,11 +122,11 @@ |
283 | def setUp(self): |
284 | TestCaseWithTransport.setUp(self) |
285 | self.cvs_server = CVSServer('repository_path') |
286 | - self.cvs_server.setUp() |
287 | + self.cvs_server.start_server() |
288 | self.module_name = 'test_module' |
289 | self.cvs_server.makeModule( |
290 | self.module_name, [('README', 'Random content\n')]) |
291 | - self.addCleanup(self.cvs_server.tearDown) |
292 | + self.addCleanup(self.cvs_server.stop_server) |
293 | |
294 | def test_path(self): |
295 | # The local path is passed to the constructor and available as |
296 | |
297 | === modified file 'lib/lp/codehosting/codeimport/tests/test_worker.py' |
298 | --- lib/lp/codehosting/codeimport/tests/test_worker.py 2010-02-01 03:55:59 +0000 |
299 | +++ lib/lp/codehosting/codeimport/tests/test_worker.py 2010-02-04 00:33:17 +0000 |
300 | @@ -773,8 +773,8 @@ |
301 | """Make a CVS `CodeImportSourceDetails` pointing at a real CVS repo. |
302 | """ |
303 | cvs_server = CVSServer(self.makeTemporaryDirectory()) |
304 | - cvs_server.setUp() |
305 | - self.addCleanup(cvs_server.tearDown) |
306 | + cvs_server.start_server() |
307 | + self.addCleanup(cvs_server.stop_server) |
308 | |
309 | cvs_server.makeModule('trunk', [('README', 'original\n')]) |
310 | |
311 | @@ -804,8 +804,8 @@ |
312 | """Make a SVN `CodeImportSourceDetails` pointing at a real SVN repo. |
313 | """ |
314 | svn_server = SubversionServer(self.makeTemporaryDirectory()) |
315 | - svn_server.setUp() |
316 | - self.addCleanup(svn_server.tearDown) |
317 | + svn_server.start_server() |
318 | + self.addCleanup(svn_server.stop_server) |
319 | |
320 | svn_branch_url = svn_server.makeBranch(branch_name, files) |
321 | svn_branch_url = svn_branch_url.replace('://localhost/', ':///') |
322 | @@ -897,8 +897,8 @@ |
323 | """ |
324 | repository_path = self.makeTemporaryDirectory() |
325 | git_server = GitServer(repository_path) |
326 | - git_server.setUp() |
327 | - self.addCleanup(git_server.tearDown) |
328 | + git_server.start_server() |
329 | + self.addCleanup(git_server.stop_server) |
330 | |
331 | git_server.makeRepo(files) |
332 | self.foreign_commit_count = 1 |
333 | @@ -948,8 +948,8 @@ |
334 | """ |
335 | repository_path = self.makeTemporaryDirectory() |
336 | hg_server = MercurialServer(repository_path) |
337 | - hg_server.setUp() |
338 | - self.addCleanup(hg_server.tearDown) |
339 | + hg_server.start_server() |
340 | + self.addCleanup(hg_server.stop_server) |
341 | |
342 | hg_server.makeRepo(files) |
343 | self.foreign_commit_count = 1 |
344 | |
345 | === modified file 'lib/lp/codehosting/codeimport/tests/test_workermonitor.py' |
346 | --- lib/lp/codehosting/codeimport/tests/test_workermonitor.py 2010-02-01 03:49:23 +0000 |
347 | +++ lib/lp/codehosting/codeimport/tests/test_workermonitor.py 2010-02-04 00:33:17 +0000 |
348 | @@ -358,6 +358,9 @@ |
349 | """Tests for `CodeImportWorkerMonitor.run` that don't launch a subprocess. |
350 | """ |
351 | |
352 | + # This works around a clash between the TrialTestCase and the BzrTestCase. |
353 | + skip = None |
354 | + |
355 | class WorkerMonitor(CodeImportWorkerMonitor): |
356 | """See `CodeImportWorkerMonitor`. |
357 | |
358 | @@ -472,6 +475,9 @@ |
359 | |
360 | layer = TwistedLaunchpadZopelessLayer |
361 | |
362 | + # This works around a clash between the TrialTestCase and the BzrTestCase. |
363 | + skip = None |
364 | + |
365 | def setUp(self): |
366 | BzrTestCase.setUp(self) |
367 | login('no-priv@canonical.com') |
368 | @@ -489,8 +495,8 @@ |
369 | def makeCVSCodeImport(self): |
370 | """Make a `CodeImport` that points to a real CVS repository.""" |
371 | cvs_server = CVSServer(self.repo_path) |
372 | - cvs_server.setUp() |
373 | - self.addCleanup(cvs_server.tearDown) |
374 | + cvs_server.start_server() |
375 | + self.addCleanup(cvs_server.stop_server) |
376 | |
377 | cvs_server.makeModule('trunk', [('README', 'original\n')]) |
378 | self.foreign_commit_count = 2 |
379 | @@ -501,8 +507,8 @@ |
380 | def makeSVNCodeImport(self): |
381 | """Make a `CodeImport` that points to a real Subversion repository.""" |
382 | self.subversion_server = SubversionServer(self.repo_path) |
383 | - self.subversion_server.setUp() |
384 | - self.addCleanup(self.subversion_server.tearDown) |
385 | + self.subversion_server.start_server() |
386 | + self.addCleanup(self.subversion_server.stop_server) |
387 | url = self.subversion_server.makeBranch( |
388 | 'trunk', [('README', 'contents')]) |
389 | self.foreign_commit_count = 2 |
390 | @@ -513,8 +519,8 @@ |
391 | """Make a `CodeImport` that points to a real Subversion repository.""" |
392 | self.subversion_server = SubversionServer( |
393 | self.repo_path, use_svn_serve=True) |
394 | - self.subversion_server.setUp() |
395 | - self.addCleanup(self.subversion_server.tearDown) |
396 | + self.subversion_server.start_server() |
397 | + self.addCleanup(self.subversion_server.stop_server) |
398 | url = self.subversion_server.makeBranch( |
399 | 'trunk', [('README', 'contents')]) |
400 | self.foreign_commit_count = 2 |
401 | @@ -526,8 +532,8 @@ |
402 | """Make a `CodeImport` that points to a real Git repository.""" |
403 | load_optional_plugin('git') |
404 | self.git_server = GitServer(self.repo_path) |
405 | - self.git_server.setUp() |
406 | - self.addCleanup(self.git_server.tearDown) |
407 | + self.git_server.start_server() |
408 | + self.addCleanup(self.git_server.stop_server) |
409 | |
410 | self.git_server.makeRepo([('README', 'contents')]) |
411 | self.foreign_commit_count = 1 |
412 | @@ -538,8 +544,8 @@ |
413 | """Make a `CodeImport` that points to a real Mercurial repository.""" |
414 | load_optional_plugin('hg') |
415 | self.hg_server = MercurialServer(self.repo_path) |
416 | - self.hg_server.setUp() |
417 | - self.addCleanup(self.hg_server.tearDown) |
418 | + self.hg_server.start_server() |
419 | + self.addCleanup(self.hg_server.stop_server) |
420 | |
421 | self.hg_server.makeRepo([('README', 'contents')]) |
422 | self.foreign_commit_count = 1 |
423 | |
424 | === modified file 'lib/lp/codehosting/puller/tests/test_acceptance.py' |
425 | --- lib/lp/codehosting/puller/tests/test_acceptance.py 2009-09-17 05:07:50 +0000 |
426 | +++ lib/lp/codehosting/puller/tests/test_acceptance.py 2010-02-04 00:33:17 +0000 |
427 | @@ -140,7 +140,7 @@ |
428 | """Serve the current directory over HTTP, returning the server URL.""" |
429 | http_server = HttpServer() |
430 | http_server.port = port |
431 | - http_server.setUp() |
432 | + http_server.start_server() |
433 | # Join cleanup added before the tearDown so the tearDown is executed |
434 | # first as this tells the thread to die. We then join explicitly as |
435 | # the HttpServer.tearDown does not join. There is a check in the |
436 | @@ -149,7 +149,7 @@ |
437 | # threads and let the garbage collector get them, however this causes |
438 | # issues with the test runner. |
439 | self.addCleanup(http_server._http_thread.join) |
440 | - self.addCleanup(http_server.tearDown) |
441 | + self.addCleanup(http_server.stop_server) |
442 | return http_server.get_url().rstrip('/') |
443 | |
444 | def getLPServerForUser(self, user): |
445 | @@ -167,8 +167,8 @@ |
446 | # in a subprocess which would have no way of knowing which directories |
447 | # to look in if we used freshly created temporary directories. |
448 | lp_server = get_lp_server(user.id) |
449 | - lp_server.setUp() |
450 | - self.addCleanup(lp_server.tearDown) |
451 | + lp_server.start_server() |
452 | + self.addCleanup(lp_server.stop_server) |
453 | return lp_server |
454 | |
455 | def openBranchAsUser(self, db_branch, user): |
456 | |
457 | === modified file 'lib/lp/codehosting/puller/tests/test_worker.py' |
458 | --- lib/lp/codehosting/puller/tests/test_worker.py 2010-01-07 06:40:23 +0000 |
459 | +++ lib/lp/codehosting/puller/tests/test_worker.py 2010-02-04 00:33:17 +0000 |
460 | @@ -34,7 +34,6 @@ |
461 | from lp.testing import TestCase |
462 | from lp.testing.factory import LaunchpadObjectFactory |
463 | from lazr.uri import URI |
464 | -from canonical.testing import reset_logging |
465 | |
466 | |
467 | def get_netstrings(line): |
468 | @@ -737,13 +736,12 @@ |
469 | def tearDown(self): |
470 | TestCaseWithTransport.tearDown(self) |
471 | bzrlib.ui.ui_factory = self.saved_factory |
472 | - reset_logging() |
473 | |
474 | def getHttpServerForCwd(self): |
475 | """Get an `HttpServer` instance that serves from '.'.""" |
476 | server = HttpServer() |
477 | - server.setUp() |
478 | - self.addCleanup(server.tearDown) |
479 | + server.start_server() |
480 | + self.addCleanup(server.stop_server) |
481 | # The gc.collect allows the threads behind any HTTP requests to exit. |
482 | self.addCleanup(gc.collect) |
483 | return server |
484 | |
485 | === modified file 'lib/lp/codehosting/puller/tests/test_worker_formats.py' |
486 | --- lib/lp/codehosting/puller/tests/test_worker_formats.py 2009-12-22 23:52:00 +0000 |
487 | +++ lib/lp/codehosting/puller/tests/test_worker_formats.py 2010-02-04 00:33:17 +0000 |
488 | @@ -17,7 +17,6 @@ |
489 | from lp.codehosting.puller.tests import PullerWorkerMixin |
490 | from lp.codehosting.tests.helpers import LoomTestMixin |
491 | from lazr.uri import URI |
492 | -from canonical.testing import reset_logging |
493 | |
494 | |
495 | class TestPullerWorkerFormats(TestCaseWithRepository, PullerWorkerMixin, |
496 | @@ -31,10 +30,6 @@ |
497 | self.get_url(self._source_branch_path), |
498 | self.get_url('dest-path')) |
499 | |
500 | - def tearDown(self): |
501 | - TestCaseWithRepository.tearDown(self) |
502 | - reset_logging() |
503 | - |
504 | def _createSourceBranch(self, repository_format, bzrdir_format, |
505 | branch_format=None): |
506 | """Make a source branch with the given formats.""" |
507 | |
508 | === modified file 'lib/lp/codehosting/puller/worker.py' |
509 | --- lib/lp/codehosting/puller/worker.py 2010-01-07 05:04:49 +0000 |
510 | +++ lib/lp/codehosting/puller/worker.py 2010-02-04 00:33:17 +0000 |
511 | @@ -419,12 +419,12 @@ |
512 | from lp.codehosting.vfs import get_puller_server |
513 | |
514 | server = get_puller_server() |
515 | - server.setUp() |
516 | + server.start_server() |
517 | try: |
518 | source_branch = self.branch_mirrorer.open(self.source) |
519 | return self.branch_mirrorer.mirror(source_branch, self.dest) |
520 | finally: |
521 | - server.tearDown() |
522 | + server.stop_server() |
523 | |
524 | def mirror(self): |
525 | """Open source and destination branches and pull source into |
526 | |
527 | === modified file 'lib/lp/codehosting/scanner/branch_scanner.py' |
528 | --- lib/lp/codehosting/scanner/branch_scanner.py 2009-12-17 02:00:16 +0000 |
529 | +++ lib/lp/codehosting/scanner/branch_scanner.py 2010-02-04 00:33:17 +0000 |
530 | @@ -23,7 +23,7 @@ |
531 | from lp.codehosting.scanner.bzrsync import ( |
532 | BzrSync, schedule_diff_updates, schedule_translation_upload) |
533 | from lp.codehosting.scanner.fixture import ( |
534 | - Fixtures, make_zope_event_fixture, run_with_fixture) |
535 | + Fixtures, make_zope_event_fixture, run_with_fixture, ServerFixture) |
536 | from canonical.launchpad.webapp import canonical_url, errorlog |
537 | |
538 | |
539 | @@ -100,7 +100,8 @@ |
540 | schedule_translation_upload, |
541 | ] |
542 | server = get_scanner_server() |
543 | - fixture = Fixtures([server, make_zope_event_fixture(*event_handlers)]) |
544 | + fixture = Fixtures( |
545 | + [ServerFixture(server), make_zope_event_fixture(*event_handlers)]) |
546 | self.log.info('Starting branch scanning') |
547 | branches = getUtility(IBranchScanner).getBranchesToScan() |
548 | run_with_fixture(fixture, self.scanBranches, branches) |
549 | |
550 | === modified file 'lib/lp/codehosting/scanner/fixture.py' |
551 | --- lib/lp/codehosting/scanner/fixture.py 2009-06-30 16:56:07 +0000 |
552 | +++ lib/lp/codehosting/scanner/fixture.py 2010-02-04 00:33:17 +0000 |
553 | @@ -1,4 +1,4 @@ |
554 | -# Copyright 2009 Canonical Ltd. This software is licensed under the |
555 | +# Copyright 2009, 2010 Canonical Ltd. This software is licensed under the |
556 | # GNU Affero General Public License version 3 (see the file LICENSE). |
557 | |
558 | # pylint: disable-msg=E0211 |
559 | @@ -16,6 +16,7 @@ |
560 | 'IFixture', |
561 | 'make_zope_event_fixture', |
562 | 'run_with_fixture', |
563 | + 'ServerFixture', |
564 | 'with_fixture', |
565 | ] |
566 | |
567 | @@ -121,3 +122,18 @@ |
568 | |
569 | def make_zope_event_fixture(*handlers): |
570 | return Fixtures(map(ZopeEventHandlerFixture, handlers)) |
571 | + |
572 | + |
573 | +class ServerFixture: |
574 | + """Adapt a bzrlib `Server` into an `IFixture`.""" |
575 | + |
576 | + implements(IFixture) |
577 | + |
578 | + def __init__(self, server): |
579 | + self.server = server |
580 | + |
581 | + def setUp(self): |
582 | + self.server.start_server() |
583 | + |
584 | + def tearDown(self): |
585 | + self.server.stop_server() |
586 | |
587 | === modified file 'lib/lp/codehosting/scanner/tests/test_bzrsync.py' |
588 | --- lib/lp/codehosting/scanner/tests/test_bzrsync.py 2010-01-06 09:26:56 +0000 |
589 | +++ lib/lp/codehosting/scanner/tests/test_bzrsync.py 2010-02-04 00:33:17 +0000 |
590 | @@ -73,7 +73,7 @@ |
591 | self._url_prefix = url_prefix |
592 | self._chroot_server = None |
593 | |
594 | - def setUp(self): |
595 | + def start_server(self): |
596 | """Activate the transport URL.""" |
597 | # The scanner tests assume that branches live on a Launchpad virtual |
598 | # filesystem rooted at 'lp-mirrored:///'. Rather than provide the |
599 | @@ -81,11 +81,11 @@ |
600 | # transport do the work. |
601 | register_transport(self._url_prefix, self._transportFactory) |
602 | self._chroot_server = ChrootServer(self._transport) |
603 | - self._chroot_server.setUp() |
604 | + self._chroot_server.start_server() |
605 | |
606 | - def tearDown(self): |
607 | + def stop_server(self): |
608 | """Deactivate the transport URL.""" |
609 | - self._chroot_server.tearDown() |
610 | + self._chroot_server.stop_server() |
611 | unregister_transport(self._url_prefix, self._transportFactory) |
612 | |
613 | def _transportFactory(self, url): |
614 | @@ -111,8 +111,8 @@ |
615 | # Here we set up a fake so that we can test without worrying about |
616 | # authservers and the like. |
617 | server = FakeTransportServer(self.get_transport()) |
618 | - server.setUp() |
619 | - self.addCleanup(server.tearDown) |
620 | + server.start_server() |
621 | + self.addCleanup(server.stop_server) |
622 | |
623 | def makeFixtures(self): |
624 | """Makes test fixtures before we switch to the scanner db user.""" |
625 | |
626 | === modified file 'lib/lp/codehosting/sftp.py' |
627 | --- lib/lp/codehosting/sftp.py 2009-11-27 21:59:26 +0000 |
628 | +++ lib/lp/codehosting/sftp.py 2010-02-04 00:33:17 +0000 |
629 | @@ -251,7 +251,7 @@ |
630 | config.codehosting.mirrored_branches_root) |
631 | server = LaunchpadServer( |
632 | avatar.branchfs_proxy, user_id, hosted_transport, mirror_transport) |
633 | - server.setUp() |
634 | + server.start_server() |
635 | transport = AsyncLaunchpadTransport(server, server.get_url()) |
636 | notify(accesslog.SFTPStarted(avatar)) |
637 | return TransportSFTPServer(transport) |
638 | |
639 | === modified file 'lib/lp/codehosting/sshserver/tests/test_logging.py' |
640 | --- lib/lp/codehosting/sshserver/tests/test_logging.py 2009-06-25 04:06:00 +0000 |
641 | +++ lib/lp/codehosting/sshserver/tests/test_logging.py 2010-02-04 00:33:17 +0000 |
642 | @@ -24,7 +24,6 @@ |
643 | from canonical.config import config |
644 | from canonical.launchpad.scripts import WatchedFileHandler |
645 | from lp.testing import TestCase |
646 | -from canonical.testing import reset_logging |
647 | |
648 | |
649 | class TestLoggingBazaarInteraction(BzrTestCase): |
650 | @@ -36,16 +35,6 @@ |
651 | self._real_stderr = sys.stderr |
652 | sys.stderr = codecs.getwriter('utf8')(StringIO()) |
653 | |
654 | - # We want to use Bazaar's default logging -- not its test logging -- |
655 | - # so here we disable the testing logging system (which restores |
656 | - # default logging). |
657 | - self._finishLogFile() |
658 | - |
659 | - # We don't use BaseLayer because we want to keep the amount of |
660 | - # pre-configured logging systems to an absolute minimum, in order to |
661 | - # make it easier to test this particular logging system. |
662 | - self.addCleanup(reset_logging) |
663 | - |
664 | def tearDown(self): |
665 | sys.stderr = self._real_stderr |
666 | BzrTestCase.tearDown(self) |
667 | @@ -77,13 +66,6 @@ |
668 | |
669 | class TestLoggingManager(TestCase): |
670 | |
671 | - def setUp(self): |
672 | - TestCase.setUp(self) |
673 | - # We don't use BaseLayer because we want to keep the amount of |
674 | - # pre-configured logging systems to an absolute minimum, in order to |
675 | - # make it easier to test this particular logging system. |
676 | - self.addCleanup(reset_logging) |
677 | - |
678 | def test_returns_codehosting_logger(self): |
679 | # get_codehosting_logger returns the 'codehosting' logger. |
680 | self.assertIs( |
681 | |
682 | === modified file 'lib/lp/codehosting/tests/servers.py' |
683 | --- lib/lp/codehosting/tests/servers.py 2009-06-25 04:06:00 +0000 |
684 | +++ lib/lp/codehosting/tests/servers.py 2010-02-04 00:33:17 +0000 |
685 | @@ -126,10 +126,10 @@ |
686 | transport = get_transport(self.get_url()).clone(path) |
687 | return transport |
688 | |
689 | - def setUp(self): |
690 | + def start_server(self): |
691 | self._real_home, self._fake_home = self.setUpFakeHome() |
692 | |
693 | - def tearDown(self): |
694 | + def stop_server(self): |
695 | os.environ['HOME'] = self._real_home |
696 | shutil.rmtree(self._fake_home) |
697 | |
698 | |
699 | === modified file 'lib/lp/codehosting/tests/test_acceptance.py' |
700 | --- lib/lp/codehosting/tests/test_acceptance.py 2009-12-22 23:45:50 +0000 |
701 | +++ lib/lp/codehosting/tests/test_acceptance.py 2010-02-04 00:33:17 +0000 |
702 | @@ -89,15 +89,15 @@ |
703 | self.disable_directory_isolation() |
704 | tac_handler = SSHServerLayer.getTacHandler() |
705 | self.server = SSHCodeHostingServer(self.scheme, tac_handler) |
706 | - self.server.setUp() |
707 | - self.addCleanup(self.server.tearDown) |
708 | + self.server.start_server() |
709 | + self.addCleanup(self.server.stop_server) |
710 | |
711 | # Prevent creation of in-process sftp:// and bzr+ssh:// transports -- |
712 | # such connections tend to leak threads and occasionally create |
713 | # uncollectable garbage. |
714 | ssh_denier = DenyingServer(['bzr+ssh://', 'sftp://']) |
715 | - ssh_denier.setUp() |
716 | - self.addCleanup(ssh_denier.tearDown) |
717 | + ssh_denier.start_server() |
718 | + self.addCleanup(ssh_denier.stop_server) |
719 | |
720 | # Create a local branch with one revision |
721 | tree = self.make_branch_and_tree('.') |
722 | |
723 | === modified file 'lib/lp/codehosting/tests/test_branchdistro.py' |
724 | --- lib/lp/codehosting/tests/test_branchdistro.py 2009-10-26 22:37:15 +0000 |
725 | +++ lib/lp/codehosting/tests/test_branchdistro.py 2010-02-04 00:33:17 +0000 |
726 | @@ -59,8 +59,8 @@ |
727 | # location. |
728 | |
729 | chroot_server = ChrootServer(self.get_transport()) |
730 | - chroot_server.setUp() |
731 | - self.addCleanup(chroot_server.tearDown) |
732 | + chroot_server.start_server() |
733 | + self.addCleanup(chroot_server.stop_server) |
734 | scheme = chroot_server.get_url().rstrip('/:') |
735 | |
736 | old_branch = FakeBranch(1) |
737 | |
738 | === modified file 'lib/lp/codehosting/tests/test_bzrutils.py' |
739 | --- lib/lp/codehosting/tests/test_bzrutils.py 2009-12-22 23:52:00 +0000 |
740 | +++ lib/lp/codehosting/tests/test_bzrutils.py 2010-02-04 00:33:17 +0000 |
741 | @@ -127,9 +127,9 @@ |
742 | branch.base.startswith('file://'), |
743 | "make_branch() didn't make branch with file:// URL") |
744 | file_denier = DenyingServer(['file://']) |
745 | - file_denier.setUp() |
746 | + file_denier.start_server() |
747 | self.assertRaises(AssertionError, Branch.open, branch.base) |
748 | - file_denier.tearDown() |
749 | + file_denier.stop_server() |
750 | # This is just "assertNotRaises": |
751 | Branch.open(branch.base) |
752 | |
753 | @@ -188,8 +188,8 @@ |
754 | # RemoteBranch. |
755 | vfs_branch = self.make_branch('.') |
756 | smart_server = server.SmartTCPServer_for_testing() |
757 | - smart_server.setUp(self.get_vfs_only_server()) |
758 | - self.addCleanup(smart_server.tearDown) |
759 | + smart_server.start_server(self.get_vfs_only_server()) |
760 | + self.addCleanup(smart_server.stop_server) |
761 | remote_branch = Branch.open(smart_server.get_url()) |
762 | # Check that our set up worked: remote_branch is Remote and |
763 | # source_branch is not. |
764 | |
765 | === modified file 'lib/lp/codehosting/tests/test_sftp.py' |
766 | --- lib/lp/codehosting/tests/test_sftp.py 2009-12-08 16:24:12 +0000 |
767 | +++ lib/lp/codehosting/tests/test_sftp.py 2010-02-04 00:33:17 +0000 |
768 | @@ -161,6 +161,9 @@ |
769 | |
770 | layer = TwistedLayer |
771 | |
772 | + # This works around a clash between the TrialTestCase and the BzrTestCase. |
773 | + skip = None |
774 | + |
775 | def setUp(self): |
776 | TrialTestCase.setUp(self) |
777 | TestCaseInTempDir.setUp(self) |
778 | @@ -413,6 +416,9 @@ |
779 | |
780 | layer = TwistedLayer |
781 | |
782 | + # This works around a clash between the TrialTestCase and the BzrTestCase. |
783 | + skip = None |
784 | + |
785 | def setUp(self): |
786 | TrialTestCase.setUp(self) |
787 | TestCaseInTempDir.setUp(self) |
788 | |
789 | === modified file 'lib/lp/codehosting/vfs/branchfs.py' |
790 | --- lib/lp/codehosting/vfs/branchfs.py 2010-01-07 05:05:37 +0000 |
791 | +++ lib/lp/codehosting/vfs/branchfs.py 2010-02-04 00:33:17 +0000 |
792 | @@ -340,7 +340,7 @@ |
793 | configured to use the given default stacked-on location. |
794 | """ |
795 | memory_server = MemoryServer() |
796 | - memory_server.setUp() |
797 | + memory_server.start_server() |
798 | transport = get_transport(memory_server.get_url()) |
799 | if default_stack_on == '': |
800 | return transport |
801 | @@ -378,7 +378,7 @@ |
802 | """ |
803 | AsyncVirtualServer.__init__(self, scheme) |
804 | self._authserver = BranchFileSystemClient(authserver, user_id) |
805 | - self._is_set_up = False |
806 | + self._is_start_server = False |
807 | |
808 | def translateVirtualPath(self, virtual_url_fragment): |
809 | """See `AsyncVirtualServer.translateVirtualPath`. |
810 | @@ -429,8 +429,8 @@ |
811 | scheme, authserver, LAUNCHPAD_SERVICES) |
812 | self._transport_dispatch = BranchTransportDispatch(branch_transport) |
813 | |
814 | - def setUp(self): |
815 | - super(LaunchpadInternalServer, self).setUp() |
816 | + def start_server(self): |
817 | + super(LaunchpadInternalServer, self).start_server() |
818 | try: |
819 | self._transport_dispatch.base_transport.ensure_base() |
820 | except TransportNotPossible: |
821 | @@ -439,7 +439,7 @@ |
822 | def destroy(self): |
823 | """Delete the on-disk branches and tear down.""" |
824 | self._transport_dispatch.base_transport.delete_tree('.') |
825 | - self.tearDown() |
826 | + self.stop_server() |
827 | |
828 | |
829 | class DirectDatabaseLaunchpadServer(AsyncVirtualServer): |
830 | @@ -448,8 +448,8 @@ |
831 | AsyncVirtualServer.__init__(self, scheme) |
832 | self._transport_dispatch = BranchTransportDispatch(branch_transport) |
833 | |
834 | - def setUp(self): |
835 | - super(DirectDatabaseLaunchpadServer, self).setUp() |
836 | + def start_server(self): |
837 | + super(DirectDatabaseLaunchpadServer, self).start_server() |
838 | try: |
839 | self._transport_dispatch.base_transport.ensure_base() |
840 | except TransportNotPossible: |
841 | @@ -458,7 +458,7 @@ |
842 | def destroy(self): |
843 | """Delete the on-disk branches and tear down.""" |
844 | self._transport_dispatch.base_transport.delete_tree('.') |
845 | - self.tearDown() |
846 | + self.stop_server() |
847 | |
848 | def translateVirtualPath(self, virtual_url_fragment): |
849 | """See `AsyncVirtualServer.translateVirtualPath`. |
850 | |
851 | === modified file 'lib/lp/codehosting/vfs/tests/test_branchfs.py' |
852 | --- lib/lp/codehosting/vfs/tests/test_branchfs.py 2009-12-22 23:50:27 +0000 |
853 | +++ lib/lp/codehosting/vfs/tests/test_branchfs.py 2010-02-04 00:33:17 +0000 |
854 | @@ -49,7 +49,7 @@ |
855 | def setUp(self): |
856 | super(TestBranchTransportDispatch, self).setUp() |
857 | memory_server = MemoryServer() |
858 | - memory_server.setUp() |
859 | + memory_server.start_server() |
860 | self.base_transport = get_transport(memory_server.get_url()) |
861 | self.factory = BranchTransportDispatch(self.base_transport) |
862 | |
863 | @@ -90,7 +90,7 @@ |
864 | def setUp(self): |
865 | super(TestTransportDispatch, self).setUp() |
866 | memory_server = MemoryServer() |
867 | - memory_server.setUp() |
868 | + memory_server.start_server() |
869 | base_transport = get_transport(memory_server.get_url()) |
870 | base_transport.mkdir('hosted') |
871 | base_transport.mkdir('mirrored') |
872 | @@ -199,16 +199,16 @@ |
873 | def test_setUp(self): |
874 | # Setting up the server registers its schema with the protocol |
875 | # handlers. |
876 | - self.server.setUp() |
877 | - self.addCleanup(self.server.tearDown) |
878 | + self.server.start_server() |
879 | + self.addCleanup(self.server.stop_server) |
880 | self.assertTrue( |
881 | self.server.get_url() in _get_protocol_handlers().keys()) |
882 | |
883 | def test_tearDown(self): |
884 | # Setting up then tearing down the server removes its schema from the |
885 | # protocol handlers. |
886 | - self.server.setUp() |
887 | - self.server.tearDown() |
888 | + self.server.start_server() |
889 | + self.server.stop_server() |
890 | self.assertFalse( |
891 | self.server.get_url() in _get_protocol_handlers().keys()) |
892 | |
893 | @@ -216,6 +216,9 @@ |
894 | class TestLaunchpadServer(MixinBaseLaunchpadServerTests, TrialTestCase, |
895 | BzrTestCase): |
896 | |
897 | + # This works around a clash between the TrialTestCase and the BzrTestCase. |
898 | + skip = None |
899 | + |
900 | def setUp(self): |
901 | BzrTestCase.setUp(self) |
902 | MixinBaseLaunchpadServerTests.setUp(self) |
903 | @@ -287,8 +290,8 @@ |
904 | # The URL of the server is 'lp-<number>:///', where <number> is the |
905 | # id() of the server object. Including the id allows for multiple |
906 | # Launchpad servers to be running within a single process. |
907 | - self.server.setUp() |
908 | - self.addCleanup(self.server.tearDown) |
909 | + self.server.start_server() |
910 | + self.addCleanup(self.server.stop_server) |
911 | self.assertEqual('lp-%d:///' % id(self.server), self.server.get_url()) |
912 | |
913 | |
914 | @@ -315,8 +318,8 @@ |
915 | return deferred.addCallback(check_branch_transport) |
916 | |
917 | def test_translate_control_dir_path(self): |
918 | - self.server.setUp() |
919 | - self.addCleanup(self.server.tearDown) |
920 | + self.server.start_server() |
921 | + self.addCleanup(self.server.stop_server) |
922 | branch = self.factory.makeProductBranch() |
923 | branch.product.development_focus.branch = branch |
924 | transport = get_transport(self.server.get_url()) |
925 | @@ -327,8 +330,8 @@ |
926 | def test_open_containing_raises_branch_not_found(self): |
927 | # open_containing_from_transport raises NotBranchError if there's no |
928 | # branch at that URL. |
929 | - self.server.setUp() |
930 | - self.addCleanup(self.server.tearDown) |
931 | + self.server.start_server() |
932 | + self.addCleanup(self.server.stop_server) |
933 | branch = self.factory.makeAnyBranch(owner=self.requester) |
934 | transport = get_transport(self.server.get_url()) |
935 | transport = transport.clone(branch.unique_name) |
936 | @@ -342,6 +345,9 @@ |
937 | LaunchpadInternalServerTests): |
938 | """Tests for `LaunchpadInternalServer`, used by the puller and scanner.""" |
939 | |
940 | + # This works around a clash between the TrialTestCase and the BzrTestCase. |
941 | + skip = None |
942 | + |
943 | def setUp(self): |
944 | BzrTestCase.setUp(self) |
945 | self.disable_directory_isolation() |
946 | @@ -358,6 +364,9 @@ |
947 | |
948 | layer = ZopelessDatabaseLayer |
949 | |
950 | + # This works around a clash between the TrialTestCase and the BzrTestCase. |
951 | + skip = None |
952 | + |
953 | def setUp(self): |
954 | super(TestDirectDatabaseLaunchpadServer, self).setUp() |
955 | self.requester = self.factory.makePerson() |
956 | @@ -371,6 +380,9 @@ |
957 | |
958 | layer = TwistedLayer |
959 | |
960 | + # This works around a clash between the TrialTestCase and the BzrTestCase. |
961 | + skip = None |
962 | + |
963 | class VirtualServer(Server): |
964 | """Very simple server that provides a AsyncVirtualTransport.""" |
965 | |
966 | @@ -383,11 +395,11 @@ |
967 | def get_url(self): |
968 | return self.scheme |
969 | |
970 | - def setUp(self): |
971 | + def start_server(self): |
972 | self.scheme = 'virtual:///' |
973 | register_transport(self.scheme, self._transportFactory) |
974 | |
975 | - def tearDown(self): |
976 | + def stop_server(self): |
977 | unregister_transport(self.scheme, self._transportFactory) |
978 | |
979 | def translateVirtualPath(self, virtual_path): |
980 | @@ -399,8 +411,8 @@ |
981 | TestCaseInTempDir.setUp(self) |
982 | self.server = self.VirtualServer( |
983 | FatLocalTransport(local_path_to_url('.'))) |
984 | - self.server.setUp() |
985 | - self.addCleanup(self.server.tearDown) |
986 | + self.server.start_server() |
987 | + self.addCleanup(self.server.stop_server) |
988 | self.transport = get_transport(self.server.get_url()) |
989 | |
990 | def test_writeChunk(self): |
991 | @@ -477,8 +489,8 @@ |
992 | self.server = self.getServer( |
993 | authserver, self.requester.id, self.backing_transport, |
994 | MemoryTransport()) |
995 | - self.server.setUp() |
996 | - self.addCleanup(self.server.tearDown) |
997 | + self.server.start_server() |
998 | + self.addCleanup(self.server.stop_server) |
999 | |
1000 | def assertFiresFailure(self, exception, function, *args, **kwargs): |
1001 | """Assert that calling `function` will cause `exception` to be fired. |
1002 | @@ -770,6 +782,9 @@ |
1003 | |
1004 | class TestLaunchpadTransportSync(LaunchpadTransportTests, TrialTestCase): |
1005 | |
1006 | + # This works around a clash between the TrialTestCase and the BzrTestCase. |
1007 | + skip = None |
1008 | + |
1009 | def _ensureDeferred(self, function, *args, **kwargs): |
1010 | def call_function_and_check_not_deferred(): |
1011 | ret = function(*args, **kwargs) |
1012 | @@ -793,6 +808,9 @@ |
1013 | |
1014 | class TestLaunchpadTransportAsync(LaunchpadTransportTests, TrialTestCase): |
1015 | |
1016 | + # This works around a clash between the TrialTestCase and the BzrTestCase. |
1017 | + skip = None |
1018 | + |
1019 | def _ensureDeferred(self, function, *args, **kwargs): |
1020 | deferred = function(*args, **kwargs) |
1021 | self.assertIsInstance(deferred, defer.Deferred) |
1022 | @@ -828,8 +846,8 @@ |
1023 | self._server = LaunchpadServer( |
1024 | XMLRPCWrapper(self.authserver), self.requester.id, |
1025 | self.backing_transport, self.mirror_transport) |
1026 | - self._server.setUp() |
1027 | - self.addCleanup(self._server.tearDown) |
1028 | + self._server.start_server() |
1029 | + self.addCleanup(self._server.stop_server) |
1030 | return self._server |
1031 | |
1032 | def test_no_mirrors_requested_if_no_branches_changed(self): |
1033 | @@ -861,6 +879,9 @@ |
1034 | # See comment on TestLaunchpadServer. |
1035 | layer = TwistedLayer |
1036 | |
1037 | + # This works around a clash between the TrialTestCase and the BzrTestCase. |
1038 | + skip = None |
1039 | + |
1040 | def setUp(self): |
1041 | BzrTestCase.setUp(self) |
1042 | |
1043 | @@ -890,8 +911,8 @@ |
1044 | |
1045 | def _setUpMemoryServer(self): |
1046 | memory_server = MemoryServer() |
1047 | - memory_server.setUp() |
1048 | - self.addCleanup(memory_server.tearDown) |
1049 | + memory_server.start_server() |
1050 | + self.addCleanup(memory_server.stop_server) |
1051 | return memory_server |
1052 | |
1053 | def _setUpLaunchpadServer(self, user_id, authserver, backing_transport, |
1054 | @@ -899,8 +920,8 @@ |
1055 | server = LaunchpadServer( |
1056 | XMLRPCWrapper(authserver), user_id, backing_transport, |
1057 | mirror_transport) |
1058 | - server.setUp() |
1059 | - self.addCleanup(server.tearDown) |
1060 | + server.start_server() |
1061 | + self.addCleanup(server.stop_server) |
1062 | return server |
1063 | |
1064 | def test_mkdir_readonly(self): |
1065 | |
1066 | === modified file 'lib/lp/codehosting/vfs/tests/test_filesystem.py' |
1067 | --- lib/lp/codehosting/vfs/tests/test_filesystem.py 2009-11-21 00:34:12 +0000 |
1068 | +++ lib/lp/codehosting/vfs/tests/test_filesystem.py 2010-02-04 00:33:17 +0000 |
1069 | @@ -34,8 +34,8 @@ |
1070 | self.requester = self.factory.makePerson() |
1071 | self._server = LaunchpadServer( |
1072 | endpoint, self.requester.id, MemoryTransport(), MemoryTransport()) |
1073 | - self._server.setUp() |
1074 | - self.addCleanup(self._server.tearDown) |
1075 | + self._server.start_server() |
1076 | + self.addCleanup(self._server.stop_server) |
1077 | |
1078 | def getTransport(self, relpath=None): |
1079 | return get_transport(self._server.get_url()).clone(relpath) |
1080 | |
1081 | === modified file 'lib/lp/codehosting/vfs/tests/test_transport.py' |
1082 | --- lib/lp/codehosting/vfs/tests/test_transport.py 2009-12-22 23:52:00 +0000 |
1083 | +++ lib/lp/codehosting/vfs/tests/test_transport.py 2010-02-04 00:33:17 +0000 |
1084 | @@ -60,7 +60,7 @@ |
1085 | self._branch_path).clone('.bzr') |
1086 | bzrdir_transport.ensure_base() |
1087 | chroot_server = chroot.ChrootServer(bzrdir_transport) |
1088 | - chroot_server.setUp() |
1089 | + chroot_server.start_server() |
1090 | self._chroot_servers.append(chroot_server) |
1091 | return get_transport(chroot_server.get_url()).clone(relpath) |
1092 | |
1093 | @@ -71,7 +71,7 @@ |
1094 | ChrootServer instances we've set up. |
1095 | """ |
1096 | for chroot_server in self._chroot_servers: |
1097 | - chroot_server.tearDown() |
1098 | + chroot_server.stop_server() |
1099 | LaunchpadInternalServer.tearDown(self) |
1100 | |
1101 | |
1102 | |
1103 | === modified file 'lib/lp/codehosting/vfs/transport.py' |
1104 | --- lib/lp/codehosting/vfs/transport.py 2009-12-22 23:50:27 +0000 |
1105 | +++ lib/lp/codehosting/vfs/transport.py 2010-02-04 00:33:17 +0000 |
1106 | @@ -57,7 +57,7 @@ |
1107 | if mkdir: |
1108 | transport.create_prefix() |
1109 | chroot_server = chroot.ChrootServer(transport) |
1110 | - chroot_server.setUp() |
1111 | + chroot_server.start_server() |
1112 | return get_transport(chroot_server.get_url()) |
1113 | |
1114 | |
1115 | @@ -74,17 +74,17 @@ |
1116 | def __init__(self, *servers): |
1117 | self._servers = servers |
1118 | |
1119 | - def setUp(self): |
1120 | + def start_server(self): |
1121 | for server in self._servers: |
1122 | - server.setUp() |
1123 | + server.start_server() |
1124 | |
1125 | def destroy(self): |
1126 | for server in reversed(self._servers): |
1127 | server.destroy() |
1128 | |
1129 | - def tearDown(self): |
1130 | + def stop_server(self): |
1131 | for server in reversed(self._servers): |
1132 | - server.tearDown() |
1133 | + server.stop_server() |
1134 | |
1135 | |
1136 | class AsyncVirtualTransport(Transport): |
1137 | @@ -383,7 +383,7 @@ |
1138 | # safely upcall it. |
1139 | # pylint: disable-msg=W0231 |
1140 | self._scheme = scheme |
1141 | - self._is_set_up = False |
1142 | + self._is_started = False |
1143 | |
1144 | def _transportFactory(self, url): |
1145 | """Create a transport for this server pointing at `url`. |
1146 | @@ -412,14 +412,14 @@ |
1147 | """Return the URL of this server.""" |
1148 | return self._scheme |
1149 | |
1150 | - def setUp(self): |
1151 | - """See Server.setUp.""" |
1152 | + def start_server(self): |
1153 | + """See Server.start_server.""" |
1154 | register_transport(self.get_url(), self._transportFactory) |
1155 | - self._is_set_up = True |
1156 | + self._is_started = True |
1157 | |
1158 | - def tearDown(self): |
1159 | - """See Server.tearDown.""" |
1160 | - if not self._is_set_up: |
1161 | + def stop_server(self): |
1162 | + """See Server.stop_server.""" |
1163 | + if not self._is_started: |
1164 | return |
1165 | - self._is_set_up = False |
1166 | + self._is_started = False |
1167 | unregister_transport(self.get_url(), self._transportFactory) |
1168 | |
1169 | === modified file 'lib/lp/testing/__init__.py' |
1170 | --- lib/lp/testing/__init__.py 2010-02-02 11:26:31 +0000 |
1171 | +++ lib/lp/testing/__init__.py 2010-02-04 00:33:17 +0000 |
1172 | @@ -524,18 +524,39 @@ |
1173 | server = get_multi_server( |
1174 | write_hosted=True, write_mirrored=True, |
1175 | direct_database=direct_database) |
1176 | - server.setUp() |
1177 | + server.start_server() |
1178 | self.addCleanup(server.destroy) |
1179 | else: |
1180 | os.mkdir('lp-mirrored') |
1181 | mirror_server = FakeTransportServer(get_transport('lp-mirrored')) |
1182 | - mirror_server.setUp() |
1183 | - self.addCleanup(mirror_server.tearDown) |
1184 | + mirror_server.start_server() |
1185 | + self.addCleanup(mirror_server.stop_server) |
1186 | os.mkdir('lp-hosted') |
1187 | hosted_server = FakeTransportServer( |
1188 | get_transport('lp-hosted'), url_prefix='lp-hosted:///') |
1189 | - hosted_server.setUp() |
1190 | - self.addCleanup(hosted_server.tearDown) |
1191 | + hosted_server.start_server() |
1192 | + self.addCleanup(hosted_server.stop_server) |
1193 | + |
1194 | + |
1195 | +class WindmillTestCase(TestCaseWithFactory): |
1196 | + """A TestCase class for Windmill tests. |
1197 | + |
1198 | + It provides a WindmillTestClient (self.client) with Launchpad's front |
1199 | + page loaded. |
1200 | + """ |
1201 | + |
1202 | + suite_name = '' |
1203 | + |
1204 | + def setUp(self): |
1205 | + TestCaseWithFactory.setUp(self) |
1206 | + self.client = WindmillTestClient(self.suite_name) |
1207 | + # Load the front page to make sure we don't get fooled by stale pages |
1208 | + # left by the previous test. (For some reason, when you create a new |
1209 | + # WindmillTestClient you get a new session and everything, but if you |
1210 | + # do anything before you open() something you'd be operating on the |
1211 | + # page that was last accessed by the previous test, which is the cause |
1212 | + # of things like https://launchpad.net/bugs/515494) |
1213 | + self.client.open(url=u'http://launchpad.dev:8085') |
1214 | |
1215 | |
1216 | class WindmillTestCase(TestCaseWithFactory): |
1217 | |
1218 | === modified file 'lib/lp/translations/scripts/translations_to_branch.py' |
1219 | --- lib/lp/translations/scripts/translations_to_branch.py 2010-01-10 04:29:39 +0000 |
1220 | +++ lib/lp/translations/scripts/translations_to_branch.py 2010-02-04 00:33:17 +0000 |
1221 | @@ -274,8 +274,8 @@ |
1222 | productseries = productseries.order_by(ProductSeries.id) |
1223 | |
1224 | bzrserver = get_multi_server(write_hosted=True) |
1225 | - bzrserver.setUp() |
1226 | + bzrserver.start_server() |
1227 | try: |
1228 | self._exportToBranches(productseries) |
1229 | finally: |
1230 | - bzrserver.tearDown() |
1231 | + bzrserver.stop_server() |
1232 | |
1233 | === modified file 'scripts/branch-distro.py' |
1234 | --- scripts/branch-distro.py 2009-10-23 16:15:35 +0000 |
1235 | +++ scripts/branch-distro.py 2010-02-04 00:33:17 +0000 |
1236 | @@ -26,7 +26,7 @@ |
1237 | brancher = DistroBrancher.fromNames(self.logger, *self.args) |
1238 | server = get_multi_server( |
1239 | write_mirrored=True, write_hosted=True, direct_database=True) |
1240 | - server.setUp() |
1241 | + server.start_server() |
1242 | try: |
1243 | if self.options.check: |
1244 | if not brancher.checkNewBranches(): |
1245 | @@ -34,7 +34,7 @@ |
1246 | else: |
1247 | brancher.makeNewBranches() |
1248 | finally: |
1249 | - server.tearDown() |
1250 | + server.stop_server() |
1251 | |
1252 | if __name__ == '__main__': |
1253 | BranchDistroScript("branch-distro", dbuser='branch-distro').run() |
1254 | |
1255 | === modified file 'scripts/update-stacked-on.py' |
1256 | --- scripts/update-stacked-on.py 2009-10-13 14:38:07 +0000 |
1257 | +++ scripts/update-stacked-on.py 2010-02-04 00:33:17 +0000 |
1258 | @@ -94,14 +94,14 @@ |
1259 | |
1260 | def main(self): |
1261 | server = get_server(self.options.dry_run) |
1262 | - server.setUp() |
1263 | + server.start_server() |
1264 | if self.options.dry_run: |
1265 | self.logger.debug('Running read-only') |
1266 | self.logger.debug('Beginning processing') |
1267 | try: |
1268 | self.updateBranches(self.parseFromStream(sys.stdin)) |
1269 | finally: |
1270 | - server.tearDown() |
1271 | + server.stop_server() |
1272 | self.logger.info('Done') |
1273 | |
1274 | def updateStackedOn(self, branch_id, bzr_branch_url, stacked_on_location): |
1275 | |
1276 | === modified file 'versions.cfg' |
1277 | --- versions.cfg 2010-02-03 22:43:51 +0000 |
1278 | +++ versions.cfg 2010-02-04 00:33:17 +0000 |
1279 | @@ -5,8 +5,8 @@ |
1280 | # Alphabetical, case-insensitive, please! :-) |
1281 | |
1282 | ampoule = 0.2.0 |
1283 | -# Non-released bzr version from bzr+ssh://bazaar.launchpad.net/~mwhudson/bzr/2.1.0b4-lp2 |
1284 | -bzr = 2.1b4-lp2 |
1285 | +# From lp:~mwhudson/bzr/bzr-2.1.0rc2-lp-1 ('make dist' from r4807) |
1286 | +bzr = 2.1.0rc2-lp-1 |
1287 | chameleon.core = 1.0b35 |
1288 | chameleon.zpt = 1.0b17 |
1289 | ClientForm = 0.2.10 |
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.