Merge lp:~stub/launchpad/librarian-layer into lp:launchpad
- librarian-layer
- Merge into devel
Proposed by
Stuart Bishop
Status: | Merged |
---|---|
Approved by: | Stuart Bishop |
Approved revision: | no longer in the source branch. |
Merged at revision: | 12232 |
Proposed branch: | lp:~stub/launchpad/librarian-layer |
Merge into: | lp:launchpad |
Prerequisite: | lp:~lifeless/launchpad/librarian |
Diff against target: |
1015 lines (+139/-136) 40 files modified
lib/canonical/config/fixture.py (+0/-1) lib/canonical/config/tests/test_fixture.py (+3/-6) lib/canonical/launchpad/doc/canonical-config.txt (+0/-8) lib/canonical/launchpad/doc/librarian.txt (+25/-18) lib/canonical/launchpad/doc/message.txt (+0/-2) lib/canonical/launchpad/doc/old-testing.txt (+2/-1) lib/canonical/launchpad/pagetests/webservice/xx-hostedfile.txt (+3/-3) lib/canonical/launchpad/scripts/ftests/librarianformatter.txt (+6/-6) lib/canonical/librarian/ftests/test_web.py (+9/-20) lib/canonical/librarian/testing/server.py (+17/-3) lib/canonical/librarian/testing/tests/test_server_fixture.py (+17/-6) lib/canonical/testing/ftests/test_layers.py (+2/-2) lib/canonical/testing/layers.py (+10/-7) lib/lp/bugs/browser/tests/test_bugattachment_file_access.py (+5/-5) lib/lp/bugs/stories/webservice/xx-bug.txt (+1/-1) lib/lp/code/stories/branches/xx-person-portlet-teambranches.txt (+1/-1) lib/lp/hardwaredb/stories/hwdb/02-view-submissions.txt (+3/-3) lib/lp/hardwaredb/stories/webservice/xx-hwdb.txt (+1/-1) lib/lp/registry/stories/product/xx-product-files.txt (+4/-4) lib/lp/registry/stories/webservice/xx-project-registry.txt (+2/-2) lib/lp/registry/tests/test_distroseriesdifference.py (+1/-2) lib/lp/soyuz/doc/distroarchseries.txt (+1/-1) lib/lp/soyuz/doc/soyuz-files.txt (+2/-2) lib/lp/soyuz/stories/ppa/xx-ppa-files.txt (+2/-2) lib/lp/soyuz/stories/soyuz/xx-distro-package-pages.txt (+1/-1) lib/lp/soyuz/stories/soyuz/xx-distroarchseries-binpackages.txt (+1/-1) lib/lp/soyuz/stories/soyuz/xx-distroseries-sources.txt (+1/-1) lib/lp/soyuz/stories/soyuz/xx-queue-pages-delayed-copies.txt (+1/-1) lib/lp/soyuz/stories/soyuz/xx-queue-pages.txt (+2/-2) lib/lp/soyuz/stories/webservice/xx-distroarchseries.txt (+1/-1) lib/lp/soyuz/tests/test_publishing_models.py (+4/-6) lib/lp/testing/__init__.py (+1/-6) lib/lp/translations/doc/poexport-queue.txt (+1/-1) lib/lp/translations/doc/poexport-request-productseries.txt (+1/-1) lib/lp/translations/doc/poexport-request.txt (+2/-2) lib/lp/translations/doc/poimport-pofile-not-exported-from-rosetta.txt (+1/-1) lib/lp/translations/doc/poimport-pofile-old-po-imported.txt (+1/-1) lib/lp/translations/doc/poimport-pofile-syntax-error.txt (+1/-1) lib/lp/translations/doc/poimport-potemplate-syntax-error.txt (+2/-2) lib/lp/translations/stories/standalone/xx-translations-xpi-import.txt (+1/-1) |
To merge this branch: | bzr merge lp:~stub/launchpad/librarian-layer |
Related bugs: |
Reviewer | Review Type | Date Requested | Status |
---|---|---|---|
Stuart Bishop (community) | Approve | ||
Review via email: mp+44466@code.launchpad.net |
Commit message
[r=stub][ui=none][bug=661009,692872] Numerous Librarian test infrastructure improvements.
Description of the change
Fixes required to get lp:~lifeless/launchpad/librarian landed
To post a comment you must log in.
Revision history for this message
Stuart Bishop (stub) wrote : | # |
Revision history for this message
Stuart Bishop (stub) wrote : | # |
lp:~stub/launchpadlib/dynamiclibrarian needs to land and new egg prepared to fix a launchpadlib test that relies on the Librarian running on port 58000.
Revision history for this message
Stuart Bishop (stub) : | # |
review:
Approve
Preview Diff
[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1 | === modified file 'lib/canonical/config/fixture.py' | |||
2 | --- lib/canonical/config/fixture.py 2010-10-30 19:22:58 +0000 | |||
3 | +++ lib/canonical/config/fixture.py 2011-01-19 13:41:53 +0000 | |||
4 | @@ -28,7 +28,6 @@ | |||
5 | 28 | _extend_str = dedent("""\ | 28 | _extend_str = dedent("""\ |
6 | 29 | [meta] | 29 | [meta] |
7 | 30 | extends: ../%s/launchpad-lazr.conf | 30 | extends: ../%s/launchpad-lazr.conf |
8 | 31 | |||
9 | 32 | """) | 31 | """) |
10 | 33 | 32 | ||
11 | 34 | def __init__(self, instance_name, copy_from_instance): | 33 | def __init__(self, instance_name, copy_from_instance): |
12 | 35 | 34 | ||
13 | === modified file 'lib/canonical/config/tests/test_fixture.py' | |||
14 | --- lib/canonical/config/tests/test_fixture.py 2010-10-19 19:23:19 +0000 | |||
15 | +++ lib/canonical/config/tests/test_fixture.py 2011-01-19 13:41:53 +0000 | |||
16 | @@ -50,11 +50,8 @@ | |||
17 | 50 | confpath = 'configs/testtestconfig/launchpad-lazr.conf' | 50 | confpath = 'configs/testtestconfig/launchpad-lazr.conf' |
18 | 51 | lazr_config = open(confpath, 'rb').read() | 51 | lazr_config = open(confpath, 'rb').read() |
19 | 52 | self.assertEqual( | 52 | self.assertEqual( |
26 | 53 | dedent("""\ | 53 | "[meta]\n" |
27 | 54 | [meta] | 54 | "extends: ../testrunner/launchpad-lazr.conf", |
28 | 55 | extends: ../testrunner/launchpad-lazr.conf | 55 | lazr_config.strip()) |
23 | 56 | |||
24 | 57 | """), | ||
25 | 58 | lazr_config) | ||
29 | 59 | finally: | 56 | finally: |
30 | 60 | fixture.cleanUp() | 57 | fixture.cleanUp() |
31 | 61 | 58 | ||
32 | === modified file 'lib/canonical/launchpad/doc/canonical-config.txt' | |||
33 | --- lib/canonical/launchpad/doc/canonical-config.txt 2010-11-27 21:42:32 +0000 | |||
34 | +++ lib/canonical/launchpad/doc/canonical-config.txt 2011-01-19 13:41:53 +0000 | |||
35 | @@ -24,14 +24,6 @@ | |||
36 | 24 | 'launchpad_main' | 24 | 'launchpad_main' |
37 | 25 | >>> config.librarian.dbuser | 25 | >>> config.librarian.dbuser |
38 | 26 | 'librarian' | 26 | 'librarian' |
39 | 27 | >>> config.librarian.upload_host | ||
40 | 28 | 'localhost' | ||
41 | 29 | >>> config.librarian.upload_port | ||
42 | 30 | 59090 | ||
43 | 31 | >>> config.librarian.download_host | ||
44 | 32 | 'localhost' | ||
45 | 33 | >>> config.librarian.download_port | ||
46 | 34 | 58000 | ||
47 | 35 | 27 | ||
48 | 36 | Configs are kept from the 'configs' directory. | 28 | Configs are kept from the 'configs' directory. |
49 | 37 | 29 | ||
50 | 38 | 30 | ||
51 | === modified file 'lib/canonical/launchpad/doc/librarian.txt' | |||
52 | --- lib/canonical/launchpad/doc/librarian.txt 2011-01-19 02:05:39 +0000 | |||
53 | +++ lib/canonical/launchpad/doc/librarian.txt 2011-01-19 13:41:53 +0000 | |||
54 | @@ -78,9 +78,11 @@ | |||
55 | 78 | 78 | ||
56 | 79 | We can get its URL too | 79 | We can get its URL too |
57 | 80 | 80 | ||
58 | 81 | >>> from canonical.config import config | ||
59 | 81 | >>> import re | 82 | >>> import re |
60 | 82 | >>> re.search( | 83 | >>> re.search( |
62 | 83 | ... r'^http://localhost:58000/\d+/text.txt$', alias.http_url | 84 | ... r'^%s\d+/text.txt$' % config.librarian.download_url, |
63 | 85 | ... alias.http_url | ||
64 | 84 | ... ) is not None | 86 | ... ) is not None |
65 | 85 | True | 87 | True |
66 | 86 | 88 | ||
67 | @@ -88,19 +90,17 @@ | |||
68 | 88 | and similar inline-presented objects which would trigger security warnings on | 90 | and similar inline-presented objects which would trigger security warnings on |
69 | 89 | https pages otherwise. | 91 | https pages otherwise. |
70 | 90 | 92 | ||
74 | 91 | >>> re.search( | 93 | >>> re.search(r'^https://.+/\d+/text.txt$', alias.https_url) is not None |
72 | 92 | ... r'^https://localhost:58000/\d+/text.txt$', alias.https_url | ||
73 | 93 | ... ) is not None | ||
75 | 94 | True | 94 | True |
76 | 95 | 95 | ||
77 | 96 | And we even have a convenient method which returns either the http URL or the | 96 | And we even have a convenient method which returns either the http URL or the |
78 | 97 | https one, depending on a config value. | 97 | https one, depending on a config value. |
79 | 98 | 98 | ||
80 | 99 | >>> from canonical.config import config | ||
81 | 100 | >>> config.vhosts.use_https | 99 | >>> config.vhosts.use_https |
82 | 101 | False | 100 | False |
83 | 102 | >>> re.search( | 101 | >>> re.search( |
85 | 103 | ... r'^http://localhost:58000/\d+/text.txt$', alias.getURL() | 102 | ... r'^%s\d+/text.txt$' % config.librarian.download_url, |
86 | 103 | ... alias.getURL() | ||
87 | 104 | ... ) is not None | 104 | ... ) is not None |
88 | 105 | True | 105 | True |
89 | 106 | 106 | ||
90 | @@ -111,7 +111,7 @@ | |||
91 | 111 | ... """) | 111 | ... """) |
92 | 112 | >>> config.push('test', test_data) | 112 | >>> config.push('test', test_data) |
93 | 113 | >>> re.search( | 113 | >>> re.search( |
95 | 114 | ... r'^https://localhost:58000/\d+/text.txt$', alias.https_url | 114 | ... r'^https://.+/\d+/text.txt$', alias.https_url |
96 | 115 | ... ) is not None | 115 | ... ) is not None |
97 | 116 | True | 116 | True |
98 | 117 | 117 | ||
99 | @@ -208,15 +208,17 @@ | |||
100 | 208 | >>> f.read() | 208 | >>> f.read() |
101 | 209 | 'This is some data' | 209 | 'This is some data' |
102 | 210 | >>> url = client.getURLForAlias(aid) | 210 | >>> url = client.getURLForAlias(aid) |
104 | 211 | >>> re.search(r'^http://localhost:58000/\d+/text.txt$', url) is not None | 211 | >>> re.search( |
105 | 212 | ... r'^%s\d+/text.txt$' % config.librarian.download_url, url | ||
106 | 213 | ... ) is not None | ||
107 | 212 | True | 214 | True |
108 | 213 | 215 | ||
109 | 214 | When secure=True, the returned url has the id as part of the domain name and | 216 | When secure=True, the returned url has the id as part of the domain name and |
110 | 215 | the protocol is https: | 217 | the protocol is https: |
111 | 216 | 218 | ||
115 | 217 | >>> expected = 'https://i%d.restricted.localhost:58000/%d/text.txt' % ( | 219 | >>> expected = r'^https://i%d\..+:\d+/%d/text.txt$' % (aid, aid) |
116 | 218 | ... aid, aid) | 220 | >>> found = client.getURLForAlias(aid, secure=True) |
117 | 219 | >>> expected == client.getURLForAlias(aid, secure=True) | 221 | >>> re.search(expected, found) is not None |
118 | 220 | True | 222 | True |
119 | 221 | 223 | ||
120 | 222 | 224 | ||
121 | @@ -250,7 +252,7 @@ | |||
122 | 250 | ... 'text.txt', len(data), StringIO(data), 'text/plain' | 252 | ... 'text.txt', len(data), StringIO(data), 'text/plain' |
123 | 251 | ... ) | 253 | ... ) |
124 | 252 | >>> print url | 254 | >>> print url |
126 | 253 | http://localhost:58000/.../text.txt | 255 | http://.../text.txt |
127 | 254 | >>> from urllib2 import urlopen | 256 | >>> from urllib2 import urlopen |
128 | 255 | >>> urlopen(url).read() | 257 | >>> urlopen(url).read() |
129 | 256 | 'This is some data' | 258 | 'This is some data' |
130 | @@ -277,7 +279,7 @@ | |||
131 | 277 | client can't see the database records yet). | 279 | client can't see the database records yet). |
132 | 278 | 280 | ||
133 | 279 | >>> import re | 281 | >>> import re |
135 | 280 | >>> match = re.search('^http://localhost:\d+/(\d+)/', url) | 282 | >>> match = re.search('/(\d+)/', url) |
136 | 281 | >>> alias_id = int(match.group(1)) | 283 | >>> alias_id = int(match.group(1)) |
137 | 282 | >>> alias = lfas[alias_id] | 284 | >>> alias = lfas[alias_id] |
138 | 283 | >>> print alias.expires.isoformat() | 285 | >>> print alias.expires.isoformat() |
139 | @@ -311,7 +313,10 @@ | |||
140 | 311 | True | 313 | True |
141 | 312 | 314 | ||
142 | 313 | >>> print file_alias.http_url | 315 | >>> print file_alias.http_url |
144 | 314 | http://localhost:58005/.../private.txt | 316 | http://.../private.txt |
145 | 317 | >>> file_alias.http_url.startswith( | ||
146 | 318 | ... config.librarian.restricted_download_url) | ||
147 | 319 | True | ||
148 | 315 | 320 | ||
149 | 316 | >>> transaction.commit() | 321 | >>> transaction.commit() |
150 | 317 | >>> file_alias.open() | 322 | >>> file_alias.open() |
151 | @@ -339,7 +344,7 @@ | |||
152 | 339 | 344 | ||
153 | 340 | >>> file_url = restricted_client.getURLForAlias(private_file_id) | 345 | >>> file_url = restricted_client.getURLForAlias(private_file_id) |
154 | 341 | >>> print file_url | 346 | >>> print file_url |
156 | 342 | http://localhost:58005/.../private.txt | 347 | http://.../private.txt |
157 | 343 | 348 | ||
158 | 344 | Trying to access that file directly on the normal librarian will fail | 349 | Trying to access that file directly on the normal librarian will fail |
159 | 345 | (by switching the port) | 350 | (by switching the port) |
160 | @@ -386,7 +391,9 @@ | |||
161 | 386 | ... 'another-private.txt', len(private_content), | 391 | ... 'another-private.txt', len(private_content), |
162 | 387 | ... StringIO(private_content), 'text/plain') | 392 | ... StringIO(private_content), 'text/plain') |
163 | 388 | >>> print url | 393 | >>> print url |
165 | 389 | http://localhost:58005/.../another-private.txt | 394 | http://.../another-private.txt |
166 | 395 | >>> url.startswith(config.librarian.restricted_download_url) | ||
167 | 396 | True | ||
168 | 390 | 397 | ||
169 | 391 | The file can then immediately be retrieved: | 398 | The file can then immediately be retrieved: |
170 | 392 | 399 | ||
171 | @@ -459,7 +466,7 @@ | |||
172 | 459 | >>> f.read() | 466 | >>> f.read() |
173 | 460 | 'This is some data' | 467 | 'This is some data' |
174 | 461 | >>> url = client.getURLForAlias(aid) | 468 | >>> url = client.getURLForAlias(aid) |
176 | 462 | >>> re.search(r'^http://localhost:58000/\d+/hot%20dog$', url) is not None | 469 | >>> re.search(r'/\d+/hot%20dog$', url) is not None |
177 | 463 | True | 470 | True |
178 | 464 | 471 | ||
179 | 465 | Unicode file names work. Note that the filename in the resulting URL | 472 | Unicode file names work. Note that the filename in the resulting URL |
180 | @@ -472,7 +479,7 @@ | |||
181 | 472 | >>> f.read() | 479 | >>> f.read() |
182 | 473 | 'This is some data' | 480 | 'This is some data' |
183 | 474 | >>> url = client.getURLForAlias(aid) | 481 | >>> url = client.getURLForAlias(aid) |
185 | 475 | >>> re.search(r'^http://localhost:58000/\d+/Yow%E2%80%BD$', url) is not None | 482 | >>> re.search(r'/\d+/Yow%E2%80%BD$', url) is not None |
186 | 476 | True | 483 | True |
187 | 477 | 484 | ||
188 | 478 | Files will get garbage collected on production systems as per | 485 | Files will get garbage collected on production systems as per |
189 | 479 | 486 | ||
190 | === modified file 'lib/canonical/launchpad/doc/message.txt' | |||
191 | --- lib/canonical/launchpad/doc/message.txt 2010-10-18 22:24:59 +0000 | |||
192 | +++ lib/canonical/launchpad/doc/message.txt 2011-01-19 13:41:53 +0000 | |||
193 | @@ -175,8 +175,6 @@ | |||
194 | 175 | >>> blob = chunks[1].blob | 175 | >>> blob = chunks[1].blob |
195 | 176 | >>> blob.filename | 176 | >>> blob.filename |
196 | 177 | u'anna.jpg.exe' | 177 | u'anna.jpg.exe' |
197 | 178 | >>> blob.http_url.startswith(u'http://localhost:58000/') | ||
198 | 179 | True | ||
199 | 180 | >>> blob.http_url.endswith(u'/anna.jpg.exe') | 178 | >>> blob.http_url.endswith(u'/anna.jpg.exe') |
200 | 181 | True | 179 | True |
201 | 182 | 180 | ||
202 | 183 | 181 | ||
203 | === modified file 'lib/canonical/launchpad/doc/old-testing.txt' | |||
204 | --- lib/canonical/launchpad/doc/old-testing.txt 2011-01-19 13:41:25 +0000 | |||
205 | +++ lib/canonical/launchpad/doc/old-testing.txt 2011-01-19 13:41:53 +0000 | |||
206 | @@ -153,7 +153,8 @@ | |||
207 | 153 | >>> from canonical.librarian.interfaces import ILibrarianClient | 153 | >>> from canonical.librarian.interfaces import ILibrarianClient |
208 | 154 | >>> from StringIO import StringIO | 154 | >>> from StringIO import StringIO |
209 | 155 | 155 | ||
211 | 156 | >>> librarian = LibrarianServerFixture() | 156 | >>> from canonical.testing.layers import BaseLayer |
212 | 157 | >>> librarian = LibrarianServerFixture(BaseLayer.config_fixture) | ||
213 | 157 | >>> librarian.setUp() | 158 | >>> librarian.setUp() |
214 | 158 | >>> login(ANONYMOUS) | 159 | >>> login(ANONYMOUS) |
215 | 159 | 160 | ||
216 | 160 | 161 | ||
217 | === modified file 'lib/canonical/launchpad/pagetests/webservice/xx-hostedfile.txt' | |||
218 | --- lib/canonical/launchpad/pagetests/webservice/xx-hostedfile.txt 2009-04-17 10:32:16 +0000 | |||
219 | +++ lib/canonical/launchpad/pagetests/webservice/xx-hostedfile.txt 2011-01-19 13:41:53 +0000 | |||
220 | @@ -57,21 +57,21 @@ | |||
221 | 57 | >>> print result | 57 | >>> print result |
222 | 58 | HTTP/1.1 303 See Other | 58 | HTTP/1.1 303 See Other |
223 | 59 | ... | 59 | ... |
225 | 60 | Location: http://localhost:58000/.../icon | 60 | Location: http://.../icon |
226 | 61 | ... | 61 | ... |
227 | 62 | 62 | ||
228 | 63 | >>> result = webservice.get(project['logo_link']) | 63 | >>> result = webservice.get(project['logo_link']) |
229 | 64 | >>> print result | 64 | >>> print result |
230 | 65 | HTTP/1.1 303 See Other | 65 | HTTP/1.1 303 See Other |
231 | 66 | ... | 66 | ... |
233 | 67 | Location: http://localhost:58000/.../logo | 67 | Location: http://.../logo |
234 | 68 | ... | 68 | ... |
235 | 69 | 69 | ||
236 | 70 | >>> result = webservice.get(project['brand_link']) | 70 | >>> result = webservice.get(project['brand_link']) |
237 | 71 | >>> print result | 71 | >>> print result |
238 | 72 | HTTP/1.1 303 See Other | 72 | HTTP/1.1 303 See Other |
239 | 73 | ... | 73 | ... |
241 | 74 | Location: http://localhost:58000/.../brand | 74 | Location: http://.../brand |
242 | 75 | ... | 75 | ... |
243 | 76 | 76 | ||
244 | 77 | 77 | ||
245 | 78 | 78 | ||
246 | === modified file 'lib/canonical/launchpad/scripts/ftests/librarianformatter.txt' | |||
247 | --- lib/canonical/launchpad/scripts/ftests/librarianformatter.txt 2010-11-06 12:50:22 +0000 | |||
248 | +++ lib/canonical/launchpad/scripts/ftests/librarianformatter.txt 2011-01-19 13:41:53 +0000 | |||
249 | @@ -72,10 +72,10 @@ | |||
250 | 72 | >>> librarian_log.error('Oops', exc_info=exception) | 72 | >>> librarian_log.error('Oops', exc_info=exception) |
251 | 73 | >>> print librarian_out.getvalue() | 73 | >>> print librarian_out.getvalue() |
252 | 74 | ERROR Oops | 74 | ERROR Oops |
254 | 75 | -> http://localhost:58000/...txt (An Exception) | 75 | -> http://.../....txt (An Exception) |
255 | 76 | >>> url = librarian_out.getvalue().splitlines()[-1].split()[1:2][0] | 76 | >>> url = librarian_out.getvalue().splitlines()[-1].split()[1:2][0] |
256 | 77 | >>> print url | 77 | >>> print url |
258 | 78 | http://localhost:58000/...txt | 78 | http://.../....txt |
259 | 79 | >>> print urlopen(url).read() | 79 | >>> print urlopen(url).read() |
260 | 80 | Traceback (most recent call last): | 80 | Traceback (most recent call last): |
261 | 81 | ... | 81 | ... |
262 | @@ -116,9 +116,9 @@ | |||
263 | 116 | ... librarian_log.exception('Dud2') | 116 | ... librarian_log.exception('Dud2') |
264 | 117 | >>> print librarian_out.getvalue() | 117 | >>> print librarian_out.getvalue() |
265 | 118 | ERROR Dud1 | 118 | ERROR Dud1 |
267 | 119 | -> http://localhost:58000/...txt (Dud) | 119 | -> http://.../....txt (Dud) |
268 | 120 | ERROR Dud2 | 120 | ERROR Dud2 |
270 | 121 | -> http://localhost:58000/...txt (Dud) | 121 | -> http://.../....txt (Dud) |
271 | 122 | <BLANKLINE> | 122 | <BLANKLINE> |
272 | 123 | 123 | ||
273 | 124 | The end result of this is to not have scripts display exceptions to | 124 | The end result of this is to not have scripts display exceptions to |
274 | @@ -134,8 +134,8 @@ | |||
275 | 134 | >>> print out | 134 | >>> print out |
276 | 135 | Script Output | 135 | Script Output |
277 | 136 | ERROR Oops | 136 | ERROR Oops |
279 | 137 | -> http://localhost:58000/...txt (Aargh) | 137 | -> http://.../....txt (Aargh) |
280 | 138 | ERROR Root oops | 138 | ERROR Root oops |
282 | 139 | -> http://localhost:58000/...txt (Aargh) | 139 | -> http://.../....txt (Aargh) |
283 | 140 | 140 | ||
284 | 141 | 141 | ||
285 | 142 | 142 | ||
286 | === modified file 'lib/canonical/librarian/ftests/test_web.py' | |||
287 | --- lib/canonical/librarian/ftests/test_web.py 2010-11-06 12:50:22 +0000 | |||
288 | +++ lib/canonical/librarian/ftests/test_web.py 2011-01-19 13:41:53 +0000 | |||
289 | @@ -149,23 +149,12 @@ | |||
290 | 149 | url = client.getURLForAlias(aid) | 149 | url = client.getURLForAlias(aid) |
291 | 150 | self.assertEqual(urlopen(url).read(), 'sample') | 150 | self.assertEqual(urlopen(url).read(), 'sample') |
292 | 151 | 151 | ||
297 | 152 | old_url = 'http://%s:%d/42/%d/%s' % ( | 152 | old_url = url.replace(str(aid), '42/%d' % aid) |
294 | 153 | config.librarian.download_host, | ||
295 | 154 | config.librarian.download_port, | ||
296 | 155 | aid, filename) | ||
298 | 156 | self.assertEqual(urlopen(old_url).read(), 'sample') | 153 | self.assertEqual(urlopen(old_url).read(), 'sample') |
299 | 157 | 154 | ||
300 | 158 | # If the content id is not an integer, a 404 is raised | 155 | # If the content id is not an integer, a 404 is raised |
311 | 159 | old_url = 'http://%s:%d/foo/%d/%s' % ( | 156 | old_url = url.replace(str(aid), 'foo/%d' % aid) |
312 | 160 | config.librarian.download_host, | 157 | self.require404(old_url) |
303 | 161 | config.librarian.download_port, | ||
304 | 162 | aid, filename) | ||
305 | 163 | self.require404(self._makeURL(aid, 'different.txt')) | ||
306 | 164 | |||
307 | 165 | def _makeURL(self, aliasID, filename): | ||
308 | 166 | host = config.librarian.download_host | ||
309 | 167 | port = config.librarian.download_port | ||
310 | 168 | return 'http://%s:%d/%d/%s' % (host, port, aliasID, filename) | ||
313 | 169 | 158 | ||
314 | 170 | def test_404(self): | 159 | def test_404(self): |
315 | 171 | client = LibrarianClient() | 160 | client = LibrarianClient() |
316 | @@ -175,13 +164,13 @@ | |||
317 | 175 | url = client.getURLForAlias(aid) | 164 | url = client.getURLForAlias(aid) |
318 | 176 | self.assertEqual(urlopen(url).read(), 'sample') | 165 | self.assertEqual(urlopen(url).read(), 'sample') |
319 | 177 | 166 | ||
320 | 178 | # Ensure our helper is working | ||
321 | 179 | self.failUnlessEqual(url, self._makeURL(aid, filename)) | ||
322 | 180 | |||
323 | 181 | # Change the aliasid and assert we get a 404 | 167 | # Change the aliasid and assert we get a 404 |
325 | 182 | self.require404(self._makeURL(aid+1, filename)) | 168 | self.failUnless(str(aid) in url) |
326 | 169 | self.require404(url.replace(str(aid), str(aid+1))) | ||
327 | 170 | |||
328 | 183 | # Change the filename and assert we get a 404 | 171 | # Change the filename and assert we get a 404 |
330 | 184 | self.require404(self._makeURL(aid, 'different.txt')) | 172 | self.failUnless(str(filename) in url) |
331 | 173 | self.require404(url.replace(filename, 'different.txt')) | ||
332 | 185 | 174 | ||
333 | 186 | def test_duplicateuploads(self): | 175 | def test_duplicateuploads(self): |
334 | 187 | client = LibrarianClient() | 176 | client = LibrarianClient() |
335 | @@ -284,7 +273,7 @@ | |||
336 | 284 | connection.request("GET", path, headers={'Host': good_host}) | 273 | connection.request("GET", path, headers={'Host': good_host}) |
337 | 285 | response = connection.getresponse() | 274 | response = connection.getresponse() |
338 | 286 | response.read() | 275 | response.read() |
340 | 287 | self.assertEqual(200, response.status) | 276 | self.assertEqual(200, response.status, response) |
341 | 288 | # A subdomain based URL trying to put fileAlias into the restricted | 277 | # A subdomain based URL trying to put fileAlias into the restricted |
342 | 289 | # domain of fileAlias2 must not work. | 278 | # domain of fileAlias2 must not work. |
343 | 290 | hostile_host = template_host % fileAlias2 | 279 | hostile_host = template_host % fileAlias2 |
344 | 291 | 280 | ||
345 | === modified file 'lib/canonical/librarian/testing/server.py' | |||
346 | --- lib/canonical/librarian/testing/server.py 2011-01-19 13:41:25 +0000 | |||
347 | +++ lib/canonical/librarian/testing/server.py 2011-01-19 13:41:53 +0000 | |||
348 | @@ -44,11 +44,18 @@ | |||
349 | 44 | :ivar pid: pid of the external process. | 44 | :ivar pid: pid of the external process. |
350 | 45 | """ | 45 | """ |
351 | 46 | 46 | ||
353 | 47 | def __init__(self): | 47 | def __init__(self, config_fixture): |
354 | 48 | """Initialize the LibrarianServerFixture. | ||
355 | 49 | |||
356 | 50 | :param config_fixture: The ConfigFixture in use by our tests. | ||
357 | 51 | In the layered environment, this is | ||
358 | 52 | BaseLayer.config_fixture. | ||
359 | 53 | """ | ||
360 | 48 | Fixture.__init__(self) | 54 | Fixture.__init__(self) |
361 | 49 | self._pid = None | 55 | self._pid = None |
362 | 50 | # Track whether the fixture has been setup or not. | 56 | # Track whether the fixture has been setup or not. |
363 | 51 | self._setup = False | 57 | self._setup = False |
364 | 58 | self.config_fixture = config_fixture | ||
365 | 52 | 59 | ||
366 | 53 | def setUp(self): | 60 | def setUp(self): |
367 | 54 | """Start both librarian instances.""" | 61 | """Start both librarian instances.""" |
368 | @@ -69,6 +76,11 @@ | |||
369 | 69 | self._setup = True | 76 | self._setup = True |
370 | 70 | self.addCleanup(setattr, self, '_setup', False) | 77 | self.addCleanup(setattr, self, '_setup', False) |
371 | 71 | 78 | ||
372 | 79 | # Update the config our tests are using to know about the | ||
373 | 80 | # correct ports. | ||
374 | 81 | self.config_fixture.add_section(self.service_config) | ||
375 | 82 | config.reloadConfig() | ||
376 | 83 | |||
377 | 72 | def cleanUp(self): | 84 | def cleanUp(self): |
378 | 73 | """Shut downs both librarian instances.""" | 85 | """Shut downs both librarian instances.""" |
379 | 74 | if self._persistent_servers(): | 86 | if self._persistent_servers(): |
380 | @@ -164,17 +176,19 @@ | |||
381 | 164 | [librarian] | 176 | [librarian] |
382 | 165 | download_port: %s | 177 | download_port: %s |
383 | 166 | upload_port: %s | 178 | upload_port: %s |
385 | 167 | download_url: http://launchpad.dev:%s/ | 179 | download_url: http://%s:%s/ |
386 | 168 | restricted_download_port: %s | 180 | restricted_download_port: %s |
387 | 169 | restricted_upload_port: %s | 181 | restricted_upload_port: %s |
389 | 170 | restricted_download_url: http://launchpad_dev:%s/ | 182 | restricted_download_url: http://%s:%s/ |
390 | 171 | """) % ( | 183 | """) % ( |
391 | 172 | self.root, | 184 | self.root, |
392 | 173 | self.download_port, | 185 | self.download_port, |
393 | 174 | self.upload_port, | 186 | self.upload_port, |
394 | 187 | config.librarian.download_host, | ||
395 | 175 | self.download_port, | 188 | self.download_port, |
396 | 176 | self.restricted_download_port, | 189 | self.restricted_download_port, |
397 | 177 | self.restricted_upload_port, | 190 | self.restricted_upload_port, |
398 | 191 | config.librarian.restricted_download_host, | ||
399 | 178 | self.restricted_download_port, | 192 | self.restricted_download_port, |
400 | 179 | ) | 193 | ) |
401 | 180 | 194 | ||
402 | 181 | 195 | ||
403 | === modified file 'lib/canonical/librarian/testing/tests/test_server_fixture.py' | |||
404 | --- lib/canonical/librarian/testing/tests/test_server_fixture.py 2011-01-19 13:41:25 +0000 | |||
405 | +++ lib/canonical/librarian/testing/tests/test_server_fixture.py 2011-01-19 13:41:53 +0000 | |||
406 | @@ -16,6 +16,7 @@ | |||
407 | 16 | from testtools.content_type import UTF8_TEXT | 16 | from testtools.content_type import UTF8_TEXT |
408 | 17 | 17 | ||
409 | 18 | from canonical.config import config | 18 | from canonical.config import config |
410 | 19 | from canonical.config.fixture import ConfigFixture | ||
411 | 19 | from canonical.librarian.testing.server import LibrarianServerFixture | 20 | from canonical.librarian.testing.server import LibrarianServerFixture |
412 | 20 | from canonical.testing.ftests.test_layers import ( | 21 | from canonical.testing.ftests.test_layers import ( |
413 | 21 | BaseLayerIsolator, | 22 | BaseLayerIsolator, |
414 | @@ -34,12 +35,20 @@ | |||
415 | 34 | self.skip('persistent server running.') | 35 | self.skip('persistent server running.') |
416 | 35 | 36 | ||
417 | 36 | def test_on_init_no_pid(self): | 37 | def test_on_init_no_pid(self): |
419 | 37 | fixture = LibrarianServerFixture() | 38 | fixture = LibrarianServerFixture(BaseLayer.config_fixture) |
420 | 38 | self.skip_if_persistent(fixture) | 39 | self.skip_if_persistent(fixture) |
421 | 39 | self.assertEqual(None, fixture.pid) | 40 | self.assertEqual(None, fixture.pid) |
422 | 40 | 41 | ||
423 | 41 | def test_setUp_allocates_resources(self): | 42 | def test_setUp_allocates_resources(self): |
425 | 42 | fixture = LibrarianServerFixture() | 43 | # We need a new ConfigFixture, and create a |
426 | 44 | # LibrarianServerFixture using it. We can then confirm that new | ||
427 | 45 | # resources have been allocated by comparing with the currently | ||
428 | 46 | # in use ConfigFixture and config. | ||
429 | 47 | config_fixture = ConfigFixture( | ||
430 | 48 | 'foo', BaseLayer.config_fixture.instance_name) | ||
431 | 49 | self.addCleanup(config_fixture.cleanUp) | ||
432 | 50 | config_fixture.setUp() | ||
433 | 51 | fixture = LibrarianServerFixture(config_fixture) | ||
434 | 43 | self.skip_if_persistent(fixture) | 52 | self.skip_if_persistent(fixture) |
435 | 44 | with fixture: | 53 | with fixture: |
436 | 45 | try: | 54 | try: |
437 | @@ -63,17 +72,19 @@ | |||
438 | 63 | [librarian] | 72 | [librarian] |
439 | 64 | download_port: %s | 73 | download_port: %s |
440 | 65 | upload_port: %s | 74 | upload_port: %s |
442 | 66 | download_url: http://launchpad.dev:%s/ | 75 | download_url: http://%s:%s/ |
443 | 67 | restricted_download_port: %s | 76 | restricted_download_port: %s |
444 | 68 | restricted_upload_port: %s | 77 | restricted_upload_port: %s |
446 | 69 | restricted_download_url: http://launchpad_dev:%s/ | 78 | restricted_download_url: http://%s:%s/ |
447 | 70 | """) % ( | 79 | """) % ( |
448 | 71 | fixture.root, | 80 | fixture.root, |
449 | 72 | fixture.download_port, | 81 | fixture.download_port, |
450 | 73 | fixture.upload_port, | 82 | fixture.upload_port, |
451 | 83 | config.librarian.download_host, | ||
452 | 74 | fixture.download_port, | 84 | fixture.download_port, |
453 | 75 | fixture.restricted_download_port, | 85 | fixture.restricted_download_port, |
454 | 76 | fixture.restricted_upload_port, | 86 | fixture.restricted_upload_port, |
455 | 87 | config.librarian.restricted_download_host, | ||
456 | 77 | fixture.restricted_download_port, | 88 | fixture.restricted_download_port, |
457 | 78 | ) | 89 | ) |
458 | 79 | self.assertEqual(expected_config, fixture.service_config) | 90 | self.assertEqual(expected_config, fixture.service_config) |
459 | @@ -82,7 +93,7 @@ | |||
460 | 82 | raise | 93 | raise |
461 | 83 | 94 | ||
462 | 84 | def test_getLogChunks(self): | 95 | def test_getLogChunks(self): |
464 | 85 | fixture = LibrarianServerFixture() | 96 | fixture = LibrarianServerFixture(BaseLayer.config_fixture) |
465 | 86 | with fixture: | 97 | with fixture: |
466 | 87 | chunks = fixture.getLogChunks() | 98 | chunks = fixture.getLogChunks() |
467 | 88 | self.assertIsInstance(chunks, list) | 99 | self.assertIsInstance(chunks, list) |
468 | @@ -96,7 +107,7 @@ | |||
469 | 96 | # Avoid indefinite hangs: | 107 | # Avoid indefinite hangs: |
470 | 97 | self.addCleanup(socket.setdefaulttimeout, socket.getdefaulttimeout()) | 108 | self.addCleanup(socket.setdefaulttimeout, socket.getdefaulttimeout()) |
471 | 98 | socket.setdefaulttimeout(1) | 109 | socket.setdefaulttimeout(1) |
473 | 99 | fixture = LibrarianServerFixture() | 110 | fixture = LibrarianServerFixture(BaseLayer.config_fixture) |
474 | 100 | with fixture: | 111 | with fixture: |
475 | 101 | librarian_url = "http://%s:%d" % ( | 112 | librarian_url = "http://%s:%d" % ( |
476 | 102 | config.librarian.download_host, | 113 | config.librarian.download_host, |
477 | 103 | 114 | ||
478 | === modified file 'lib/canonical/testing/ftests/test_layers.py' | |||
479 | --- lib/canonical/testing/ftests/test_layers.py 2011-01-19 13:41:25 +0000 | |||
480 | +++ lib/canonical/testing/ftests/test_layers.py 2011-01-19 13:41:53 +0000 | |||
481 | @@ -55,7 +55,7 @@ | |||
482 | 55 | 55 | ||
483 | 56 | class BaseLayerIsolator(Fixture): | 56 | class BaseLayerIsolator(Fixture): |
484 | 57 | """A fixture for isolating BaseLayer. | 57 | """A fixture for isolating BaseLayer. |
486 | 58 | 58 | ||
487 | 59 | This is useful to test interactions with LP_PERSISTENT_TEST_SERVICES | 59 | This is useful to test interactions with LP_PERSISTENT_TEST_SERVICES |
488 | 60 | which makes tests within layers unable to test that easily. | 60 | which makes tests within layers unable to test that easily. |
489 | 61 | """ | 61 | """ |
490 | @@ -113,7 +113,7 @@ | |||
491 | 113 | self.assertEqual(None, os.environ.get('LP_TEST_INSTANCE')) | 113 | self.assertEqual(None, os.environ.get('LP_TEST_INSTANCE')) |
492 | 114 | 114 | ||
493 | 115 | def test_persist_test_services_disables_LP_TEST_INSTANCE(self): | 115 | def test_persist_test_services_disables_LP_TEST_INSTANCE(self): |
495 | 116 | self.useFixture(BaseLayerIsolator()) | 116 | self.useFixture(BaseLayerIsolator(with_persistent=True)) |
496 | 117 | with LayerFixture(BaseLayer): | 117 | with LayerFixture(BaseLayer): |
497 | 118 | self.assertEqual(None, os.environ.get('LP_TEST_INSTANCE')) | 118 | self.assertEqual(None, os.environ.get('LP_TEST_INSTANCE')) |
498 | 119 | self.assertEqual(None, os.environ.get('LP_TEST_INSTANCE')) | 119 | self.assertEqual(None, os.environ.get('LP_TEST_INSTANCE')) |
499 | 120 | 120 | ||
500 | === modified file 'lib/canonical/testing/layers.py' | |||
501 | --- lib/canonical/testing/layers.py 2011-01-19 13:41:25 +0000 | |||
502 | +++ lib/canonical/testing/layers.py 2011-01-19 13:41:53 +0000 | |||
503 | @@ -820,12 +820,16 @@ | |||
504 | 820 | "_reset_between_tests changed before LibrarianLayer " | 820 | "_reset_between_tests changed before LibrarianLayer " |
505 | 821 | "was actually used." | 821 | "was actually used." |
506 | 822 | ) | 822 | ) |
508 | 823 | cls.librarian_fixture = LibrarianServerFixture() | 823 | cls.librarian_fixture = LibrarianServerFixture( |
509 | 824 | BaseLayer.config_fixture) | ||
510 | 824 | cls.librarian_fixture.setUp() | 825 | cls.librarian_fixture.setUp() |
511 | 825 | BaseLayer.config.add_section(cls.librarian_fixture.service_config) | ||
512 | 826 | config.reloadConfig() | ||
513 | 827 | cls._check_and_reset() | 826 | cls._check_and_reset() |
514 | 828 | 827 | ||
515 | 828 | # Make sure things using the appserver config know the | ||
516 | 829 | # correct Librarian port numbers. | ||
517 | 830 | cls.appserver_config_fixture.add_section( | ||
518 | 831 | cls.librarian_fixture.service_config) | ||
519 | 832 | |||
520 | 829 | @classmethod | 833 | @classmethod |
521 | 830 | @profiled | 834 | @profiled |
522 | 831 | def tearDown(cls): | 835 | def tearDown(cls): |
523 | @@ -841,9 +845,8 @@ | |||
524 | 841 | try: | 845 | try: |
525 | 842 | if not cls._reset_between_tests: | 846 | if not cls._reset_between_tests: |
526 | 843 | raise LayerInvariantError( | 847 | raise LayerInvariantError( |
530 | 844 | "_reset_between_tests not reset before LibrarianLayer " | 848 | "_reset_between_tests not reset before " |
531 | 845 | "shutdown" | 849 | "LibrarianLayer shutdown") |
529 | 846 | ) | ||
532 | 847 | finally: | 850 | finally: |
533 | 848 | librarian.cleanUp() | 851 | librarian.cleanUp() |
534 | 849 | 852 | ||
535 | @@ -947,7 +950,7 @@ | |||
536 | 947 | @profiled | 950 | @profiled |
537 | 948 | def tearDown(cls): | 951 | def tearDown(cls): |
538 | 949 | pass | 952 | pass |
540 | 950 | 953 | ||
541 | 951 | @classmethod | 954 | @classmethod |
542 | 952 | @profiled | 955 | @profiled |
543 | 953 | def testSetUp(cls): | 956 | def testSetUp(cls): |
544 | 954 | 957 | ||
545 | === modified file 'lib/lp/bugs/browser/tests/test_bugattachment_file_access.py' | |||
546 | --- lib/lp/bugs/browser/tests/test_bugattachment_file_access.py 2011-01-06 11:49:00 +0000 | |||
547 | +++ lib/lp/bugs/browser/tests/test_bugattachment_file_access.py 2011-01-19 13:41:53 +0000 | |||
548 | @@ -88,7 +88,7 @@ | |||
549 | 88 | next_view, traversal_path = view.browserDefault(request) | 88 | next_view, traversal_path = view.browserDefault(request) |
550 | 89 | self.assertIsInstance(next_view, RedirectionView) | 89 | self.assertIsInstance(next_view, RedirectionView) |
551 | 90 | mo = re.match( | 90 | mo = re.match( |
553 | 91 | '^http://localhost:58000/\d+/foo.txt$', next_view.target) | 91 | '^http://.*/\d+/foo.txt$', next_view.target) |
554 | 92 | self.assertIsNot(None, mo) | 92 | self.assertIsNot(None, mo) |
555 | 93 | 93 | ||
556 | 94 | def test_access_to_restricted_file(self): | 94 | def test_access_to_restricted_file(self): |
557 | @@ -213,13 +213,13 @@ | |||
558 | 213 | self.assertEqual(303, response.status) | 213 | self.assertEqual(303, response.status) |
559 | 214 | 214 | ||
560 | 215 | # The Librarian URL has, for our test case, the form | 215 | # The Librarian URL has, for our test case, the form |
563 | 216 | # "https://NNNN.restricted.localhost:58000/NNNN/foo.txt?token=..." | 216 | # "https://NNNN.restricted.launchpad.dev:PORT/NNNN/foo.txt?token=..." |
564 | 217 | # where NNNN is an integer. | 217 | # where NNNN and PORT are integers. |
565 | 218 | parsed_url = urlparse(response.getHeader('location')) | 218 | parsed_url = urlparse(response.getHeader('location')) |
566 | 219 | self.assertEqual('https', parsed_url.scheme) | 219 | self.assertEqual('https', parsed_url.scheme) |
567 | 220 | mo = re.search( | 220 | mo = re.search( |
570 | 221 | r'^i\d+\.restricted\.localhost:58000$', parsed_url.netloc) | 221 | r'^i\d+\.restricted\..+:\d+$', parsed_url.netloc) |
571 | 222 | self.assertIsNot(None, mo) | 222 | self.assertIsNot(None, mo, parsed_url.netloc) |
572 | 223 | mo = re.search(r'^/\d+/foo\.txt$', parsed_url.path) | 223 | mo = re.search(r'^/\d+/foo\.txt$', parsed_url.path) |
573 | 224 | self.assertIsNot(None, mo) | 224 | self.assertIsNot(None, mo) |
574 | 225 | params = parse_qs(parsed_url.query) | 225 | params = parse_qs(parsed_url.query) |
575 | 226 | 226 | ||
576 | === modified file 'lib/lp/bugs/stories/webservice/xx-bug.txt' | |||
577 | --- lib/lp/bugs/stories/webservice/xx-bug.txt 2010-12-20 17:42:47 +0000 | |||
578 | +++ lib/lp/bugs/stories/webservice/xx-bug.txt 2011-01-19 13:41:53 +0000 | |||
579 | @@ -1278,7 +1278,7 @@ | |||
580 | 1278 | HTTP/1.1 303 See Other... | 1278 | HTTP/1.1 303 See Other... |
581 | 1279 | Content-Length: 0 | 1279 | Content-Length: 0 |
582 | 1280 | Content-Type: text/plain | 1280 | Content-Type: text/plain |
584 | 1281 | Location: http://localhost:58000/.../numbers.txt | 1281 | Location: http://.../numbers.txt |
585 | 1282 | ... | 1282 | ... |
586 | 1283 | 1283 | ||
587 | 1284 | >>> from urllib2 import urlopen | 1284 | >>> from urllib2 import urlopen |
588 | 1285 | 1285 | ||
589 | === modified file 'lib/lp/code/stories/branches/xx-person-portlet-teambranches.txt' | |||
590 | --- lib/lp/code/stories/branches/xx-person-portlet-teambranches.txt 2010-04-20 04:14:18 +0000 | |||
591 | +++ lib/lp/code/stories/branches/xx-person-portlet-teambranches.txt 2011-01-19 13:41:53 +0000 | |||
592 | @@ -36,6 +36,6 @@ | |||
593 | 36 | Branches owned by | 36 | Branches owned by |
594 | 37 | >>> print tb.li | 37 | >>> print tb.li |
595 | 38 | <li> | 38 | <li> |
597 | 39 | <img src="http://localhost:58000/.../vikings.png" width="14" height="14" /> | 39 | <img src="http://.../vikings.png" width="14" height="14" /> |
598 | 40 | <a href="/~vikings">Vikings</a> | 40 | <a href="/~vikings">Vikings</a> |
599 | 41 | </li> | 41 | </li> |
600 | 42 | 42 | ||
601 | === modified file 'lib/lp/hardwaredb/stories/hwdb/02-view-submissions.txt' | |||
602 | --- lib/lp/hardwaredb/stories/hwdb/02-view-submissions.txt 2010-02-02 17:12:29 +0000 | |||
603 | +++ lib/lp/hardwaredb/stories/hwdb/02-view-submissions.txt 2011-01-19 13:41:53 +0000 | |||
604 | @@ -28,7 +28,7 @@ | |||
605 | 28 | 28 | ||
606 | 29 | >>> download_link = anon_browser.getLink('test.txt') | 29 | >>> download_link = anon_browser.getLink('test.txt') |
607 | 30 | >>> download_link.url | 30 | >>> download_link.url |
609 | 31 | 'http://localhost:58000/.../test.txt' | 31 | 'http://.../test.txt' |
610 | 32 | 32 | ||
611 | 33 | >>> raw_link = anon_browser.getLink('text') | 33 | >>> raw_link = anon_browser.getLink('text') |
612 | 34 | >>> raw_link.url | 34 | >>> raw_link.url |
613 | @@ -158,7 +158,7 @@ | |||
614 | 158 | Distribution-Series: 5.04 | 158 | Distribution-Series: 5.04 |
615 | 159 | Architecture: i386 | 159 | Architecture: i386 |
616 | 160 | System: Fujitsu_CY26 | 160 | System: Fujitsu_CY26 |
618 | 161 | Submission URL: http://localhost:58000/.../test.txt | 161 | Submission URL: http://.../test.txt |
619 | 162 | 162 | ||
620 | 163 | Private submissions can't be viewed anonymously: | 163 | Private submissions can't be viewed anonymously: |
621 | 164 | 164 | ||
622 | @@ -181,7 +181,7 @@ | |||
623 | 181 | Distribution-Series: 5.04 | 181 | Distribution-Series: 5.04 |
624 | 182 | Architecture: i386 | 182 | Architecture: i386 |
625 | 183 | System: Black Box 42 | 183 | System: Black Box 42 |
627 | 184 | Submission URL: http://localhost:58000/.../teamtest.txt | 184 | Submission URL: http://.../teamtest.txt |
628 | 185 | 185 | ||
629 | 186 | 186 | ||
630 | 187 | == Submissions listed by fingerprint == | 187 | == Submissions listed by fingerprint == |
631 | 188 | 188 | ||
632 | === modified file 'lib/lp/hardwaredb/stories/webservice/xx-hwdb.txt' | |||
633 | --- lib/lp/hardwaredb/stories/webservice/xx-hwdb.txt 2010-02-02 17:12:29 +0000 | |||
634 | +++ lib/lp/hardwaredb/stories/webservice/xx-hwdb.txt 2011-01-19 13:41:53 +0000 | |||
635 | @@ -540,7 +540,7 @@ | |||
636 | 540 | HTTP/1.1 303 See Other... | 540 | HTTP/1.1 303 See Other... |
637 | 541 | Content-Length: 0 | 541 | Content-Length: 0 |
638 | 542 | Content-Type: text/plain | 542 | Content-Type: text/plain |
640 | 543 | Location: http://localhost:58000/92/sample-submission-2.xml | 543 | Location: http://.../92/sample-submission-2.xml |
641 | 544 | ... | 544 | ... |
642 | 545 | 545 | ||
643 | 546 | A 404 error is returned when a client tries to access a non-existent | 546 | A 404 error is returned when a client tries to access a non-existent |
644 | 547 | 547 | ||
645 | === modified file 'lib/lp/registry/stories/product/xx-product-files.txt' | |||
646 | --- lib/lp/registry/stories/product/xx-product-files.txt 2010-09-24 20:49:42 +0000 | |||
647 | +++ lib/lp/registry/stories/product/xx-product-files.txt 2011-01-19 13:41:53 +0000 | |||
648 | @@ -516,7 +516,7 @@ | |||
649 | 516 | >>> location = redirect_resp.getOutput().split("\n")[3] | 516 | >>> location = redirect_resp.getOutput().split("\n")[3] |
650 | 517 | >>> redirect_url = location.split()[1] | 517 | >>> redirect_url = location.split()[1] |
651 | 518 | >>> print redirect_url | 518 | >>> print redirect_url |
653 | 519 | https://localhost:58000/.../foo.txt | 519 | https://.../foo.txt |
654 | 520 | 520 | ||
655 | 521 | However if the original scheme is http then the redirect URL should be | 521 | However if the original scheme is http then the redirect URL should be |
656 | 522 | over http. | 522 | over http. |
657 | @@ -528,7 +528,7 @@ | |||
658 | 528 | >>> location = redirect_resp.getOutput().split("\n")[3] | 528 | >>> location = redirect_resp.getOutput().split("\n")[3] |
659 | 529 | >>> redirect_url = location.split()[1] | 529 | >>> redirect_url = location.split()[1] |
660 | 530 | >>> print redirect_url | 530 | >>> print redirect_url |
662 | 531 | http://localhost:58000/.../foo.txt | 531 | http://.../foo.txt |
663 | 532 | 532 | ||
664 | 533 | When 'use_https' is False the result will always be http. | 533 | When 'use_https' is False the result will always be http. |
665 | 534 | 534 | ||
666 | @@ -548,7 +548,7 @@ | |||
667 | 548 | >>> location = redirect_resp.getOutput().split("\n")[3] | 548 | >>> location = redirect_resp.getOutput().split("\n")[3] |
668 | 549 | >>> redirect_url = location.split()[1] | 549 | >>> redirect_url = location.split()[1] |
669 | 550 | >>> print redirect_url | 550 | >>> print redirect_url |
671 | 551 | http://localhost:58000/.../foo.txt | 551 | http://.../foo.txt |
672 | 552 | 552 | ||
673 | 553 | >>> redirect_resp = http(dedent("""\ | 553 | >>> redirect_resp = http(dedent("""\ |
674 | 554 | ... GET %s HTTP/1.1 | 554 | ... GET %s HTTP/1.1 |
675 | @@ -557,7 +557,7 @@ | |||
676 | 557 | >>> location = redirect_resp.getOutput().split("\n")[3] | 557 | >>> location = redirect_resp.getOutput().split("\n")[3] |
677 | 558 | >>> redirect_url = location.split()[1] | 558 | >>> redirect_url = location.split()[1] |
678 | 559 | >>> print redirect_url | 559 | >>> print redirect_url |
680 | 560 | http://localhost:58000/.../foo.txt | 560 | http://.../foo.txt |
681 | 561 | 561 | ||
682 | 562 | Return 'use_https' to its original value to not mess up future tests. | 562 | Return 'use_https' to its original value to not mess up future tests. |
683 | 563 | 563 | ||
684 | 564 | 564 | ||
685 | === modified file 'lib/lp/registry/stories/webservice/xx-project-registry.txt' | |||
686 | --- lib/lp/registry/stories/webservice/xx-project-registry.txt 2010-11-22 21:36:21 +0000 | |||
687 | +++ lib/lp/registry/stories/webservice/xx-project-registry.txt 2011-01-19 13:41:53 +0000 | |||
688 | @@ -1112,7 +1112,7 @@ | |||
689 | 1112 | >>> print result | 1112 | >>> print result |
690 | 1113 | HTTP/1.1 303 See Other | 1113 | HTTP/1.1 303 See Other |
691 | 1114 | ... | 1114 | ... |
693 | 1115 | Location: http://localhost:58000/.../firefox_0.9.2.orig.tar.gz | 1115 | Location: http://.../firefox_0.9.2.orig.tar.gz |
694 | 1116 | ... | 1116 | ... |
695 | 1117 | 1117 | ||
696 | 1118 | The signature file will redirect too, if found. In this case there is | 1118 | The signature file will redirect too, if found. In this case there is |
697 | @@ -1207,7 +1207,7 @@ | |||
698 | 1207 | >>> print result | 1207 | >>> print result |
699 | 1208 | HTTP/1.1 303 See Other | 1208 | HTTP/1.1 303 See Other |
700 | 1209 | ... | 1209 | ... |
702 | 1210 | Location: http://localhost:58000/.../filename.txt | 1210 | Location: http://.../filename.txt |
703 | 1211 | ... | 1211 | ... |
704 | 1212 | 1212 | ||
705 | 1213 | Project release files can be deleted using the 'delete' method. The | 1213 | Project release files can be deleted using the 'delete' method. The |
706 | 1214 | 1214 | ||
707 | === modified file 'lib/lp/registry/tests/test_distroseriesdifference.py' | |||
708 | --- lib/lp/registry/tests/test_distroseriesdifference.py 2010-10-29 19:28:14 +0000 | |||
709 | +++ lib/lp/registry/tests/test_distroseriesdifference.py 2011-01-19 13:41:53 +0000 | |||
710 | @@ -540,8 +540,7 @@ | |||
711 | 540 | naked_dsdiff.parent_package_diff = self.factory.makePackageDiff() | 540 | naked_dsdiff.parent_package_diff = self.factory.makePackageDiff() |
712 | 541 | 541 | ||
713 | 542 | self.assertEqual(None, ds_diff.package_diff_url) | 542 | self.assertEqual(None, ds_diff.package_diff_url) |
716 | 543 | self.assertTrue(ds_diff.parent_package_diff_url.startswith( | 543 | self.assertTrue(ds_diff.parent_package_diff_url is not None) |
715 | 544 | 'http://localhost:58000/')) | ||
717 | 545 | 544 | ||
718 | 546 | 545 | ||
719 | 547 | class DistroSeriesDifferenceSourceTestCase(TestCaseWithFactory): | 546 | class DistroSeriesDifferenceSourceTestCase(TestCaseWithFactory): |
720 | 548 | 547 | ||
721 | === modified file 'lib/lp/soyuz/doc/distroarchseries.txt' | |||
722 | --- lib/lp/soyuz/doc/distroarchseries.txt 2010-11-02 21:44:42 +0000 | |||
723 | +++ lib/lp/soyuz/doc/distroarchseries.txt 2011-01-19 13:41:53 +0000 | |||
724 | @@ -367,7 +367,7 @@ | |||
725 | 367 | the file. | 367 | the file. |
726 | 368 | 368 | ||
727 | 369 | >>> print hoary.getDistroArchSeries('hppa').chroot_url | 369 | >>> print hoary.getDistroArchSeries('hppa').chroot_url |
729 | 370 | http://localhost:58000/.../filename... | 370 | http://.../filename... |
730 | 371 | >>> hoary.getDistroArchSeries('hppa').chroot_url == \ | 371 | >>> hoary.getDistroArchSeries('hppa').chroot_url == \ |
731 | 372 | ... chroot.http_url | 372 | ... chroot.http_url |
732 | 373 | True | 373 | True |
733 | 374 | 374 | ||
734 | === modified file 'lib/lp/soyuz/doc/soyuz-files.txt' | |||
735 | --- lib/lp/soyuz/doc/soyuz-files.txt 2010-10-19 18:44:31 +0000 | |||
736 | +++ lib/lp/soyuz/doc/soyuz-files.txt 2011-01-19 13:41:53 +0000 | |||
737 | @@ -48,7 +48,7 @@ | |||
738 | 48 | u'firefox_0.9.2.orig.tar.gz' | 48 | u'firefox_0.9.2.orig.tar.gz' |
739 | 49 | 49 | ||
740 | 50 | >>> srcfile.libraryfile.http_url | 50 | >>> srcfile.libraryfile.http_url |
742 | 51 | 'http://localhost:58000/3/firefox_0.9.2.orig.tar.gz' | 51 | 'http://.../3/firefox_0.9.2.orig.tar.gz' |
743 | 52 | 52 | ||
744 | 53 | 53 | ||
745 | 54 | == Binary Files == | 54 | == Binary Files == |
746 | @@ -76,7 +76,7 @@ | |||
747 | 76 | u'pmount_1.9-1_all.deb' | 76 | u'pmount_1.9-1_all.deb' |
748 | 77 | 77 | ||
749 | 78 | >>> debfile.libraryfile.http_url | 78 | >>> debfile.libraryfile.http_url |
751 | 79 | 'http://localhost:58000/37/pmount_1.9-1_all.deb' | 79 | 'http://.../37/pmount_1.9-1_all.deb' |
752 | 80 | 80 | ||
753 | 81 | 81 | ||
754 | 82 | == Utilities == | 82 | == Utilities == |
755 | 83 | 83 | ||
756 | === modified file 'lib/lp/soyuz/stories/ppa/xx-ppa-files.txt' | |||
757 | --- lib/lp/soyuz/stories/ppa/xx-ppa-files.txt 2011-01-12 23:07:40 +0000 | |||
758 | +++ lib/lp/soyuz/stories/ppa/xx-ppa-files.txt 2011-01-19 13:41:53 +0000 | |||
759 | @@ -350,14 +350,14 @@ | |||
760 | 350 | >>> logout() | 350 | >>> logout() |
761 | 351 | 351 | ||
762 | 352 | >>> print file_librarian_url | 352 | >>> print file_librarian_url |
764 | 353 | http://localhost:58000/.../test-pkg_1.0.dsc | 353 | http://.../test-pkg_1.0.dsc |
765 | 354 | 354 | ||
766 | 355 | >>> print http(r""" | 355 | >>> print http(r""" |
767 | 356 | ... GET %s HTTP/1.1 | 356 | ... GET %s HTTP/1.1 |
768 | 357 | ... """ % file_lp_url.replace('http://launchpad.dev', '')) | 357 | ... """ % file_lp_url.replace('http://launchpad.dev', '')) |
769 | 358 | HTTP/1.1 303 See Other | 358 | HTTP/1.1 303 See Other |
770 | 359 | ... | 359 | ... |
772 | 360 | Location: http://localhost:58000/.../test-pkg_1.0.dsc | 360 | Location: http://.../test-pkg_1.0.dsc |
773 | 361 | ... | 361 | ... |
774 | 362 | 362 | ||
775 | 363 | 363 | ||
776 | 364 | 364 | ||
777 | === modified file 'lib/lp/soyuz/stories/soyuz/xx-distro-package-pages.txt' | |||
778 | --- lib/lp/soyuz/stories/soyuz/xx-distro-package-pages.txt 2009-09-03 16:53:49 +0000 | |||
779 | +++ lib/lp/soyuz/stories/soyuz/xx-distro-package-pages.txt 2011-01-19 13:41:53 +0000 | |||
780 | @@ -47,5 +47,5 @@ | |||
781 | 47 | ... """ % path) | 47 | ... """ % path) |
782 | 48 | HTTP/1.1 303 See Other | 48 | HTTP/1.1 303 See Other |
783 | 49 | ... | 49 | ... |
785 | 50 | Location: http://localhost:58000/68/commercialpackage_1.0-1.dsc | 50 | Location: http://.../68/commercialpackage_1.0-1.dsc |
786 | 51 | ... | 51 | ... |
787 | 52 | 52 | ||
788 | === modified file 'lib/lp/soyuz/stories/soyuz/xx-distroarchseries-binpackages.txt' | |||
789 | --- lib/lp/soyuz/stories/soyuz/xx-distroarchseries-binpackages.txt 2009-12-11 15:27:08 +0000 | |||
790 | +++ lib/lp/soyuz/stories/soyuz/xx-distroarchseries-binpackages.txt 2011-01-19 13:41:53 +0000 | |||
791 | @@ -107,7 +107,7 @@ | |||
792 | 107 | >>> dfiles_element = find_tag_by_id( | 107 | >>> dfiles_element = find_tag_by_id( |
793 | 108 | ... browser.contents, 'downloadable-files') | 108 | ... browser.contents, 'downloadable-files') |
794 | 109 | >>> print dfiles_element.find(name='a')['href'] | 109 | >>> print dfiles_element.find(name='a')['href'] |
796 | 110 | http://localhost:58000/40/mozilla-firefox_0.9_i386.deb | 110 | http://.../40/mozilla-firefox_0.9_i386.deb |
797 | 111 | 111 | ||
798 | 112 | If the binary package did produce files, but those files have been | 112 | If the binary package did produce files, but those files have been |
799 | 113 | subsequently deleted, this will also be indicated and the file will | 113 | subsequently deleted, this will also be indicated and the file will |
800 | 114 | 114 | ||
801 | === modified file 'lib/lp/soyuz/stories/soyuz/xx-distroseries-sources.txt' | |||
802 | --- lib/lp/soyuz/stories/soyuz/xx-distroseries-sources.txt 2010-11-11 21:48:20 +0000 | |||
803 | +++ lib/lp/soyuz/stories/soyuz/xx-distroseries-sources.txt 2011-01-19 13:41:53 +0000 | |||
804 | @@ -387,7 +387,7 @@ | |||
805 | 387 | With the possibility to download the entire changesfile (if available): | 387 | With the possibility to download the entire changesfile (if available): |
806 | 388 | 388 | ||
807 | 389 | >>> print browser.getLink('View changes file').url | 389 | >>> print browser.getLink('View changes file').url |
809 | 390 | http://localhost:58000/65/commercialpackage_1.0-1_source.changes | 390 | http://.../65/commercialpackage_1.0-1_source.changes |
810 | 391 | 391 | ||
811 | 392 | And also download the files contained in this source, like '.orig', | 392 | And also download the files contained in this source, like '.orig', |
812 | 393 | '.diff' and the DSC: | 393 | '.diff' and the DSC: |
813 | 394 | 394 | ||
814 | === modified file 'lib/lp/soyuz/stories/soyuz/xx-queue-pages-delayed-copies.txt' | |||
815 | --- lib/lp/soyuz/stories/soyuz/xx-queue-pages-delayed-copies.txt 2010-10-18 22:24:59 +0000 | |||
816 | +++ lib/lp/soyuz/stories/soyuz/xx-queue-pages-delayed-copies.txt 2011-01-19 13:41:53 +0000 | |||
817 | @@ -122,7 +122,7 @@ | |||
818 | 122 | >>> anon_browser.getControl("Update").click() | 122 | >>> anon_browser.getControl("Update").click() |
819 | 123 | 123 | ||
820 | 124 | >>> print anon_browser.getLink('foo, foo').url | 124 | >>> print anon_browser.getLink('foo, foo').url |
822 | 125 | http://localhost:58000/.../foo_666_source.changes | 125 | http://.../.../foo_666_source.changes |
823 | 126 | 126 | ||
824 | 127 | >>> extra_information = find_tags_by_class( | 127 | >>> extra_information = find_tags_by_class( |
825 | 128 | ... anon_browser.contents, 'queue-%s' % delayed_copy.id) | 128 | ... anon_browser.contents, 'queue-%s' % delayed_copy.id) |
826 | 129 | 129 | ||
827 | === modified file 'lib/lp/soyuz/stories/soyuz/xx-queue-pages.txt' | |||
828 | --- lib/lp/soyuz/stories/soyuz/xx-queue-pages.txt 2011-01-19 13:41:25 +0000 | |||
829 | +++ lib/lp/soyuz/stories/soyuz/xx-queue-pages.txt 2011-01-19 13:41:53 +0000 | |||
830 | @@ -229,11 +229,11 @@ | |||
831 | 229 | 229 | ||
832 | 230 | >>> for row in filelist: | 230 | >>> for row in filelist: |
833 | 231 | ... print row.find('a') | 231 | ... print row.find('a') |
835 | 232 | <a href="http://localhost:58000/.../alsa-utils_1.0.9a-4ubuntu1.dsc"> | 232 | <a href="http://.../alsa-utils_1.0.9a-4ubuntu1.dsc"> |
836 | 233 | alsa-utils_1.0.9a-4ubuntu1.dsc | 233 | alsa-utils_1.0.9a-4ubuntu1.dsc |
837 | 234 | </a> | 234 | </a> |
838 | 235 | None | 235 | None |
840 | 236 | <a href="http://localhost:58000/.../alsa-utils.diff.gz">diff from 1.0.9a-4 to 1.0.9a-4ubuntu1</a> | 236 | <a href="http://.../alsa-utils.diff.gz">diff from 1.0.9a-4 to 1.0.9a-4ubuntu1</a> |
841 | 237 | 237 | ||
842 | 238 | On binary queue items we also present the stamp 'NEW' for files never | 238 | On binary queue items we also present the stamp 'NEW' for files never |
843 | 239 | published in the archive (it helps archive admins when reviewing | 239 | published in the archive (it helps archive admins when reviewing |
844 | 240 | 240 | ||
845 | === modified file 'lib/lp/soyuz/stories/webservice/xx-distroarchseries.txt' | |||
846 | --- lib/lp/soyuz/stories/webservice/xx-distroarchseries.txt 2010-02-22 10:37:13 +0000 | |||
847 | +++ lib/lp/soyuz/stories/webservice/xx-distroarchseries.txt 2011-01-19 13:41:53 +0000 | |||
848 | @@ -34,7 +34,7 @@ | |||
849 | 34 | >>> from lazr.restful.testing.webservice import pprint_entry | 34 | >>> from lazr.restful.testing.webservice import pprint_entry |
850 | 35 | >>> pprint_entry(distroarchseries) | 35 | >>> pprint_entry(distroarchseries) |
851 | 36 | architecture_tag: u'i386' | 36 | architecture_tag: u'i386' |
853 | 37 | chroot_url: u'http://localhost:58000/.../filename...' | 37 | chroot_url: u'http://.../.../filename...' |
854 | 38 | display_name: u'Ubuntu Hoary i386' | 38 | display_name: u'Ubuntu Hoary i386' |
855 | 39 | distroseries_link: u'http://.../ubuntu/hoary' | 39 | distroseries_link: u'http://.../ubuntu/hoary' |
856 | 40 | is_nominated_arch_indep: True | 40 | is_nominated_arch_indep: True |
857 | 41 | 41 | ||
858 | === modified file 'lib/lp/soyuz/tests/test_publishing_models.py' | |||
859 | --- lib/lp/soyuz/tests/test_publishing_models.py 2010-10-04 19:50:45 +0000 | |||
860 | +++ lib/lp/soyuz/tests/test_publishing_models.py 2011-01-19 13:41:53 +0000 | |||
861 | @@ -82,9 +82,7 @@ | |||
862 | 82 | self.publishing_set.getChangesFileLFA(hist.sourcepackagerelease) | 82 | self.publishing_set.getChangesFileLFA(hist.sourcepackagerelease) |
863 | 83 | for hist in self.sources) | 83 | for hist in self.sources) |
864 | 84 | urls = [lfa.http_url for lfa in lfas] | 84 | urls = [lfa.http_url for lfa in lfas] |
871 | 85 | self.assertEqual(urls, [ | 85 | self.assert_(urls[0].endswith('/94/gedit_666_source.changes')) |
872 | 86 | 'http://localhost:58000/94/gedit_666_source.changes', | 86 | self.assert_(urls[1].endswith('/96/firefox_666_source.changes')) |
873 | 87 | 'http://localhost:58000/96/firefox_666_source.changes', | 87 | self.assert_(urls[2].endswith( |
874 | 88 | ('http://localhost:58000/98/' | 88 | '/98/getting-things-gnome_666_source.changes')) |
869 | 89 | 'getting-things-gnome_666_source.changes'), | ||
870 | 90 | ]) | ||
875 | 91 | 89 | ||
876 | === modified file 'lib/lp/testing/__init__.py' | |||
877 | --- lib/lp/testing/__init__.py 2011-01-19 13:41:25 +0000 | |||
878 | +++ lib/lp/testing/__init__.py 2011-01-19 13:41:53 +0000 | |||
879 | @@ -512,13 +512,8 @@ | |||
880 | 512 | """Include the logChunks from fixture in the test details.""" | 512 | """Include the logChunks from fixture in the test details.""" |
881 | 513 | # Evaluate the log when called, not later, to permit the librarian to | 513 | # Evaluate the log when called, not later, to permit the librarian to |
882 | 514 | # be shutdown before the detail is rendered. | 514 | # be shutdown before the detail is rendered. |
885 | 515 | <<<<<<< TREE | 515 | chunks = fixture.getLogChunks() |
884 | 516 | chunks = fixture.logChunks() | ||
886 | 517 | content = Content(UTF8_TEXT, lambda: chunks) | 516 | content = Content(UTF8_TEXT, lambda: chunks) |
887 | 518 | ======= | ||
888 | 519 | chunks = fixture.getLogChunks() | ||
889 | 520 | content = Content(UTF8_TEXT, lambda:chunks) | ||
890 | 521 | >>>>>>> MERGE-SOURCE | ||
891 | 522 | self.addDetail('librarian-log', content) | 517 | self.addDetail('librarian-log', content) |
892 | 523 | 518 | ||
893 | 524 | def setUp(self): | 519 | def setUp(self): |
894 | 525 | 520 | ||
895 | === modified file 'lib/lp/translations/doc/poexport-queue.txt' | |||
896 | --- lib/lp/translations/doc/poexport-queue.txt 2011-01-13 18:09:48 +0000 | |||
897 | +++ lib/lp/translations/doc/poexport-queue.txt 2011-01-19 13:41:53 +0000 | |||
898 | @@ -304,7 +304,7 @@ | |||
899 | 304 | The translation files you requested from Launchpad are ready for | 304 | The translation files you requested from Launchpad are ready for |
900 | 305 | download from the following location: | 305 | download from the following location: |
901 | 306 | <BLANKLINE> | 306 | <BLANKLINE> |
903 | 307 | http://localhost:58000/.../po_evolution-2.2.pot | 307 | http://.../.../po_evolution-2.2.pot |
904 | 308 | <BLANKLINE> | 308 | <BLANKLINE> |
905 | 309 | Note: this link will expire in about 1 week. If you want to | 309 | Note: this link will expire in about 1 week. If you want to |
906 | 310 | download these translations again, you will have to request | 310 | download these translations again, you will have to request |
907 | 311 | 311 | ||
908 | === modified file 'lib/lp/translations/doc/poexport-request-productseries.txt' | |||
909 | --- lib/lp/translations/doc/poexport-request-productseries.txt 2010-12-22 20:46:21 +0000 | |||
910 | +++ lib/lp/translations/doc/poexport-request-productseries.txt 2011-01-19 13:41:53 +0000 | |||
911 | @@ -60,7 +60,7 @@ | |||
912 | 60 | The translation files you requested from Launchpad are ready for | 60 | The translation files you requested from Launchpad are ready for |
913 | 61 | download from the following location: | 61 | download from the following location: |
914 | 62 | <BLANKLINE> | 62 | <BLANKLINE> |
916 | 63 | http://localhost:58000/.../launchpad-export.tar.gz | 63 | http://.../launchpad-export.tar.gz |
917 | 64 | <BLANKLINE> | 64 | <BLANKLINE> |
918 | 65 | Note: this link will expire in about 1 week. If you want to | 65 | Note: this link will expire in about 1 week. If you want to |
919 | 66 | download these translations again, you will have to request | 66 | download these translations again, you will have to request |
920 | 67 | 67 | ||
921 | === modified file 'lib/lp/translations/doc/poexport-request.txt' | |||
922 | --- lib/lp/translations/doc/poexport-request.txt 2010-12-22 20:46:21 +0000 | |||
923 | +++ lib/lp/translations/doc/poexport-request.txt 2011-01-19 13:41:53 +0000 | |||
924 | @@ -62,7 +62,7 @@ | |||
925 | 62 | The translation files you requested from Launchpad are ready for | 62 | The translation files you requested from Launchpad are ready for |
926 | 63 | download from the following location: | 63 | download from the following location: |
927 | 64 | <BLANKLINE> | 64 | <BLANKLINE> |
929 | 65 | http://localhost:58000/.../launchpad-export.tar.gz | 65 | http://.../launchpad-export.tar.gz |
930 | 66 | <BLANKLINE> | 66 | <BLANKLINE> |
931 | 67 | Note: this link will expire in about 1 week. If you want to | 67 | Note: this link will expire in about 1 week. If you want to |
932 | 68 | download these translations again, you will have to request | 68 | download these translations again, you will have to request |
933 | @@ -194,7 +194,7 @@ | |||
934 | 194 | The translation files you requested from Launchpad are ready for | 194 | The translation files you requested from Launchpad are ready for |
935 | 195 | download from the following location: | 195 | download from the following location: |
936 | 196 | <BLANKLINE> | 196 | <BLANKLINE> |
938 | 197 | http://localhost:58000/.../cs_LC_MESSAGES_pmount.mo | 197 | http://.../cs_LC_MESSAGES_pmount.mo |
939 | 198 | <BLANKLINE> | 198 | <BLANKLINE> |
940 | 199 | Note: this link will expire in about 1 week. If you want to | 199 | Note: this link will expire in about 1 week. If you want to |
941 | 200 | download these translations again, you will have to request | 200 | download these translations again, you will have to request |
942 | 201 | 201 | ||
943 | === modified file 'lib/lp/translations/doc/poimport-pofile-not-exported-from-rosetta.txt' | |||
944 | --- lib/lp/translations/doc/poimport-pofile-not-exported-from-rosetta.txt 2010-12-02 16:13:51 +0000 | |||
945 | +++ lib/lp/translations/doc/poimport-pofile-not-exported-from-rosetta.txt 2011-01-19 13:41:53 +0000 | |||
946 | @@ -118,7 +118,7 @@ | |||
947 | 118 | apply your changes and upload the merged file. | 118 | apply your changes and upload the merged file. |
948 | 119 | <BLANKLINE> | 119 | <BLANKLINE> |
949 | 120 | For your convenience, you can get the file you uploaded at: | 120 | For your convenience, you can get the file you uploaded at: |
951 | 121 | http://localhost:58000/.../firefox-cy.po | 121 | http://.../firefox-cy.po |
952 | 122 | <BLANKLINE> | 122 | <BLANKLINE> |
953 | 123 | Thank you, | 123 | Thank you, |
954 | 124 | <BLANKLINE> | 124 | <BLANKLINE> |
955 | 125 | 125 | ||
956 | === modified file 'lib/lp/translations/doc/poimport-pofile-old-po-imported.txt' | |||
957 | --- lib/lp/translations/doc/poimport-pofile-old-po-imported.txt 2010-12-02 16:13:51 +0000 | |||
958 | +++ lib/lp/translations/doc/poimport-pofile-old-po-imported.txt 2011-01-19 13:41:53 +0000 | |||
959 | @@ -177,7 +177,7 @@ | |||
960 | 177 | 'PO-Revision-Date' field updated. | 177 | 'PO-Revision-Date' field updated. |
961 | 178 | <BLANKLINE> | 178 | <BLANKLINE> |
962 | 179 | For your convenience, you can get the file you uploaded at: | 179 | For your convenience, you can get the file you uploaded at: |
964 | 180 | http://localhost:58000/.../firefox-cy.po | 180 | http://.../firefox-cy.po |
965 | 181 | <BLANKLINE> | 181 | <BLANKLINE> |
966 | 182 | Thank you, | 182 | Thank you, |
967 | 183 | <BLANKLINE> | 183 | <BLANKLINE> |
968 | 184 | 184 | ||
969 | === modified file 'lib/lp/translations/doc/poimport-pofile-syntax-error.txt' | |||
970 | --- lib/lp/translations/doc/poimport-pofile-syntax-error.txt 2010-12-02 16:13:51 +0000 | |||
971 | +++ lib/lp/translations/doc/poimport-pofile-syntax-error.txt 2011-01-19 13:41:53 +0000 | |||
972 | @@ -113,7 +113,7 @@ | |||
973 | 113 | answer or file a question at https://answers.launchpad.net/rosetta/ | 113 | answer or file a question at https://answers.launchpad.net/rosetta/ |
974 | 114 | <BLANKLINE> | 114 | <BLANKLINE> |
975 | 115 | For your convenience, you can get the file you uploaded at: | 115 | For your convenience, you can get the file you uploaded at: |
977 | 116 | http://localhost:58000/.../firefox-cy.po | 116 | http://.../firefox-cy.po |
978 | 117 | <BLANKLINE> | 117 | <BLANKLINE> |
979 | 118 | Thank you, | 118 | Thank you, |
980 | 119 | <BLANKLINE> | 119 | <BLANKLINE> |
981 | 120 | 120 | ||
982 | === modified file 'lib/lp/translations/doc/poimport-potemplate-syntax-error.txt' | |||
983 | --- lib/lp/translations/doc/poimport-potemplate-syntax-error.txt 2010-12-02 16:13:51 +0000 | |||
984 | +++ lib/lp/translations/doc/poimport-potemplate-syntax-error.txt 2011-01-19 13:41:53 +0000 | |||
985 | @@ -94,7 +94,7 @@ | |||
986 | 94 | answer or file a question at https://answers.launchpad.net/rosetta/ | 94 | answer or file a question at https://answers.launchpad.net/rosetta/ |
987 | 95 | <BLANKLINE> | 95 | <BLANKLINE> |
988 | 96 | For your convenience, you can get the file you uploaded at: | 96 | For your convenience, you can get the file you uploaded at: |
990 | 97 | http://localhost:58000/.../firefox.pot | 97 | http://.../firefox.pot |
991 | 98 | <BLANKLINE> | 98 | <BLANKLINE> |
992 | 99 | Thank you, | 99 | Thank you, |
993 | 100 | <BLANKLINE> | 100 | <BLANKLINE> |
994 | @@ -151,7 +151,7 @@ | |||
995 | 151 | 'ascii' codec can't decode byte ... | 151 | 'ascii' codec can't decode byte ... |
996 | 152 | <BLANKLINE> | 152 | <BLANKLINE> |
997 | 153 | For your convenience, you can find the file you uploaded at: | 153 | For your convenience, you can find the file you uploaded at: |
999 | 154 | http://localhost:58000/.../nonascii.pot | 154 | http://.../nonascii.pot |
1000 | 155 | <BLANKLINE> | 155 | <BLANKLINE> |
1001 | 156 | Thank you, | 156 | Thank you, |
1002 | 157 | <BLANKLINE> | 157 | <BLANKLINE> |
1003 | 158 | 158 | ||
1004 | === modified file 'lib/lp/translations/stories/standalone/xx-translations-xpi-import.txt' | |||
1005 | --- lib/lp/translations/stories/standalone/xx-translations-xpi-import.txt 2009-09-14 19:00:45 +0000 | |||
1006 | +++ lib/lp/translations/stories/standalone/xx-translations-xpi-import.txt 2011-01-19 13:41:53 +0000 | |||
1007 | @@ -36,7 +36,7 @@ | |||
1008 | 36 | 36 | ||
1009 | 37 | >>> browser.getLink('Translation Import Queue').click() | 37 | >>> browser.getLink('Translation Import Queue').click() |
1010 | 38 | >>> print browser.getLink(url='en-US.xpi').url | 38 | >>> print browser.getLink(url='en-US.xpi').url |
1012 | 39 | http://localhost:58000/.../en-US.xpi | 39 | http://.../en-US.xpi |
1013 | 40 | >>> browser.getLink(url='imports/3').click() | 40 | >>> browser.getLink(url='imports/3').click() |
1014 | 41 | >>> print browser.url | 41 | >>> print browser.url |
1015 | 42 | http://translations.launchpad.dev/+imports/3 | 42 | http://translations.launchpad.dev/+imports/3 |
Subunit stream of remaining failures (4) at http:// paste.ubuntu. com/546626/
Includes some launchpadlib failures that need to be fixed in that tree.