Merge ~cjwatson/launchpad:snap-charm-filter-uploads into launchpad:master
- Git
- lp:~cjwatson/launchpad
- snap-charm-filter-uploads
- Merge into master
Proposed by
Colin Watson
Status: | Merged |
---|---|
Approved by: | Colin Watson |
Approved revision: | 450964865816ea460e4314cd35b0a29d6d68cb52 |
Merge reported by: | Otto Co-Pilot |
Merged at revision: | not available |
Proposed branch: | ~cjwatson/launchpad:snap-charm-filter-uploads |
Merge into: | launchpad:master |
Diff against target: |
508 lines (+89/-58) 5 files modified
lib/lp/charms/model/charmhubclient.py (+0/-10) lib/lp/charms/model/charmrecipebuildjob.py (+6/-3) lib/lp/charms/tests/test_charmrecipebuildjob.py (+38/-21) lib/lp/snappy/model/snapbuildjob.py (+6/-3) lib/lp/snappy/tests/test_snapbuildjob.py (+39/-21) |
Related bugs: |
Reviewer | Review Type | Date Requested | Status |
---|---|---|---|
Cristian Gonzalez (community) | Approve | ||
Review via email: mp+408680@code.launchpad.net |
Commit message
Fix selection of snap/charm files to upload to the store
Description of the change
I lost the filter for files ending with ".snap" or ".charm" in a recent refactoring (https:/
To post a comment you must log in.
Preview Diff
[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1 | diff --git a/lib/lp/charms/model/charmhubclient.py b/lib/lp/charms/model/charmhubclient.py | |||
2 | index 33ea281..1ac2f6c 100644 | |||
3 | --- a/lib/lp/charms/model/charmhubclient.py | |||
4 | +++ b/lib/lp/charms/model/charmhubclient.py | |||
5 | @@ -210,16 +210,6 @@ class CharmhubClient: | |||
6 | 210 | timeline_action.finish() | 210 | timeline_action.finish() |
7 | 211 | 211 | ||
8 | 212 | @classmethod | 212 | @classmethod |
9 | 213 | def upload(cls, build): | ||
10 | 214 | """See `ICharmhubClient`.""" | ||
11 | 215 | assert build.recipe.can_upload_to_store | ||
12 | 216 | for _, lfa, _ in build.getFiles(): | ||
13 | 217 | if not lfa.filename.endswith(".charm"): | ||
14 | 218 | continue | ||
15 | 219 | upload_id = cls.uploadFile(lfa) | ||
16 | 220 | return cls._push(build, upload_id) | ||
17 | 221 | |||
18 | 222 | @classmethod | ||
19 | 223 | def checkStatus(cls, build, status_url): | 213 | def checkStatus(cls, build, status_url): |
20 | 224 | """See `ICharmhubClient`.""" | 214 | """See `ICharmhubClient`.""" |
21 | 225 | status_url = urlappend( | 215 | status_url = urlappend( |
22 | diff --git a/lib/lp/charms/model/charmrecipebuildjob.py b/lib/lp/charms/model/charmrecipebuildjob.py | |||
23 | index cfe86a6..a0f7993 100644 | |||
24 | --- a/lib/lp/charms/model/charmrecipebuildjob.py | |||
25 | +++ b/lib/lp/charms/model/charmrecipebuildjob.py | |||
26 | @@ -323,13 +323,16 @@ class CharmhubUploadJob(CharmRecipeBuildJobDerived): | |||
27 | 323 | client = getUtility(ICharmhubClient) | 323 | client = getUtility(ICharmhubClient) |
28 | 324 | try: | 324 | try: |
29 | 325 | try: | 325 | try: |
32 | 326 | lfa = next((row[1] for row in self.build.getFiles()), None) | 326 | charm_lfa = next( |
33 | 327 | if lfa is None: | 327 | (lfa for _, lfa, _ in self.build.getFiles() |
34 | 328 | if lfa.filename.endswith(".charm")), | ||
35 | 329 | None) | ||
36 | 330 | if charm_lfa is None: | ||
37 | 328 | # Nothing to do. | 331 | # Nothing to do. |
38 | 329 | self.error_message = None | 332 | self.error_message = None |
39 | 330 | return | 333 | return |
40 | 331 | if "upload_id" not in self.store_metadata: | 334 | if "upload_id" not in self.store_metadata: |
42 | 332 | self.upload_id = client.uploadFile(lfa) | 335 | self.upload_id = client.uploadFile(charm_lfa) |
43 | 333 | # We made progress, so reset attempt_count. | 336 | # We made progress, so reset attempt_count. |
44 | 334 | self.attempt_count = 1 | 337 | self.attempt_count = 1 |
45 | 335 | if "status_url" not in self.store_metadata: | 338 | if "status_url" not in self.store_metadata: |
46 | diff --git a/lib/lp/charms/tests/test_charmrecipebuildjob.py b/lib/lp/charms/tests/test_charmrecipebuildjob.py | |||
47 | index d8c1e86..69865b1 100644 | |||
48 | --- a/lib/lp/charms/tests/test_charmrecipebuildjob.py | |||
49 | +++ b/lib/lp/charms/tests/test_charmrecipebuildjob.py | |||
50 | @@ -84,6 +84,19 @@ class FakeCharmhubClient: | |||
51 | 84 | self.release = FakeMethod() | 84 | self.release = FakeMethod() |
52 | 85 | 85 | ||
53 | 86 | 86 | ||
54 | 87 | class FileUploaded(MatchesListwise): | ||
55 | 88 | |||
56 | 89 | def __init__(self, filename): | ||
57 | 90 | super().__init__([ | ||
58 | 91 | MatchesListwise([ | ||
59 | 92 | MatchesListwise([ | ||
60 | 93 | MatchesStructure.byEquality(filename=filename), | ||
61 | 94 | ]), | ||
62 | 95 | MatchesDict({}), | ||
63 | 96 | ]), | ||
64 | 97 | ]) | ||
65 | 98 | |||
66 | 99 | |||
67 | 87 | class TestCharmRecipeBuildJob(TestCaseWithFactory): | 100 | class TestCharmRecipeBuildJob(TestCaseWithFactory): |
68 | 88 | 101 | ||
69 | 89 | layer = DatabaseFunctionalLayer | 102 | layer = DatabaseFunctionalLayer |
70 | @@ -130,12 +143,15 @@ class TestCharmhubUploadJob(TestCaseWithFactory): | |||
71 | 130 | repr(job)) | 143 | repr(job)) |
72 | 131 | 144 | ||
73 | 132 | def makeCharmRecipeBuild(self, **kwargs): | 145 | def makeCharmRecipeBuild(self, **kwargs): |
75 | 133 | # Make a build with a builder, a file, and a webhook. | 146 | # Make a build with a builder, some files, and a webhook. |
76 | 134 | build = self.factory.makeCharmRecipeBuild( | 147 | build = self.factory.makeCharmRecipeBuild( |
77 | 135 | builder=self.factory.makeBuilder(), **kwargs) | 148 | builder=self.factory.makeBuilder(), **kwargs) |
78 | 136 | build.updateStatus(BuildStatus.FULLYBUILT) | 149 | build.updateStatus(BuildStatus.FULLYBUILT) |
79 | 150 | irrelevant_lfa = self.factory.makeLibraryFileAlias( | ||
80 | 151 | filename="000-irrelevant.txt", content=b"irrelevant file") | ||
81 | 152 | self.factory.makeCharmFile(build=build, library_file=irrelevant_lfa) | ||
82 | 137 | charm_lfa = self.factory.makeLibraryFileAlias( | 153 | charm_lfa = self.factory.makeLibraryFileAlias( |
84 | 138 | filename="test-charm.charm", content="dummy charm content") | 154 | filename="test-charm.charm", content=b"dummy charm content") |
85 | 139 | self.factory.makeCharmFile(build=build, library_file=charm_lfa) | 155 | self.factory.makeCharmFile(build=build, library_file=charm_lfa) |
86 | 140 | self.factory.makeWebhook( | 156 | self.factory.makeWebhook( |
87 | 141 | target=build.recipe, event_types=["charm-recipe:build:0.1"]) | 157 | target=build.recipe, event_types=["charm-recipe:build:0.1"]) |
88 | @@ -180,7 +196,6 @@ class TestCharmhubUploadJob(TestCaseWithFactory): | |||
89 | 180 | # revision. | 196 | # revision. |
90 | 181 | logger = self.useFixture(FakeLogger()) | 197 | logger = self.useFixture(FakeLogger()) |
91 | 182 | build = self.makeCharmRecipeBuild() | 198 | build = self.makeCharmRecipeBuild() |
92 | 183 | charm_lfa = build.getFiles()[0][1] | ||
93 | 184 | self.assertContentEqual([], build.store_upload_jobs) | 199 | self.assertContentEqual([], build.store_upload_jobs) |
94 | 185 | job = CharmhubUploadJob.create(build) | 200 | job = CharmhubUploadJob.create(build) |
95 | 186 | client = FakeCharmhubClient() | 201 | client = FakeCharmhubClient() |
96 | @@ -190,7 +205,8 @@ class TestCharmhubUploadJob(TestCaseWithFactory): | |||
97 | 190 | self.useFixture(ZopeUtilityFixture(client, ICharmhubClient)) | 205 | self.useFixture(ZopeUtilityFixture(client, ICharmhubClient)) |
98 | 191 | with dbuser(config.ICharmhubUploadJobSource.dbuser): | 206 | with dbuser(config.ICharmhubUploadJobSource.dbuser): |
99 | 192 | run_isolated_jobs([job]) | 207 | run_isolated_jobs([job]) |
101 | 193 | self.assertEqual([((charm_lfa,), {})], client.uploadFile.calls) | 208 | self.assertThat( |
102 | 209 | client.uploadFile.calls, FileUploaded("test-charm.charm")) | ||
103 | 194 | self.assertEqual([((build, 1), {})], client.push.calls) | 210 | self.assertEqual([((build, 1), {})], client.push.calls) |
104 | 195 | self.assertEqual( | 211 | self.assertEqual( |
105 | 196 | [((build, self.status_url), {})], client.checkStatus.calls) | 212 | [((build, self.status_url), {})], client.checkStatus.calls) |
106 | @@ -205,7 +221,6 @@ class TestCharmhubUploadJob(TestCaseWithFactory): | |||
107 | 205 | # A failed run sets the store upload status to FAILED. | 221 | # A failed run sets the store upload status to FAILED. |
108 | 206 | logger = self.useFixture(FakeLogger()) | 222 | logger = self.useFixture(FakeLogger()) |
109 | 207 | build = self.makeCharmRecipeBuild() | 223 | build = self.makeCharmRecipeBuild() |
110 | 208 | charm_lfa = build.getFiles()[0][1] | ||
111 | 209 | self.assertContentEqual([], build.store_upload_jobs) | 224 | self.assertContentEqual([], build.store_upload_jobs) |
112 | 210 | job = CharmhubUploadJob.create(build) | 225 | job = CharmhubUploadJob.create(build) |
113 | 211 | client = FakeCharmhubClient() | 226 | client = FakeCharmhubClient() |
114 | @@ -213,7 +228,8 @@ class TestCharmhubUploadJob(TestCaseWithFactory): | |||
115 | 213 | self.useFixture(ZopeUtilityFixture(client, ICharmhubClient)) | 228 | self.useFixture(ZopeUtilityFixture(client, ICharmhubClient)) |
116 | 214 | with dbuser(config.ICharmhubUploadJobSource.dbuser): | 229 | with dbuser(config.ICharmhubUploadJobSource.dbuser): |
117 | 215 | run_isolated_jobs([job]) | 230 | run_isolated_jobs([job]) |
119 | 216 | self.assertEqual([((charm_lfa,), {})], client.uploadFile.calls) | 231 | self.assertThat( |
120 | 232 | client.uploadFile.calls, FileUploaded("test-charm.charm")) | ||
121 | 217 | self.assertEqual([], client.push.calls) | 233 | self.assertEqual([], client.push.calls) |
122 | 218 | self.assertEqual([], client.checkStatus.calls) | 234 | self.assertEqual([], client.checkStatus.calls) |
123 | 219 | self.assertEqual([], client.release.calls) | 235 | self.assertEqual([], client.release.calls) |
124 | @@ -234,7 +250,6 @@ class TestCharmhubUploadJob(TestCaseWithFactory): | |||
125 | 234 | build = self.makeCharmRecipeBuild( | 250 | build = self.makeCharmRecipeBuild( |
126 | 235 | requester=requester_team, name="test-charm", owner=requester_team, | 251 | requester=requester_team, name="test-charm", owner=requester_team, |
127 | 236 | project=project) | 252 | project=project) |
128 | 237 | charm_lfa = build.getFiles()[0][1] | ||
129 | 238 | self.assertContentEqual([], build.store_upload_jobs) | 253 | self.assertContentEqual([], build.store_upload_jobs) |
130 | 239 | job = CharmhubUploadJob.create(build) | 254 | job = CharmhubUploadJob.create(build) |
131 | 240 | client = FakeCharmhubClient() | 255 | client = FakeCharmhubClient() |
132 | @@ -244,7 +259,8 @@ class TestCharmhubUploadJob(TestCaseWithFactory): | |||
133 | 244 | self.useFixture(ZopeUtilityFixture(client, ICharmhubClient)) | 259 | self.useFixture(ZopeUtilityFixture(client, ICharmhubClient)) |
134 | 245 | with dbuser(config.ICharmhubUploadJobSource.dbuser): | 260 | with dbuser(config.ICharmhubUploadJobSource.dbuser): |
135 | 246 | run_isolated_jobs([job]) | 261 | run_isolated_jobs([job]) |
137 | 247 | self.assertEqual([((charm_lfa,), {})], client.uploadFile.calls) | 262 | self.assertThat( |
138 | 263 | client.uploadFile.calls, FileUploaded("test-charm.charm")) | ||
139 | 248 | self.assertEqual([], client.push.calls) | 264 | self.assertEqual([], client.push.calls) |
140 | 249 | self.assertEqual([], client.checkStatus.calls) | 265 | self.assertEqual([], client.checkStatus.calls) |
141 | 250 | self.assertEqual([], client.release.calls) | 266 | self.assertEqual([], client.release.calls) |
142 | @@ -287,7 +303,6 @@ class TestCharmhubUploadJob(TestCaseWithFactory): | |||
143 | 287 | # retried. | 303 | # retried. |
144 | 288 | logger = self.useFixture(FakeLogger()) | 304 | logger = self.useFixture(FakeLogger()) |
145 | 289 | build = self.makeCharmRecipeBuild() | 305 | build = self.makeCharmRecipeBuild() |
146 | 290 | charm_lfa = build.getFiles()[0][1] | ||
147 | 291 | self.assertContentEqual([], build.store_upload_jobs) | 306 | self.assertContentEqual([], build.store_upload_jobs) |
148 | 292 | job = CharmhubUploadJob.create(build) | 307 | job = CharmhubUploadJob.create(build) |
149 | 293 | client = FakeCharmhubClient() | 308 | client = FakeCharmhubClient() |
150 | @@ -296,7 +311,8 @@ class TestCharmhubUploadJob(TestCaseWithFactory): | |||
151 | 296 | self.useFixture(ZopeUtilityFixture(client, ICharmhubClient)) | 311 | self.useFixture(ZopeUtilityFixture(client, ICharmhubClient)) |
152 | 297 | with dbuser(config.ICharmhubUploadJobSource.dbuser): | 312 | with dbuser(config.ICharmhubUploadJobSource.dbuser): |
153 | 298 | run_isolated_jobs([job]) | 313 | run_isolated_jobs([job]) |
155 | 299 | self.assertEqual([((charm_lfa,), {})], client.uploadFile.calls) | 314 | self.assertThat( |
156 | 315 | client.uploadFile.calls, FileUploaded("test-charm.charm")) | ||
157 | 300 | self.assertEqual([], client.push.calls) | 316 | self.assertEqual([], client.push.calls) |
158 | 301 | self.assertEqual([], client.checkStatus.calls) | 317 | self.assertEqual([], client.checkStatus.calls) |
159 | 302 | self.assertEqual([], client.release.calls) | 318 | self.assertEqual([], client.release.calls) |
160 | @@ -316,7 +332,8 @@ class TestCharmhubUploadJob(TestCaseWithFactory): | |||
161 | 316 | client.checkStatus.result = 1 | 332 | client.checkStatus.result = 1 |
162 | 317 | with dbuser(config.ICharmhubUploadJobSource.dbuser): | 333 | with dbuser(config.ICharmhubUploadJobSource.dbuser): |
163 | 318 | run_isolated_jobs([job]) | 334 | run_isolated_jobs([job]) |
165 | 319 | self.assertEqual([((charm_lfa,), {})], client.uploadFile.calls) | 335 | self.assertThat( |
166 | 336 | client.uploadFile.calls, FileUploaded("test-charm.charm")) | ||
167 | 320 | self.assertEqual([((build, 1), {})], client.push.calls) | 337 | self.assertEqual([((build, 1), {})], client.push.calls) |
168 | 321 | self.assertEqual( | 338 | self.assertEqual( |
169 | 322 | [((build, self.status_url), {})], client.checkStatus.calls) | 339 | [((build, self.status_url), {})], client.checkStatus.calls) |
170 | @@ -339,7 +356,6 @@ class TestCharmhubUploadJob(TestCaseWithFactory): | |||
171 | 339 | build = self.makeCharmRecipeBuild( | 356 | build = self.makeCharmRecipeBuild( |
172 | 340 | requester=requester_team, name="test-charm", owner=requester_team, | 357 | requester=requester_team, name="test-charm", owner=requester_team, |
173 | 341 | project=project) | 358 | project=project) |
174 | 342 | charm_lfa = build.getFiles()[0][1] | ||
175 | 343 | self.assertContentEqual([], build.store_upload_jobs) | 359 | self.assertContentEqual([], build.store_upload_jobs) |
176 | 344 | job = CharmhubUploadJob.create(build) | 360 | job = CharmhubUploadJob.create(build) |
177 | 345 | client = FakeCharmhubClient() | 361 | client = FakeCharmhubClient() |
178 | @@ -348,7 +364,8 @@ class TestCharmhubUploadJob(TestCaseWithFactory): | |||
179 | 348 | self.useFixture(ZopeUtilityFixture(client, ICharmhubClient)) | 364 | self.useFixture(ZopeUtilityFixture(client, ICharmhubClient)) |
180 | 349 | with dbuser(config.ICharmhubUploadJobSource.dbuser): | 365 | with dbuser(config.ICharmhubUploadJobSource.dbuser): |
181 | 350 | run_isolated_jobs([job]) | 366 | run_isolated_jobs([job]) |
183 | 351 | self.assertEqual([((charm_lfa,), {})], client.uploadFile.calls) | 367 | self.assertThat( |
184 | 368 | client.uploadFile.calls, FileUploaded("test-charm.charm")) | ||
185 | 352 | self.assertEqual([], client.push.calls) | 369 | self.assertEqual([], client.push.calls) |
186 | 353 | self.assertEqual([], client.checkStatus.calls) | 370 | self.assertEqual([], client.checkStatus.calls) |
187 | 354 | self.assertEqual([], client.release.calls) | 371 | self.assertEqual([], client.release.calls) |
188 | @@ -392,7 +409,6 @@ class TestCharmhubUploadJob(TestCaseWithFactory): | |||
189 | 392 | # charm schedules itself to be retried. | 409 | # charm schedules itself to be retried. |
190 | 393 | logger = self.useFixture(FakeLogger()) | 410 | logger = self.useFixture(FakeLogger()) |
191 | 394 | build = self.makeCharmRecipeBuild() | 411 | build = self.makeCharmRecipeBuild() |
192 | 395 | charm_lfa = build.getFiles()[0][1] | ||
193 | 396 | self.assertContentEqual([], build.store_upload_jobs) | 412 | self.assertContentEqual([], build.store_upload_jobs) |
194 | 397 | job = CharmhubUploadJob.create(build) | 413 | job = CharmhubUploadJob.create(build) |
195 | 398 | client = FakeCharmhubClient() | 414 | client = FakeCharmhubClient() |
196 | @@ -402,7 +418,8 @@ class TestCharmhubUploadJob(TestCaseWithFactory): | |||
197 | 402 | self.useFixture(ZopeUtilityFixture(client, ICharmhubClient)) | 418 | self.useFixture(ZopeUtilityFixture(client, ICharmhubClient)) |
198 | 403 | with dbuser(config.ICharmhubUploadJobSource.dbuser): | 419 | with dbuser(config.ICharmhubUploadJobSource.dbuser): |
199 | 404 | run_isolated_jobs([job]) | 420 | run_isolated_jobs([job]) |
201 | 405 | self.assertEqual([((charm_lfa,), {})], client.uploadFile.calls) | 421 | self.assertThat( |
202 | 422 | client.uploadFile.calls, FileUploaded("test-charm.charm")) | ||
203 | 406 | self.assertEqual([((build, 2), {})], client.push.calls) | 423 | self.assertEqual([((build, 2), {})], client.push.calls) |
204 | 407 | self.assertEqual( | 424 | self.assertEqual( |
205 | 408 | [((build, self.status_url), {})], client.checkStatus.calls) | 425 | [((build, self.status_url), {})], client.checkStatus.calls) |
206 | @@ -445,7 +462,6 @@ class TestCharmhubUploadJob(TestCaseWithFactory): | |||
207 | 445 | build = self.makeCharmRecipeBuild( | 462 | build = self.makeCharmRecipeBuild( |
208 | 446 | requester=requester_team, name="test-charm", owner=requester_team, | 463 | requester=requester_team, name="test-charm", owner=requester_team, |
209 | 447 | project=project) | 464 | project=project) |
210 | 448 | charm_lfa = build.getFiles()[0][1] | ||
211 | 449 | self.assertContentEqual([], build.store_upload_jobs) | 465 | self.assertContentEqual([], build.store_upload_jobs) |
212 | 450 | job = CharmhubUploadJob.create(build) | 466 | job = CharmhubUploadJob.create(build) |
213 | 451 | client = FakeCharmhubClient() | 467 | client = FakeCharmhubClient() |
214 | @@ -456,7 +472,8 @@ class TestCharmhubUploadJob(TestCaseWithFactory): | |||
215 | 456 | self.useFixture(ZopeUtilityFixture(client, ICharmhubClient)) | 472 | self.useFixture(ZopeUtilityFixture(client, ICharmhubClient)) |
216 | 457 | with dbuser(config.ICharmhubUploadJobSource.dbuser): | 473 | with dbuser(config.ICharmhubUploadJobSource.dbuser): |
217 | 458 | run_isolated_jobs([job]) | 474 | run_isolated_jobs([job]) |
219 | 459 | self.assertEqual([((charm_lfa,), {})], client.uploadFile.calls) | 475 | self.assertThat( |
220 | 476 | client.uploadFile.calls, FileUploaded("test-charm.charm")) | ||
221 | 460 | self.assertEqual([((build, 2), {})], client.push.calls) | 477 | self.assertEqual([((build, 2), {})], client.push.calls) |
222 | 461 | self.assertEqual( | 478 | self.assertEqual( |
223 | 462 | [((build, self.status_url), {})], client.checkStatus.calls) | 479 | [((build, self.status_url), {})], client.checkStatus.calls) |
224 | @@ -498,7 +515,6 @@ class TestCharmhubUploadJob(TestCaseWithFactory): | |||
225 | 498 | # channels does so. | 515 | # channels does so. |
226 | 499 | logger = self.useFixture(FakeLogger()) | 516 | logger = self.useFixture(FakeLogger()) |
227 | 500 | build = self.makeCharmRecipeBuild(store_channels=["stable", "edge"]) | 517 | build = self.makeCharmRecipeBuild(store_channels=["stable", "edge"]) |
228 | 501 | charm_lfa = build.getFiles()[0][1] | ||
229 | 502 | self.assertContentEqual([], build.store_upload_jobs) | 518 | self.assertContentEqual([], build.store_upload_jobs) |
230 | 503 | job = CharmhubUploadJob.create(build) | 519 | job = CharmhubUploadJob.create(build) |
231 | 504 | client = FakeCharmhubClient() | 520 | client = FakeCharmhubClient() |
232 | @@ -508,7 +524,8 @@ class TestCharmhubUploadJob(TestCaseWithFactory): | |||
233 | 508 | self.useFixture(ZopeUtilityFixture(client, ICharmhubClient)) | 524 | self.useFixture(ZopeUtilityFixture(client, ICharmhubClient)) |
234 | 509 | with dbuser(config.ICharmhubUploadJobSource.dbuser): | 525 | with dbuser(config.ICharmhubUploadJobSource.dbuser): |
235 | 510 | run_isolated_jobs([job]) | 526 | run_isolated_jobs([job]) |
237 | 511 | self.assertEqual([((charm_lfa,), {})], client.uploadFile.calls) | 527 | self.assertThat( |
238 | 528 | client.uploadFile.calls, FileUploaded("test-charm.charm")) | ||
239 | 512 | self.assertEqual([((build, 1), {})], client.push.calls) | 529 | self.assertEqual([((build, 1), {})], client.push.calls) |
240 | 513 | self.assertEqual( | 530 | self.assertEqual( |
241 | 514 | [((build, self.status_url), {})], client.checkStatus.calls) | 531 | [((build, self.status_url), {})], client.checkStatus.calls) |
242 | @@ -530,7 +547,6 @@ class TestCharmhubUploadJob(TestCaseWithFactory): | |||
243 | 530 | build = self.makeCharmRecipeBuild( | 547 | build = self.makeCharmRecipeBuild( |
244 | 531 | requester=requester_team, name="test-charm", owner=requester_team, | 548 | requester=requester_team, name="test-charm", owner=requester_team, |
245 | 532 | project=project, store_channels=["stable", "edge"]) | 549 | project=project, store_channels=["stable", "edge"]) |
246 | 533 | charm_lfa = build.getFiles()[0][1] | ||
247 | 534 | self.assertContentEqual([], build.store_upload_jobs) | 550 | self.assertContentEqual([], build.store_upload_jobs) |
248 | 535 | job = CharmhubUploadJob.create(build) | 551 | job = CharmhubUploadJob.create(build) |
249 | 536 | client = FakeCharmhubClient() | 552 | client = FakeCharmhubClient() |
250 | @@ -541,7 +557,8 @@ class TestCharmhubUploadJob(TestCaseWithFactory): | |||
251 | 541 | self.useFixture(ZopeUtilityFixture(client, ICharmhubClient)) | 557 | self.useFixture(ZopeUtilityFixture(client, ICharmhubClient)) |
252 | 542 | with dbuser(config.ICharmhubUploadJobSource.dbuser): | 558 | with dbuser(config.ICharmhubUploadJobSource.dbuser): |
253 | 543 | JobRunner([job]).runAll() | 559 | JobRunner([job]).runAll() |
255 | 544 | self.assertEqual([((charm_lfa,), {})], client.uploadFile.calls) | 560 | self.assertThat( |
256 | 561 | client.uploadFile.calls, FileUploaded("test-charm.charm")) | ||
257 | 545 | self.assertEqual([((build, 1), {})], client.push.calls) | 562 | self.assertEqual([((build, 1), {})], client.push.calls) |
258 | 546 | self.assertEqual( | 563 | self.assertEqual( |
259 | 547 | [((build, self.status_url), {})], client.checkStatus.calls) | 564 | [((build, self.status_url), {})], client.checkStatus.calls) |
260 | diff --git a/lib/lp/snappy/model/snapbuildjob.py b/lib/lp/snappy/model/snapbuildjob.py | |||
261 | index 8e79973..dbf43e1 100644 | |||
262 | --- a/lib/lp/snappy/model/snapbuildjob.py | |||
263 | +++ b/lib/lp/snappy/model/snapbuildjob.py | |||
264 | @@ -345,13 +345,16 @@ class SnapStoreUploadJob(SnapBuildJobDerived): | |||
265 | 345 | client = getUtility(ISnapStoreClient) | 345 | client = getUtility(ISnapStoreClient) |
266 | 346 | try: | 346 | try: |
267 | 347 | try: | 347 | try: |
270 | 348 | lfa = next((row[1] for row in self.snapbuild.getFiles()), None) | 348 | snap_lfa = next( |
271 | 349 | if lfa is None: | 349 | (lfa for _, lfa, _ in self.snapbuild.getFiles() |
272 | 350 | if lfa.filename.endswith(".snap")), | ||
273 | 351 | None) | ||
274 | 352 | if snap_lfa is None: | ||
275 | 350 | # Nothing to do. | 353 | # Nothing to do. |
276 | 351 | self.error_message = None | 354 | self.error_message = None |
277 | 352 | return | 355 | return |
278 | 353 | if "upload_id" not in self.store_metadata: | 356 | if "upload_id" not in self.store_metadata: |
280 | 354 | self.upload_id = client.uploadFile(lfa) | 357 | self.upload_id = client.uploadFile(snap_lfa) |
281 | 355 | # We made progress, so reset attempt_count. | 358 | # We made progress, so reset attempt_count. |
282 | 356 | self.attempt_count = 1 | 359 | self.attempt_count = 1 |
283 | 357 | if "status_url" not in self.store_metadata: | 360 | if "status_url" not in self.store_metadata: |
284 | diff --git a/lib/lp/snappy/tests/test_snapbuildjob.py b/lib/lp/snappy/tests/test_snapbuildjob.py | |||
285 | index 1c1f316..68eef98 100644 | |||
286 | --- a/lib/lp/snappy/tests/test_snapbuildjob.py | |||
287 | +++ b/lib/lp/snappy/tests/test_snapbuildjob.py | |||
288 | @@ -79,6 +79,19 @@ class FakeSnapStoreClient: | |||
289 | 79 | self.listChannels = FakeMethod(result=[]) | 79 | self.listChannels = FakeMethod(result=[]) |
290 | 80 | 80 | ||
291 | 81 | 81 | ||
292 | 82 | class FileUploaded(MatchesListwise): | ||
293 | 83 | |||
294 | 84 | def __init__(self, filename): | ||
295 | 85 | super().__init__([ | ||
296 | 86 | MatchesListwise([ | ||
297 | 87 | MatchesListwise([ | ||
298 | 88 | MatchesStructure.byEquality(filename=filename), | ||
299 | 89 | ]), | ||
300 | 90 | MatchesDict({}), | ||
301 | 91 | ]), | ||
302 | 92 | ]) | ||
303 | 93 | |||
304 | 94 | |||
305 | 82 | class TestSnapBuildJob(TestCaseWithFactory): | 95 | class TestSnapBuildJob(TestCaseWithFactory): |
306 | 83 | 96 | ||
307 | 84 | layer = DatabaseFunctionalLayer | 97 | layer = DatabaseFunctionalLayer |
308 | @@ -125,6 +138,10 @@ class TestSnapStoreUploadJob(TestCaseWithFactory): | |||
309 | 125 | snapbuild = self.factory.makeSnapBuild( | 138 | snapbuild = self.factory.makeSnapBuild( |
310 | 126 | builder=self.factory.makeBuilder(), **kwargs) | 139 | builder=self.factory.makeBuilder(), **kwargs) |
311 | 127 | snapbuild.updateStatus(BuildStatus.FULLYBUILT) | 140 | snapbuild.updateStatus(BuildStatus.FULLYBUILT) |
312 | 141 | irrelevant_lfa = self.factory.makeLibraryFileAlias( | ||
313 | 142 | filename="000-irrelevant.txt", content=b"irrelevant file") | ||
314 | 143 | self.factory.makeSnapFile( | ||
315 | 144 | snapbuild=snapbuild, libraryfile=irrelevant_lfa) | ||
316 | 128 | snap_lfa = self.factory.makeLibraryFileAlias( | 145 | snap_lfa = self.factory.makeLibraryFileAlias( |
317 | 129 | filename="test-snap.snap", content=b"dummy snap content") | 146 | filename="test-snap.snap", content=b"dummy snap content") |
318 | 130 | self.factory.makeSnapFile(snapbuild=snapbuild, libraryfile=snap_lfa) | 147 | self.factory.makeSnapFile(snapbuild=snapbuild, libraryfile=snap_lfa) |
319 | @@ -169,7 +186,6 @@ class TestSnapStoreUploadJob(TestCaseWithFactory): | |||
320 | 169 | # and revision. | 186 | # and revision. |
321 | 170 | logger = self.useFixture(FakeLogger()) | 187 | logger = self.useFixture(FakeLogger()) |
322 | 171 | snapbuild = self.makeSnapBuild() | 188 | snapbuild = self.makeSnapBuild() |
323 | 172 | snap_lfa = snapbuild.getFiles()[0][1] | ||
324 | 173 | self.assertContentEqual([], snapbuild.store_upload_jobs) | 189 | self.assertContentEqual([], snapbuild.store_upload_jobs) |
325 | 174 | job = SnapStoreUploadJob.create(snapbuild) | 190 | job = SnapStoreUploadJob.create(snapbuild) |
326 | 175 | client = FakeSnapStoreClient() | 191 | client = FakeSnapStoreClient() |
327 | @@ -179,7 +195,8 @@ class TestSnapStoreUploadJob(TestCaseWithFactory): | |||
328 | 179 | self.useFixture(ZopeUtilityFixture(client, ISnapStoreClient)) | 195 | self.useFixture(ZopeUtilityFixture(client, ISnapStoreClient)) |
329 | 180 | with dbuser(config.ISnapStoreUploadJobSource.dbuser): | 196 | with dbuser(config.ISnapStoreUploadJobSource.dbuser): |
330 | 181 | run_isolated_jobs([job]) | 197 | run_isolated_jobs([job]) |
332 | 182 | self.assertEqual([((snap_lfa,), {})], client.uploadFile.calls) | 198 | self.assertThat( |
333 | 199 | client.uploadFile.calls, FileUploaded("test-snap.snap")) | ||
334 | 183 | self.assertEqual([((snapbuild, 1), {})], client.push.calls) | 200 | self.assertEqual([((snapbuild, 1), {})], client.push.calls) |
335 | 184 | self.assertEqual([((self.status_url,), {})], client.checkStatus.calls) | 201 | self.assertEqual([((self.status_url,), {})], client.checkStatus.calls) |
336 | 185 | self.assertContentEqual([job], snapbuild.store_upload_jobs) | 202 | self.assertContentEqual([job], snapbuild.store_upload_jobs) |
337 | @@ -196,7 +213,6 @@ class TestSnapStoreUploadJob(TestCaseWithFactory): | |||
338 | 196 | # A failed run sets the store upload status to FAILED. | 213 | # A failed run sets the store upload status to FAILED. |
339 | 197 | logger = self.useFixture(FakeLogger()) | 214 | logger = self.useFixture(FakeLogger()) |
340 | 198 | snapbuild = self.makeSnapBuild() | 215 | snapbuild = self.makeSnapBuild() |
341 | 199 | snap_lfa = snapbuild.getFiles()[0][1] | ||
342 | 200 | self.assertContentEqual([], snapbuild.store_upload_jobs) | 216 | self.assertContentEqual([], snapbuild.store_upload_jobs) |
343 | 201 | job = SnapStoreUploadJob.create(snapbuild) | 217 | job = SnapStoreUploadJob.create(snapbuild) |
344 | 202 | client = FakeSnapStoreClient() | 218 | client = FakeSnapStoreClient() |
345 | @@ -204,7 +220,8 @@ class TestSnapStoreUploadJob(TestCaseWithFactory): | |||
346 | 204 | self.useFixture(ZopeUtilityFixture(client, ISnapStoreClient)) | 220 | self.useFixture(ZopeUtilityFixture(client, ISnapStoreClient)) |
347 | 205 | with dbuser(config.ISnapStoreUploadJobSource.dbuser): | 221 | with dbuser(config.ISnapStoreUploadJobSource.dbuser): |
348 | 206 | run_isolated_jobs([job]) | 222 | run_isolated_jobs([job]) |
350 | 207 | self.assertEqual([((snap_lfa,), {})], client.uploadFile.calls) | 223 | self.assertThat( |
351 | 224 | client.uploadFile.calls, FileUploaded("test-snap.snap")) | ||
352 | 208 | self.assertEqual([], client.push.calls) | 225 | self.assertEqual([], client.push.calls) |
353 | 209 | self.assertEqual([], client.checkStatus.calls) | 226 | self.assertEqual([], client.checkStatus.calls) |
354 | 210 | self.assertContentEqual([job], snapbuild.store_upload_jobs) | 227 | self.assertContentEqual([job], snapbuild.store_upload_jobs) |
355 | @@ -225,7 +242,6 @@ class TestSnapStoreUploadJob(TestCaseWithFactory): | |||
356 | 225 | owner=requester, name="requester-team", members=[requester]) | 242 | owner=requester, name="requester-team", members=[requester]) |
357 | 226 | snapbuild = self.makeSnapBuild( | 243 | snapbuild = self.makeSnapBuild( |
358 | 227 | requester=requester_team, name="test-snap", owner=requester_team) | 244 | requester=requester_team, name="test-snap", owner=requester_team) |
359 | 228 | snap_lfa = snapbuild.getFiles()[0][1] | ||
360 | 229 | self.assertContentEqual([], snapbuild.store_upload_jobs) | 245 | self.assertContentEqual([], snapbuild.store_upload_jobs) |
361 | 230 | job = SnapStoreUploadJob.create(snapbuild) | 246 | job = SnapStoreUploadJob.create(snapbuild) |
362 | 231 | client = FakeSnapStoreClient() | 247 | client = FakeSnapStoreClient() |
363 | @@ -235,7 +251,8 @@ class TestSnapStoreUploadJob(TestCaseWithFactory): | |||
364 | 235 | self.useFixture(ZopeUtilityFixture(client, ISnapStoreClient)) | 251 | self.useFixture(ZopeUtilityFixture(client, ISnapStoreClient)) |
365 | 236 | with dbuser(config.ISnapStoreUploadJobSource.dbuser): | 252 | with dbuser(config.ISnapStoreUploadJobSource.dbuser): |
366 | 237 | run_isolated_jobs([job]) | 253 | run_isolated_jobs([job]) |
368 | 238 | self.assertEqual([((snap_lfa,), {})], client.uploadFile.calls) | 254 | self.assertThat( |
369 | 255 | client.uploadFile.calls, FileUploaded("test-snap.snap")) | ||
370 | 239 | self.assertEqual([((snapbuild, 1), {})], client.push.calls) | 256 | self.assertEqual([((snapbuild, 1), {})], client.push.calls) |
371 | 240 | self.assertEqual([], client.checkStatus.calls) | 257 | self.assertEqual([], client.checkStatus.calls) |
372 | 241 | self.assertContentEqual([job], snapbuild.store_upload_jobs) | 258 | self.assertContentEqual([job], snapbuild.store_upload_jobs) |
373 | @@ -277,7 +294,6 @@ class TestSnapStoreUploadJob(TestCaseWithFactory): | |||
374 | 277 | # retried. | 294 | # retried. |
375 | 278 | logger = self.useFixture(FakeLogger()) | 295 | logger = self.useFixture(FakeLogger()) |
376 | 279 | snapbuild = self.makeSnapBuild() | 296 | snapbuild = self.makeSnapBuild() |
377 | 280 | snap_lfa = snapbuild.getFiles()[0][1] | ||
378 | 281 | self.assertContentEqual([], snapbuild.store_upload_jobs) | 297 | self.assertContentEqual([], snapbuild.store_upload_jobs) |
379 | 282 | job = SnapStoreUploadJob.create(snapbuild) | 298 | job = SnapStoreUploadJob.create(snapbuild) |
380 | 283 | client = FakeSnapStoreClient() | 299 | client = FakeSnapStoreClient() |
381 | @@ -286,7 +302,8 @@ class TestSnapStoreUploadJob(TestCaseWithFactory): | |||
382 | 286 | self.useFixture(ZopeUtilityFixture(client, ISnapStoreClient)) | 302 | self.useFixture(ZopeUtilityFixture(client, ISnapStoreClient)) |
383 | 287 | with dbuser(config.ISnapStoreUploadJobSource.dbuser): | 303 | with dbuser(config.ISnapStoreUploadJobSource.dbuser): |
384 | 288 | run_isolated_jobs([job]) | 304 | run_isolated_jobs([job]) |
386 | 289 | self.assertEqual([((snap_lfa,), {})], client.uploadFile.calls) | 305 | self.assertThat( |
387 | 306 | client.uploadFile.calls, FileUploaded("test-snap.snap")) | ||
388 | 290 | self.assertEqual([], client.push.calls) | 307 | self.assertEqual([], client.push.calls) |
389 | 291 | self.assertEqual([], client.checkStatus.calls) | 308 | self.assertEqual([], client.checkStatus.calls) |
390 | 292 | self.assertContentEqual([job], snapbuild.store_upload_jobs) | 309 | self.assertContentEqual([job], snapbuild.store_upload_jobs) |
391 | @@ -308,7 +325,8 @@ class TestSnapStoreUploadJob(TestCaseWithFactory): | |||
392 | 308 | client.checkStatus.result = (self.store_url, 1) | 325 | client.checkStatus.result = (self.store_url, 1) |
393 | 309 | with dbuser(config.ISnapStoreUploadJobSource.dbuser): | 326 | with dbuser(config.ISnapStoreUploadJobSource.dbuser): |
394 | 310 | run_isolated_jobs([job]) | 327 | run_isolated_jobs([job]) |
396 | 311 | self.assertEqual([((snap_lfa,), {})], client.uploadFile.calls) | 328 | self.assertThat( |
397 | 329 | client.uploadFile.calls, FileUploaded("test-snap.snap")) | ||
398 | 312 | self.assertEqual([((snapbuild, 1), {})], client.push.calls) | 330 | self.assertEqual([((snapbuild, 1), {})], client.push.calls) |
399 | 313 | self.assertEqual([((self.status_url,), {})], client.checkStatus.calls) | 331 | self.assertEqual([((self.status_url,), {})], client.checkStatus.calls) |
400 | 314 | self.assertContentEqual([job], snapbuild.store_upload_jobs) | 332 | self.assertContentEqual([job], snapbuild.store_upload_jobs) |
401 | @@ -331,7 +349,6 @@ class TestSnapStoreUploadJob(TestCaseWithFactory): | |||
402 | 331 | owner=requester, name="requester-team", members=[requester]) | 349 | owner=requester, name="requester-team", members=[requester]) |
403 | 332 | snapbuild = self.makeSnapBuild( | 350 | snapbuild = self.makeSnapBuild( |
404 | 333 | requester=requester_team, name="test-snap", owner=requester_team) | 351 | requester=requester_team, name="test-snap", owner=requester_team) |
405 | 334 | snap_lfa = snapbuild.getFiles()[0][1] | ||
406 | 335 | self.assertContentEqual([], snapbuild.store_upload_jobs) | 352 | self.assertContentEqual([], snapbuild.store_upload_jobs) |
407 | 336 | job = SnapStoreUploadJob.create(snapbuild) | 353 | job = SnapStoreUploadJob.create(snapbuild) |
408 | 337 | client = FakeSnapStoreClient() | 354 | client = FakeSnapStoreClient() |
409 | @@ -340,7 +357,8 @@ class TestSnapStoreUploadJob(TestCaseWithFactory): | |||
410 | 340 | self.useFixture(ZopeUtilityFixture(client, ISnapStoreClient)) | 357 | self.useFixture(ZopeUtilityFixture(client, ISnapStoreClient)) |
411 | 341 | with dbuser(config.ISnapStoreUploadJobSource.dbuser): | 358 | with dbuser(config.ISnapStoreUploadJobSource.dbuser): |
412 | 342 | run_isolated_jobs([job]) | 359 | run_isolated_jobs([job]) |
414 | 343 | self.assertEqual([((snap_lfa,), {})], client.uploadFile.calls) | 360 | self.assertThat( |
415 | 361 | client.uploadFile.calls, FileUploaded("test-snap.snap")) | ||
416 | 344 | self.assertEqual([((snapbuild, 1), {})], client.push.calls) | 362 | self.assertEqual([((snapbuild, 1), {})], client.push.calls) |
417 | 345 | self.assertEqual([], client.checkStatus.calls) | 363 | self.assertEqual([], client.checkStatus.calls) |
418 | 346 | self.assertContentEqual([job], snapbuild.store_upload_jobs) | 364 | self.assertContentEqual([job], snapbuild.store_upload_jobs) |
419 | @@ -387,7 +405,6 @@ class TestSnapStoreUploadJob(TestCaseWithFactory): | |||
420 | 387 | owner=requester, name="requester-team", members=[requester]) | 405 | owner=requester, name="requester-team", members=[requester]) |
421 | 388 | snapbuild = self.makeSnapBuild( | 406 | snapbuild = self.makeSnapBuild( |
422 | 389 | requester=requester_team, name="test-snap", owner=requester_team) | 407 | requester=requester_team, name="test-snap", owner=requester_team) |
423 | 390 | snap_lfa = snapbuild.getFiles()[0][1] | ||
424 | 391 | self.assertContentEqual([], snapbuild.store_upload_jobs) | 408 | self.assertContentEqual([], snapbuild.store_upload_jobs) |
425 | 392 | job = SnapStoreUploadJob.create(snapbuild) | 409 | job = SnapStoreUploadJob.create(snapbuild) |
426 | 393 | client = FakeSnapStoreClient() | 410 | client = FakeSnapStoreClient() |
427 | @@ -396,7 +413,8 @@ class TestSnapStoreUploadJob(TestCaseWithFactory): | |||
428 | 396 | self.useFixture(ZopeUtilityFixture(client, ISnapStoreClient)) | 413 | self.useFixture(ZopeUtilityFixture(client, ISnapStoreClient)) |
429 | 397 | with dbuser(config.ISnapStoreUploadJobSource.dbuser): | 414 | with dbuser(config.ISnapStoreUploadJobSource.dbuser): |
430 | 398 | run_isolated_jobs([job]) | 415 | run_isolated_jobs([job]) |
432 | 399 | self.assertEqual([((snap_lfa,), {})], client.uploadFile.calls) | 416 | self.assertThat( |
433 | 417 | client.uploadFile.calls, FileUploaded("test-snap.snap")) | ||
434 | 400 | self.assertEqual([], client.push.calls) | 418 | self.assertEqual([], client.push.calls) |
435 | 401 | self.assertEqual([], client.checkStatus.calls) | 419 | self.assertEqual([], client.checkStatus.calls) |
436 | 402 | self.assertContentEqual([job], snapbuild.store_upload_jobs) | 420 | self.assertContentEqual([job], snapbuild.store_upload_jobs) |
437 | @@ -441,7 +459,6 @@ class TestSnapStoreUploadJob(TestCaseWithFactory): | |||
438 | 441 | # package schedules itself to be retried. | 459 | # package schedules itself to be retried. |
439 | 442 | logger = self.useFixture(FakeLogger()) | 460 | logger = self.useFixture(FakeLogger()) |
440 | 443 | snapbuild = self.makeSnapBuild() | 461 | snapbuild = self.makeSnapBuild() |
441 | 444 | snap_lfa = snapbuild.getFiles()[0][1] | ||
442 | 445 | self.assertContentEqual([], snapbuild.store_upload_jobs) | 462 | self.assertContentEqual([], snapbuild.store_upload_jobs) |
443 | 446 | job = SnapStoreUploadJob.create(snapbuild) | 463 | job = SnapStoreUploadJob.create(snapbuild) |
444 | 447 | client = FakeSnapStoreClient() | 464 | client = FakeSnapStoreClient() |
445 | @@ -451,7 +468,8 @@ class TestSnapStoreUploadJob(TestCaseWithFactory): | |||
446 | 451 | self.useFixture(ZopeUtilityFixture(client, ISnapStoreClient)) | 468 | self.useFixture(ZopeUtilityFixture(client, ISnapStoreClient)) |
447 | 452 | with dbuser(config.ISnapStoreUploadJobSource.dbuser): | 469 | with dbuser(config.ISnapStoreUploadJobSource.dbuser): |
448 | 453 | run_isolated_jobs([job]) | 470 | run_isolated_jobs([job]) |
450 | 454 | self.assertEqual([((snap_lfa,), {})], client.uploadFile.calls) | 471 | self.assertThat( |
451 | 472 | client.uploadFile.calls, FileUploaded("test-snap.snap")) | ||
452 | 455 | self.assertEqual([((snapbuild, 2), {})], client.push.calls) | 473 | self.assertEqual([((snapbuild, 2), {})], client.push.calls) |
453 | 456 | self.assertEqual([((self.status_url,), {})], client.checkStatus.calls) | 474 | self.assertEqual([((self.status_url,), {})], client.checkStatus.calls) |
454 | 457 | self.assertContentEqual([job], snapbuild.store_upload_jobs) | 475 | self.assertContentEqual([job], snapbuild.store_upload_jobs) |
455 | @@ -495,7 +513,6 @@ class TestSnapStoreUploadJob(TestCaseWithFactory): | |||
456 | 495 | owner=requester, name="requester-team", members=[requester]) | 513 | owner=requester, name="requester-team", members=[requester]) |
457 | 496 | snapbuild = self.makeSnapBuild( | 514 | snapbuild = self.makeSnapBuild( |
458 | 497 | requester=requester_team, name="test-snap", owner=requester_team) | 515 | requester=requester_team, name="test-snap", owner=requester_team) |
459 | 498 | snap_lfa = snapbuild.getFiles()[0][1] | ||
460 | 499 | self.assertContentEqual([], snapbuild.store_upload_jobs) | 516 | self.assertContentEqual([], snapbuild.store_upload_jobs) |
461 | 500 | job = SnapStoreUploadJob.create(snapbuild) | 517 | job = SnapStoreUploadJob.create(snapbuild) |
462 | 501 | client = FakeSnapStoreClient() | 518 | client = FakeSnapStoreClient() |
463 | @@ -509,7 +526,8 @@ class TestSnapStoreUploadJob(TestCaseWithFactory): | |||
464 | 509 | self.useFixture(ZopeUtilityFixture(client, ISnapStoreClient)) | 526 | self.useFixture(ZopeUtilityFixture(client, ISnapStoreClient)) |
465 | 510 | with dbuser(config.ISnapStoreUploadJobSource.dbuser): | 527 | with dbuser(config.ISnapStoreUploadJobSource.dbuser): |
466 | 511 | run_isolated_jobs([job]) | 528 | run_isolated_jobs([job]) |
468 | 512 | self.assertEqual([((snap_lfa,), {})], client.uploadFile.calls) | 529 | self.assertThat( |
469 | 530 | client.uploadFile.calls, FileUploaded("test-snap.snap")) | ||
470 | 513 | self.assertEqual([((snapbuild, 2), {})], client.push.calls) | 531 | self.assertEqual([((snapbuild, 2), {})], client.push.calls) |
471 | 514 | self.assertEqual([((self.status_url,), {})], client.checkStatus.calls) | 532 | self.assertEqual([((self.status_url,), {})], client.checkStatus.calls) |
472 | 515 | self.assertContentEqual([job], snapbuild.store_upload_jobs) | 533 | self.assertContentEqual([job], snapbuild.store_upload_jobs) |
473 | @@ -555,7 +573,6 @@ class TestSnapStoreUploadJob(TestCaseWithFactory): | |||
474 | 555 | # URL or revision. | 573 | # URL or revision. |
475 | 556 | logger = self.useFixture(FakeLogger()) | 574 | logger = self.useFixture(FakeLogger()) |
476 | 557 | snapbuild = self.makeSnapBuild() | 575 | snapbuild = self.makeSnapBuild() |
477 | 558 | snap_lfa = snapbuild.getFiles()[0][1] | ||
478 | 559 | self.assertContentEqual([], snapbuild.store_upload_jobs) | 576 | self.assertContentEqual([], snapbuild.store_upload_jobs) |
479 | 560 | job = SnapStoreUploadJob.create(snapbuild) | 577 | job = SnapStoreUploadJob.create(snapbuild) |
480 | 561 | client = FakeSnapStoreClient() | 578 | client = FakeSnapStoreClient() |
481 | @@ -565,7 +582,8 @@ class TestSnapStoreUploadJob(TestCaseWithFactory): | |||
482 | 565 | self.useFixture(ZopeUtilityFixture(client, ISnapStoreClient)) | 582 | self.useFixture(ZopeUtilityFixture(client, ISnapStoreClient)) |
483 | 566 | with dbuser(config.ISnapStoreUploadJobSource.dbuser): | 583 | with dbuser(config.ISnapStoreUploadJobSource.dbuser): |
484 | 567 | run_isolated_jobs([job]) | 584 | run_isolated_jobs([job]) |
486 | 568 | self.assertEqual([((snap_lfa,), {})], client.uploadFile.calls) | 585 | self.assertThat( |
487 | 586 | client.uploadFile.calls, FileUploaded("test-snap.snap")) | ||
488 | 569 | self.assertEqual([((snapbuild, 1), {})], client.push.calls) | 587 | self.assertEqual([((snapbuild, 1), {})], client.push.calls) |
489 | 570 | self.assertEqual([((self.status_url,), {})], client.checkStatus.calls) | 588 | self.assertEqual([((self.status_url,), {})], client.checkStatus.calls) |
490 | 571 | self.assertContentEqual([job], snapbuild.store_upload_jobs) | 589 | self.assertContentEqual([job], snapbuild.store_upload_jobs) |
491 | @@ -583,7 +601,6 @@ class TestSnapStoreUploadJob(TestCaseWithFactory): | |||
492 | 583 | # channels does so. | 601 | # channels does so. |
493 | 584 | logger = self.useFixture(FakeLogger()) | 602 | logger = self.useFixture(FakeLogger()) |
494 | 585 | snapbuild = self.makeSnapBuild(store_channels=["stable", "edge"]) | 603 | snapbuild = self.makeSnapBuild(store_channels=["stable", "edge"]) |
495 | 586 | snap_lfa = snapbuild.getFiles()[0][1] | ||
496 | 587 | self.assertContentEqual([], snapbuild.store_upload_jobs) | 604 | self.assertContentEqual([], snapbuild.store_upload_jobs) |
497 | 588 | job = SnapStoreUploadJob.create(snapbuild) | 605 | job = SnapStoreUploadJob.create(snapbuild) |
498 | 589 | client = FakeSnapStoreClient() | 606 | client = FakeSnapStoreClient() |
499 | @@ -593,7 +610,8 @@ class TestSnapStoreUploadJob(TestCaseWithFactory): | |||
500 | 593 | self.useFixture(ZopeUtilityFixture(client, ISnapStoreClient)) | 610 | self.useFixture(ZopeUtilityFixture(client, ISnapStoreClient)) |
501 | 594 | with dbuser(config.ISnapStoreUploadJobSource.dbuser): | 611 | with dbuser(config.ISnapStoreUploadJobSource.dbuser): |
502 | 595 | run_isolated_jobs([job]) | 612 | run_isolated_jobs([job]) |
504 | 596 | self.assertEqual([((snap_lfa,), {})], client.uploadFile.calls) | 613 | self.assertThat( |
505 | 614 | client.uploadFile.calls, FileUploaded("test-snap.snap")) | ||
506 | 597 | self.assertEqual([((snapbuild, 1), {})], client.push.calls) | 615 | self.assertEqual([((snapbuild, 1), {})], client.push.calls) |
507 | 598 | self.assertEqual([((self.status_url,), {})], client.checkStatus.calls) | 616 | self.assertEqual([((self.status_url,), {})], client.checkStatus.calls) |
508 | 599 | self.assertContentEqual([job], snapbuild.store_upload_jobs) | 617 | self.assertContentEqual([job], snapbuild.store_upload_jobs) |
Looks good!