Merge ~cjwatson/launchpad:snap-charm-filter-uploads into launchpad: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)
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://code.launchpad.net/~cjwatson/launchpad/+git/launchpad/+merge/408582).

To post a comment you must log in.
Revision history for this message
Cristian Gonzalez (cristiangsp) wrote :

Looks good!

review: Approve

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
diff --git a/lib/lp/charms/model/charmhubclient.py b/lib/lp/charms/model/charmhubclient.py
index 33ea281..1ac2f6c 100644
--- a/lib/lp/charms/model/charmhubclient.py
+++ b/lib/lp/charms/model/charmhubclient.py
@@ -210,16 +210,6 @@ class CharmhubClient:
210 timeline_action.finish()210 timeline_action.finish()
211211
212 @classmethod212 @classmethod
213 def upload(cls, build):
214 """See `ICharmhubClient`."""
215 assert build.recipe.can_upload_to_store
216 for _, lfa, _ in build.getFiles():
217 if not lfa.filename.endswith(".charm"):
218 continue
219 upload_id = cls.uploadFile(lfa)
220 return cls._push(build, upload_id)
221
222 @classmethod
223 def checkStatus(cls, build, status_url):213 def checkStatus(cls, build, status_url):
224 """See `ICharmhubClient`."""214 """See `ICharmhubClient`."""
225 status_url = urlappend(215 status_url = urlappend(
diff --git a/lib/lp/charms/model/charmrecipebuildjob.py b/lib/lp/charms/model/charmrecipebuildjob.py
index cfe86a6..a0f7993 100644
--- a/lib/lp/charms/model/charmrecipebuildjob.py
+++ b/lib/lp/charms/model/charmrecipebuildjob.py
@@ -323,13 +323,16 @@ class CharmhubUploadJob(CharmRecipeBuildJobDerived):
323 client = getUtility(ICharmhubClient)323 client = getUtility(ICharmhubClient)
324 try:324 try:
325 try:325 try:
326 lfa = next((row[1] for row in self.build.getFiles()), None)326 charm_lfa = next(
327 if lfa is None:327 (lfa for _, lfa, _ in self.build.getFiles()
328 if lfa.filename.endswith(".charm")),
329 None)
330 if charm_lfa is None:
328 # Nothing to do.331 # Nothing to do.
329 self.error_message = None332 self.error_message = None
330 return333 return
331 if "upload_id" not in self.store_metadata:334 if "upload_id" not in self.store_metadata:
332 self.upload_id = client.uploadFile(lfa)335 self.upload_id = client.uploadFile(charm_lfa)
333 # We made progress, so reset attempt_count.336 # We made progress, so reset attempt_count.
334 self.attempt_count = 1337 self.attempt_count = 1
335 if "status_url" not in self.store_metadata:338 if "status_url" not in self.store_metadata:
diff --git a/lib/lp/charms/tests/test_charmrecipebuildjob.py b/lib/lp/charms/tests/test_charmrecipebuildjob.py
index d8c1e86..69865b1 100644
--- a/lib/lp/charms/tests/test_charmrecipebuildjob.py
+++ b/lib/lp/charms/tests/test_charmrecipebuildjob.py
@@ -84,6 +84,19 @@ class FakeCharmhubClient:
84 self.release = FakeMethod()84 self.release = FakeMethod()
8585
8686
87class FileUploaded(MatchesListwise):
88
89 def __init__(self, filename):
90 super().__init__([
91 MatchesListwise([
92 MatchesListwise([
93 MatchesStructure.byEquality(filename=filename),
94 ]),
95 MatchesDict({}),
96 ]),
97 ])
98
99
87class TestCharmRecipeBuildJob(TestCaseWithFactory):100class TestCharmRecipeBuildJob(TestCaseWithFactory):
88101
89 layer = DatabaseFunctionalLayer102 layer = DatabaseFunctionalLayer
@@ -130,12 +143,15 @@ class TestCharmhubUploadJob(TestCaseWithFactory):
130 repr(job))143 repr(job))
131144
132 def makeCharmRecipeBuild(self, **kwargs):145 def makeCharmRecipeBuild(self, **kwargs):
133 # Make a build with a builder, a file, and a webhook.146 # Make a build with a builder, some files, and a webhook.
134 build = self.factory.makeCharmRecipeBuild(147 build = self.factory.makeCharmRecipeBuild(
135 builder=self.factory.makeBuilder(), **kwargs)148 builder=self.factory.makeBuilder(), **kwargs)
136 build.updateStatus(BuildStatus.FULLYBUILT)149 build.updateStatus(BuildStatus.FULLYBUILT)
150 irrelevant_lfa = self.factory.makeLibraryFileAlias(
151 filename="000-irrelevant.txt", content=b"irrelevant file")
152 self.factory.makeCharmFile(build=build, library_file=irrelevant_lfa)
137 charm_lfa = self.factory.makeLibraryFileAlias(153 charm_lfa = self.factory.makeLibraryFileAlias(
138 filename="test-charm.charm", content="dummy charm content")154 filename="test-charm.charm", content=b"dummy charm content")
139 self.factory.makeCharmFile(build=build, library_file=charm_lfa)155 self.factory.makeCharmFile(build=build, library_file=charm_lfa)
140 self.factory.makeWebhook(156 self.factory.makeWebhook(
141 target=build.recipe, event_types=["charm-recipe:build:0.1"])157 target=build.recipe, event_types=["charm-recipe:build:0.1"])
@@ -180,7 +196,6 @@ class TestCharmhubUploadJob(TestCaseWithFactory):
180 # revision.196 # revision.
181 logger = self.useFixture(FakeLogger())197 logger = self.useFixture(FakeLogger())
182 build = self.makeCharmRecipeBuild()198 build = self.makeCharmRecipeBuild()
183 charm_lfa = build.getFiles()[0][1]
184 self.assertContentEqual([], build.store_upload_jobs)199 self.assertContentEqual([], build.store_upload_jobs)
185 job = CharmhubUploadJob.create(build)200 job = CharmhubUploadJob.create(build)
186 client = FakeCharmhubClient()201 client = FakeCharmhubClient()
@@ -190,7 +205,8 @@ class TestCharmhubUploadJob(TestCaseWithFactory):
190 self.useFixture(ZopeUtilityFixture(client, ICharmhubClient))205 self.useFixture(ZopeUtilityFixture(client, ICharmhubClient))
191 with dbuser(config.ICharmhubUploadJobSource.dbuser):206 with dbuser(config.ICharmhubUploadJobSource.dbuser):
192 run_isolated_jobs([job])207 run_isolated_jobs([job])
193 self.assertEqual([((charm_lfa,), {})], client.uploadFile.calls)208 self.assertThat(
209 client.uploadFile.calls, FileUploaded("test-charm.charm"))
194 self.assertEqual([((build, 1), {})], client.push.calls)210 self.assertEqual([((build, 1), {})], client.push.calls)
195 self.assertEqual(211 self.assertEqual(
196 [((build, self.status_url), {})], client.checkStatus.calls)212 [((build, self.status_url), {})], client.checkStatus.calls)
@@ -205,7 +221,6 @@ class TestCharmhubUploadJob(TestCaseWithFactory):
205 # A failed run sets the store upload status to FAILED.221 # A failed run sets the store upload status to FAILED.
206 logger = self.useFixture(FakeLogger())222 logger = self.useFixture(FakeLogger())
207 build = self.makeCharmRecipeBuild()223 build = self.makeCharmRecipeBuild()
208 charm_lfa = build.getFiles()[0][1]
209 self.assertContentEqual([], build.store_upload_jobs)224 self.assertContentEqual([], build.store_upload_jobs)
210 job = CharmhubUploadJob.create(build)225 job = CharmhubUploadJob.create(build)
211 client = FakeCharmhubClient()226 client = FakeCharmhubClient()
@@ -213,7 +228,8 @@ class TestCharmhubUploadJob(TestCaseWithFactory):
213 self.useFixture(ZopeUtilityFixture(client, ICharmhubClient))228 self.useFixture(ZopeUtilityFixture(client, ICharmhubClient))
214 with dbuser(config.ICharmhubUploadJobSource.dbuser):229 with dbuser(config.ICharmhubUploadJobSource.dbuser):
215 run_isolated_jobs([job])230 run_isolated_jobs([job])
216 self.assertEqual([((charm_lfa,), {})], client.uploadFile.calls)231 self.assertThat(
232 client.uploadFile.calls, FileUploaded("test-charm.charm"))
217 self.assertEqual([], client.push.calls)233 self.assertEqual([], client.push.calls)
218 self.assertEqual([], client.checkStatus.calls)234 self.assertEqual([], client.checkStatus.calls)
219 self.assertEqual([], client.release.calls)235 self.assertEqual([], client.release.calls)
@@ -234,7 +250,6 @@ class TestCharmhubUploadJob(TestCaseWithFactory):
234 build = self.makeCharmRecipeBuild(250 build = self.makeCharmRecipeBuild(
235 requester=requester_team, name="test-charm", owner=requester_team,251 requester=requester_team, name="test-charm", owner=requester_team,
236 project=project)252 project=project)
237 charm_lfa = build.getFiles()[0][1]
238 self.assertContentEqual([], build.store_upload_jobs)253 self.assertContentEqual([], build.store_upload_jobs)
239 job = CharmhubUploadJob.create(build)254 job = CharmhubUploadJob.create(build)
240 client = FakeCharmhubClient()255 client = FakeCharmhubClient()
@@ -244,7 +259,8 @@ class TestCharmhubUploadJob(TestCaseWithFactory):
244 self.useFixture(ZopeUtilityFixture(client, ICharmhubClient))259 self.useFixture(ZopeUtilityFixture(client, ICharmhubClient))
245 with dbuser(config.ICharmhubUploadJobSource.dbuser):260 with dbuser(config.ICharmhubUploadJobSource.dbuser):
246 run_isolated_jobs([job])261 run_isolated_jobs([job])
247 self.assertEqual([((charm_lfa,), {})], client.uploadFile.calls)262 self.assertThat(
263 client.uploadFile.calls, FileUploaded("test-charm.charm"))
248 self.assertEqual([], client.push.calls)264 self.assertEqual([], client.push.calls)
249 self.assertEqual([], client.checkStatus.calls)265 self.assertEqual([], client.checkStatus.calls)
250 self.assertEqual([], client.release.calls)266 self.assertEqual([], client.release.calls)
@@ -287,7 +303,6 @@ class TestCharmhubUploadJob(TestCaseWithFactory):
287 # retried.303 # retried.
288 logger = self.useFixture(FakeLogger())304 logger = self.useFixture(FakeLogger())
289 build = self.makeCharmRecipeBuild()305 build = self.makeCharmRecipeBuild()
290 charm_lfa = build.getFiles()[0][1]
291 self.assertContentEqual([], build.store_upload_jobs)306 self.assertContentEqual([], build.store_upload_jobs)
292 job = CharmhubUploadJob.create(build)307 job = CharmhubUploadJob.create(build)
293 client = FakeCharmhubClient()308 client = FakeCharmhubClient()
@@ -296,7 +311,8 @@ class TestCharmhubUploadJob(TestCaseWithFactory):
296 self.useFixture(ZopeUtilityFixture(client, ICharmhubClient))311 self.useFixture(ZopeUtilityFixture(client, ICharmhubClient))
297 with dbuser(config.ICharmhubUploadJobSource.dbuser):312 with dbuser(config.ICharmhubUploadJobSource.dbuser):
298 run_isolated_jobs([job])313 run_isolated_jobs([job])
299 self.assertEqual([((charm_lfa,), {})], client.uploadFile.calls)314 self.assertThat(
315 client.uploadFile.calls, FileUploaded("test-charm.charm"))
300 self.assertEqual([], client.push.calls)316 self.assertEqual([], client.push.calls)
301 self.assertEqual([], client.checkStatus.calls)317 self.assertEqual([], client.checkStatus.calls)
302 self.assertEqual([], client.release.calls)318 self.assertEqual([], client.release.calls)
@@ -316,7 +332,8 @@ class TestCharmhubUploadJob(TestCaseWithFactory):
316 client.checkStatus.result = 1332 client.checkStatus.result = 1
317 with dbuser(config.ICharmhubUploadJobSource.dbuser):333 with dbuser(config.ICharmhubUploadJobSource.dbuser):
318 run_isolated_jobs([job])334 run_isolated_jobs([job])
319 self.assertEqual([((charm_lfa,), {})], client.uploadFile.calls)335 self.assertThat(
336 client.uploadFile.calls, FileUploaded("test-charm.charm"))
320 self.assertEqual([((build, 1), {})], client.push.calls)337 self.assertEqual([((build, 1), {})], client.push.calls)
321 self.assertEqual(338 self.assertEqual(
322 [((build, self.status_url), {})], client.checkStatus.calls)339 [((build, self.status_url), {})], client.checkStatus.calls)
@@ -339,7 +356,6 @@ class TestCharmhubUploadJob(TestCaseWithFactory):
339 build = self.makeCharmRecipeBuild(356 build = self.makeCharmRecipeBuild(
340 requester=requester_team, name="test-charm", owner=requester_team,357 requester=requester_team, name="test-charm", owner=requester_team,
341 project=project)358 project=project)
342 charm_lfa = build.getFiles()[0][1]
343 self.assertContentEqual([], build.store_upload_jobs)359 self.assertContentEqual([], build.store_upload_jobs)
344 job = CharmhubUploadJob.create(build)360 job = CharmhubUploadJob.create(build)
345 client = FakeCharmhubClient()361 client = FakeCharmhubClient()
@@ -348,7 +364,8 @@ class TestCharmhubUploadJob(TestCaseWithFactory):
348 self.useFixture(ZopeUtilityFixture(client, ICharmhubClient))364 self.useFixture(ZopeUtilityFixture(client, ICharmhubClient))
349 with dbuser(config.ICharmhubUploadJobSource.dbuser):365 with dbuser(config.ICharmhubUploadJobSource.dbuser):
350 run_isolated_jobs([job])366 run_isolated_jobs([job])
351 self.assertEqual([((charm_lfa,), {})], client.uploadFile.calls)367 self.assertThat(
368 client.uploadFile.calls, FileUploaded("test-charm.charm"))
352 self.assertEqual([], client.push.calls)369 self.assertEqual([], client.push.calls)
353 self.assertEqual([], client.checkStatus.calls)370 self.assertEqual([], client.checkStatus.calls)
354 self.assertEqual([], client.release.calls)371 self.assertEqual([], client.release.calls)
@@ -392,7 +409,6 @@ class TestCharmhubUploadJob(TestCaseWithFactory):
392 # charm schedules itself to be retried.409 # charm schedules itself to be retried.
393 logger = self.useFixture(FakeLogger())410 logger = self.useFixture(FakeLogger())
394 build = self.makeCharmRecipeBuild()411 build = self.makeCharmRecipeBuild()
395 charm_lfa = build.getFiles()[0][1]
396 self.assertContentEqual([], build.store_upload_jobs)412 self.assertContentEqual([], build.store_upload_jobs)
397 job = CharmhubUploadJob.create(build)413 job = CharmhubUploadJob.create(build)
398 client = FakeCharmhubClient()414 client = FakeCharmhubClient()
@@ -402,7 +418,8 @@ class TestCharmhubUploadJob(TestCaseWithFactory):
402 self.useFixture(ZopeUtilityFixture(client, ICharmhubClient))418 self.useFixture(ZopeUtilityFixture(client, ICharmhubClient))
403 with dbuser(config.ICharmhubUploadJobSource.dbuser):419 with dbuser(config.ICharmhubUploadJobSource.dbuser):
404 run_isolated_jobs([job])420 run_isolated_jobs([job])
405 self.assertEqual([((charm_lfa,), {})], client.uploadFile.calls)421 self.assertThat(
422 client.uploadFile.calls, FileUploaded("test-charm.charm"))
406 self.assertEqual([((build, 2), {})], client.push.calls)423 self.assertEqual([((build, 2), {})], client.push.calls)
407 self.assertEqual(424 self.assertEqual(
408 [((build, self.status_url), {})], client.checkStatus.calls)425 [((build, self.status_url), {})], client.checkStatus.calls)
@@ -445,7 +462,6 @@ class TestCharmhubUploadJob(TestCaseWithFactory):
445 build = self.makeCharmRecipeBuild(462 build = self.makeCharmRecipeBuild(
446 requester=requester_team, name="test-charm", owner=requester_team,463 requester=requester_team, name="test-charm", owner=requester_team,
447 project=project)464 project=project)
448 charm_lfa = build.getFiles()[0][1]
449 self.assertContentEqual([], build.store_upload_jobs)465 self.assertContentEqual([], build.store_upload_jobs)
450 job = CharmhubUploadJob.create(build)466 job = CharmhubUploadJob.create(build)
451 client = FakeCharmhubClient()467 client = FakeCharmhubClient()
@@ -456,7 +472,8 @@ class TestCharmhubUploadJob(TestCaseWithFactory):
456 self.useFixture(ZopeUtilityFixture(client, ICharmhubClient))472 self.useFixture(ZopeUtilityFixture(client, ICharmhubClient))
457 with dbuser(config.ICharmhubUploadJobSource.dbuser):473 with dbuser(config.ICharmhubUploadJobSource.dbuser):
458 run_isolated_jobs([job])474 run_isolated_jobs([job])
459 self.assertEqual([((charm_lfa,), {})], client.uploadFile.calls)475 self.assertThat(
476 client.uploadFile.calls, FileUploaded("test-charm.charm"))
460 self.assertEqual([((build, 2), {})], client.push.calls)477 self.assertEqual([((build, 2), {})], client.push.calls)
461 self.assertEqual(478 self.assertEqual(
462 [((build, self.status_url), {})], client.checkStatus.calls)479 [((build, self.status_url), {})], client.checkStatus.calls)
@@ -498,7 +515,6 @@ class TestCharmhubUploadJob(TestCaseWithFactory):
498 # channels does so.515 # channels does so.
499 logger = self.useFixture(FakeLogger())516 logger = self.useFixture(FakeLogger())
500 build = self.makeCharmRecipeBuild(store_channels=["stable", "edge"])517 build = self.makeCharmRecipeBuild(store_channels=["stable", "edge"])
501 charm_lfa = build.getFiles()[0][1]
502 self.assertContentEqual([], build.store_upload_jobs)518 self.assertContentEqual([], build.store_upload_jobs)
503 job = CharmhubUploadJob.create(build)519 job = CharmhubUploadJob.create(build)
504 client = FakeCharmhubClient()520 client = FakeCharmhubClient()
@@ -508,7 +524,8 @@ class TestCharmhubUploadJob(TestCaseWithFactory):
508 self.useFixture(ZopeUtilityFixture(client, ICharmhubClient))524 self.useFixture(ZopeUtilityFixture(client, ICharmhubClient))
509 with dbuser(config.ICharmhubUploadJobSource.dbuser):525 with dbuser(config.ICharmhubUploadJobSource.dbuser):
510 run_isolated_jobs([job])526 run_isolated_jobs([job])
511 self.assertEqual([((charm_lfa,), {})], client.uploadFile.calls)527 self.assertThat(
528 client.uploadFile.calls, FileUploaded("test-charm.charm"))
512 self.assertEqual([((build, 1), {})], client.push.calls)529 self.assertEqual([((build, 1), {})], client.push.calls)
513 self.assertEqual(530 self.assertEqual(
514 [((build, self.status_url), {})], client.checkStatus.calls)531 [((build, self.status_url), {})], client.checkStatus.calls)
@@ -530,7 +547,6 @@ class TestCharmhubUploadJob(TestCaseWithFactory):
530 build = self.makeCharmRecipeBuild(547 build = self.makeCharmRecipeBuild(
531 requester=requester_team, name="test-charm", owner=requester_team,548 requester=requester_team, name="test-charm", owner=requester_team,
532 project=project, store_channels=["stable", "edge"])549 project=project, store_channels=["stable", "edge"])
533 charm_lfa = build.getFiles()[0][1]
534 self.assertContentEqual([], build.store_upload_jobs)550 self.assertContentEqual([], build.store_upload_jobs)
535 job = CharmhubUploadJob.create(build)551 job = CharmhubUploadJob.create(build)
536 client = FakeCharmhubClient()552 client = FakeCharmhubClient()
@@ -541,7 +557,8 @@ class TestCharmhubUploadJob(TestCaseWithFactory):
541 self.useFixture(ZopeUtilityFixture(client, ICharmhubClient))557 self.useFixture(ZopeUtilityFixture(client, ICharmhubClient))
542 with dbuser(config.ICharmhubUploadJobSource.dbuser):558 with dbuser(config.ICharmhubUploadJobSource.dbuser):
543 JobRunner([job]).runAll()559 JobRunner([job]).runAll()
544 self.assertEqual([((charm_lfa,), {})], client.uploadFile.calls)560 self.assertThat(
561 client.uploadFile.calls, FileUploaded("test-charm.charm"))
545 self.assertEqual([((build, 1), {})], client.push.calls)562 self.assertEqual([((build, 1), {})], client.push.calls)
546 self.assertEqual(563 self.assertEqual(
547 [((build, self.status_url), {})], client.checkStatus.calls)564 [((build, self.status_url), {})], client.checkStatus.calls)
diff --git a/lib/lp/snappy/model/snapbuildjob.py b/lib/lp/snappy/model/snapbuildjob.py
index 8e79973..dbf43e1 100644
--- a/lib/lp/snappy/model/snapbuildjob.py
+++ b/lib/lp/snappy/model/snapbuildjob.py
@@ -345,13 +345,16 @@ class SnapStoreUploadJob(SnapBuildJobDerived):
345 client = getUtility(ISnapStoreClient)345 client = getUtility(ISnapStoreClient)
346 try:346 try:
347 try:347 try:
348 lfa = next((row[1] for row in self.snapbuild.getFiles()), None)348 snap_lfa = next(
349 if lfa is None:349 (lfa for _, lfa, _ in self.snapbuild.getFiles()
350 if lfa.filename.endswith(".snap")),
351 None)
352 if snap_lfa is None:
350 # Nothing to do.353 # Nothing to do.
351 self.error_message = None354 self.error_message = None
352 return355 return
353 if "upload_id" not in self.store_metadata:356 if "upload_id" not in self.store_metadata:
354 self.upload_id = client.uploadFile(lfa)357 self.upload_id = client.uploadFile(snap_lfa)
355 # We made progress, so reset attempt_count.358 # We made progress, so reset attempt_count.
356 self.attempt_count = 1359 self.attempt_count = 1
357 if "status_url" not in self.store_metadata:360 if "status_url" not in self.store_metadata:
diff --git a/lib/lp/snappy/tests/test_snapbuildjob.py b/lib/lp/snappy/tests/test_snapbuildjob.py
index 1c1f316..68eef98 100644
--- a/lib/lp/snappy/tests/test_snapbuildjob.py
+++ b/lib/lp/snappy/tests/test_snapbuildjob.py
@@ -79,6 +79,19 @@ class FakeSnapStoreClient:
79 self.listChannels = FakeMethod(result=[])79 self.listChannels = FakeMethod(result=[])
8080
8181
82class FileUploaded(MatchesListwise):
83
84 def __init__(self, filename):
85 super().__init__([
86 MatchesListwise([
87 MatchesListwise([
88 MatchesStructure.byEquality(filename=filename),
89 ]),
90 MatchesDict({}),
91 ]),
92 ])
93
94
82class TestSnapBuildJob(TestCaseWithFactory):95class TestSnapBuildJob(TestCaseWithFactory):
8396
84 layer = DatabaseFunctionalLayer97 layer = DatabaseFunctionalLayer
@@ -125,6 +138,10 @@ class TestSnapStoreUploadJob(TestCaseWithFactory):
125 snapbuild = self.factory.makeSnapBuild(138 snapbuild = self.factory.makeSnapBuild(
126 builder=self.factory.makeBuilder(), **kwargs)139 builder=self.factory.makeBuilder(), **kwargs)
127 snapbuild.updateStatus(BuildStatus.FULLYBUILT)140 snapbuild.updateStatus(BuildStatus.FULLYBUILT)
141 irrelevant_lfa = self.factory.makeLibraryFileAlias(
142 filename="000-irrelevant.txt", content=b"irrelevant file")
143 self.factory.makeSnapFile(
144 snapbuild=snapbuild, libraryfile=irrelevant_lfa)
128 snap_lfa = self.factory.makeLibraryFileAlias(145 snap_lfa = self.factory.makeLibraryFileAlias(
129 filename="test-snap.snap", content=b"dummy snap content")146 filename="test-snap.snap", content=b"dummy snap content")
130 self.factory.makeSnapFile(snapbuild=snapbuild, libraryfile=snap_lfa)147 self.factory.makeSnapFile(snapbuild=snapbuild, libraryfile=snap_lfa)
@@ -169,7 +186,6 @@ class TestSnapStoreUploadJob(TestCaseWithFactory):
169 # and revision.186 # and revision.
170 logger = self.useFixture(FakeLogger())187 logger = self.useFixture(FakeLogger())
171 snapbuild = self.makeSnapBuild()188 snapbuild = self.makeSnapBuild()
172 snap_lfa = snapbuild.getFiles()[0][1]
173 self.assertContentEqual([], snapbuild.store_upload_jobs)189 self.assertContentEqual([], snapbuild.store_upload_jobs)
174 job = SnapStoreUploadJob.create(snapbuild)190 job = SnapStoreUploadJob.create(snapbuild)
175 client = FakeSnapStoreClient()191 client = FakeSnapStoreClient()
@@ -179,7 +195,8 @@ class TestSnapStoreUploadJob(TestCaseWithFactory):
179 self.useFixture(ZopeUtilityFixture(client, ISnapStoreClient))195 self.useFixture(ZopeUtilityFixture(client, ISnapStoreClient))
180 with dbuser(config.ISnapStoreUploadJobSource.dbuser):196 with dbuser(config.ISnapStoreUploadJobSource.dbuser):
181 run_isolated_jobs([job])197 run_isolated_jobs([job])
182 self.assertEqual([((snap_lfa,), {})], client.uploadFile.calls)198 self.assertThat(
199 client.uploadFile.calls, FileUploaded("test-snap.snap"))
183 self.assertEqual([((snapbuild, 1), {})], client.push.calls)200 self.assertEqual([((snapbuild, 1), {})], client.push.calls)
184 self.assertEqual([((self.status_url,), {})], client.checkStatus.calls)201 self.assertEqual([((self.status_url,), {})], client.checkStatus.calls)
185 self.assertContentEqual([job], snapbuild.store_upload_jobs)202 self.assertContentEqual([job], snapbuild.store_upload_jobs)
@@ -196,7 +213,6 @@ class TestSnapStoreUploadJob(TestCaseWithFactory):
196 # A failed run sets the store upload status to FAILED.213 # A failed run sets the store upload status to FAILED.
197 logger = self.useFixture(FakeLogger())214 logger = self.useFixture(FakeLogger())
198 snapbuild = self.makeSnapBuild()215 snapbuild = self.makeSnapBuild()
199 snap_lfa = snapbuild.getFiles()[0][1]
200 self.assertContentEqual([], snapbuild.store_upload_jobs)216 self.assertContentEqual([], snapbuild.store_upload_jobs)
201 job = SnapStoreUploadJob.create(snapbuild)217 job = SnapStoreUploadJob.create(snapbuild)
202 client = FakeSnapStoreClient()218 client = FakeSnapStoreClient()
@@ -204,7 +220,8 @@ class TestSnapStoreUploadJob(TestCaseWithFactory):
204 self.useFixture(ZopeUtilityFixture(client, ISnapStoreClient))220 self.useFixture(ZopeUtilityFixture(client, ISnapStoreClient))
205 with dbuser(config.ISnapStoreUploadJobSource.dbuser):221 with dbuser(config.ISnapStoreUploadJobSource.dbuser):
206 run_isolated_jobs([job])222 run_isolated_jobs([job])
207 self.assertEqual([((snap_lfa,), {})], client.uploadFile.calls)223 self.assertThat(
224 client.uploadFile.calls, FileUploaded("test-snap.snap"))
208 self.assertEqual([], client.push.calls)225 self.assertEqual([], client.push.calls)
209 self.assertEqual([], client.checkStatus.calls)226 self.assertEqual([], client.checkStatus.calls)
210 self.assertContentEqual([job], snapbuild.store_upload_jobs)227 self.assertContentEqual([job], snapbuild.store_upload_jobs)
@@ -225,7 +242,6 @@ class TestSnapStoreUploadJob(TestCaseWithFactory):
225 owner=requester, name="requester-team", members=[requester])242 owner=requester, name="requester-team", members=[requester])
226 snapbuild = self.makeSnapBuild(243 snapbuild = self.makeSnapBuild(
227 requester=requester_team, name="test-snap", owner=requester_team)244 requester=requester_team, name="test-snap", owner=requester_team)
228 snap_lfa = snapbuild.getFiles()[0][1]
229 self.assertContentEqual([], snapbuild.store_upload_jobs)245 self.assertContentEqual([], snapbuild.store_upload_jobs)
230 job = SnapStoreUploadJob.create(snapbuild)246 job = SnapStoreUploadJob.create(snapbuild)
231 client = FakeSnapStoreClient()247 client = FakeSnapStoreClient()
@@ -235,7 +251,8 @@ class TestSnapStoreUploadJob(TestCaseWithFactory):
235 self.useFixture(ZopeUtilityFixture(client, ISnapStoreClient))251 self.useFixture(ZopeUtilityFixture(client, ISnapStoreClient))
236 with dbuser(config.ISnapStoreUploadJobSource.dbuser):252 with dbuser(config.ISnapStoreUploadJobSource.dbuser):
237 run_isolated_jobs([job])253 run_isolated_jobs([job])
238 self.assertEqual([((snap_lfa,), {})], client.uploadFile.calls)254 self.assertThat(
255 client.uploadFile.calls, FileUploaded("test-snap.snap"))
239 self.assertEqual([((snapbuild, 1), {})], client.push.calls)256 self.assertEqual([((snapbuild, 1), {})], client.push.calls)
240 self.assertEqual([], client.checkStatus.calls)257 self.assertEqual([], client.checkStatus.calls)
241 self.assertContentEqual([job], snapbuild.store_upload_jobs)258 self.assertContentEqual([job], snapbuild.store_upload_jobs)
@@ -277,7 +294,6 @@ class TestSnapStoreUploadJob(TestCaseWithFactory):
277 # retried.294 # retried.
278 logger = self.useFixture(FakeLogger())295 logger = self.useFixture(FakeLogger())
279 snapbuild = self.makeSnapBuild()296 snapbuild = self.makeSnapBuild()
280 snap_lfa = snapbuild.getFiles()[0][1]
281 self.assertContentEqual([], snapbuild.store_upload_jobs)297 self.assertContentEqual([], snapbuild.store_upload_jobs)
282 job = SnapStoreUploadJob.create(snapbuild)298 job = SnapStoreUploadJob.create(snapbuild)
283 client = FakeSnapStoreClient()299 client = FakeSnapStoreClient()
@@ -286,7 +302,8 @@ class TestSnapStoreUploadJob(TestCaseWithFactory):
286 self.useFixture(ZopeUtilityFixture(client, ISnapStoreClient))302 self.useFixture(ZopeUtilityFixture(client, ISnapStoreClient))
287 with dbuser(config.ISnapStoreUploadJobSource.dbuser):303 with dbuser(config.ISnapStoreUploadJobSource.dbuser):
288 run_isolated_jobs([job])304 run_isolated_jobs([job])
289 self.assertEqual([((snap_lfa,), {})], client.uploadFile.calls)305 self.assertThat(
306 client.uploadFile.calls, FileUploaded("test-snap.snap"))
290 self.assertEqual([], client.push.calls)307 self.assertEqual([], client.push.calls)
291 self.assertEqual([], client.checkStatus.calls)308 self.assertEqual([], client.checkStatus.calls)
292 self.assertContentEqual([job], snapbuild.store_upload_jobs)309 self.assertContentEqual([job], snapbuild.store_upload_jobs)
@@ -308,7 +325,8 @@ class TestSnapStoreUploadJob(TestCaseWithFactory):
308 client.checkStatus.result = (self.store_url, 1)325 client.checkStatus.result = (self.store_url, 1)
309 with dbuser(config.ISnapStoreUploadJobSource.dbuser):326 with dbuser(config.ISnapStoreUploadJobSource.dbuser):
310 run_isolated_jobs([job])327 run_isolated_jobs([job])
311 self.assertEqual([((snap_lfa,), {})], client.uploadFile.calls)328 self.assertThat(
329 client.uploadFile.calls, FileUploaded("test-snap.snap"))
312 self.assertEqual([((snapbuild, 1), {})], client.push.calls)330 self.assertEqual([((snapbuild, 1), {})], client.push.calls)
313 self.assertEqual([((self.status_url,), {})], client.checkStatus.calls)331 self.assertEqual([((self.status_url,), {})], client.checkStatus.calls)
314 self.assertContentEqual([job], snapbuild.store_upload_jobs)332 self.assertContentEqual([job], snapbuild.store_upload_jobs)
@@ -331,7 +349,6 @@ class TestSnapStoreUploadJob(TestCaseWithFactory):
331 owner=requester, name="requester-team", members=[requester])349 owner=requester, name="requester-team", members=[requester])
332 snapbuild = self.makeSnapBuild(350 snapbuild = self.makeSnapBuild(
333 requester=requester_team, name="test-snap", owner=requester_team)351 requester=requester_team, name="test-snap", owner=requester_team)
334 snap_lfa = snapbuild.getFiles()[0][1]
335 self.assertContentEqual([], snapbuild.store_upload_jobs)352 self.assertContentEqual([], snapbuild.store_upload_jobs)
336 job = SnapStoreUploadJob.create(snapbuild)353 job = SnapStoreUploadJob.create(snapbuild)
337 client = FakeSnapStoreClient()354 client = FakeSnapStoreClient()
@@ -340,7 +357,8 @@ class TestSnapStoreUploadJob(TestCaseWithFactory):
340 self.useFixture(ZopeUtilityFixture(client, ISnapStoreClient))357 self.useFixture(ZopeUtilityFixture(client, ISnapStoreClient))
341 with dbuser(config.ISnapStoreUploadJobSource.dbuser):358 with dbuser(config.ISnapStoreUploadJobSource.dbuser):
342 run_isolated_jobs([job])359 run_isolated_jobs([job])
343 self.assertEqual([((snap_lfa,), {})], client.uploadFile.calls)360 self.assertThat(
361 client.uploadFile.calls, FileUploaded("test-snap.snap"))
344 self.assertEqual([((snapbuild, 1), {})], client.push.calls)362 self.assertEqual([((snapbuild, 1), {})], client.push.calls)
345 self.assertEqual([], client.checkStatus.calls)363 self.assertEqual([], client.checkStatus.calls)
346 self.assertContentEqual([job], snapbuild.store_upload_jobs)364 self.assertContentEqual([job], snapbuild.store_upload_jobs)
@@ -387,7 +405,6 @@ class TestSnapStoreUploadJob(TestCaseWithFactory):
387 owner=requester, name="requester-team", members=[requester])405 owner=requester, name="requester-team", members=[requester])
388 snapbuild = self.makeSnapBuild(406 snapbuild = self.makeSnapBuild(
389 requester=requester_team, name="test-snap", owner=requester_team)407 requester=requester_team, name="test-snap", owner=requester_team)
390 snap_lfa = snapbuild.getFiles()[0][1]
391 self.assertContentEqual([], snapbuild.store_upload_jobs)408 self.assertContentEqual([], snapbuild.store_upload_jobs)
392 job = SnapStoreUploadJob.create(snapbuild)409 job = SnapStoreUploadJob.create(snapbuild)
393 client = FakeSnapStoreClient()410 client = FakeSnapStoreClient()
@@ -396,7 +413,8 @@ class TestSnapStoreUploadJob(TestCaseWithFactory):
396 self.useFixture(ZopeUtilityFixture(client, ISnapStoreClient))413 self.useFixture(ZopeUtilityFixture(client, ISnapStoreClient))
397 with dbuser(config.ISnapStoreUploadJobSource.dbuser):414 with dbuser(config.ISnapStoreUploadJobSource.dbuser):
398 run_isolated_jobs([job])415 run_isolated_jobs([job])
399 self.assertEqual([((snap_lfa,), {})], client.uploadFile.calls)416 self.assertThat(
417 client.uploadFile.calls, FileUploaded("test-snap.snap"))
400 self.assertEqual([], client.push.calls)418 self.assertEqual([], client.push.calls)
401 self.assertEqual([], client.checkStatus.calls)419 self.assertEqual([], client.checkStatus.calls)
402 self.assertContentEqual([job], snapbuild.store_upload_jobs)420 self.assertContentEqual([job], snapbuild.store_upload_jobs)
@@ -441,7 +459,6 @@ class TestSnapStoreUploadJob(TestCaseWithFactory):
441 # package schedules itself to be retried.459 # package schedules itself to be retried.
442 logger = self.useFixture(FakeLogger())460 logger = self.useFixture(FakeLogger())
443 snapbuild = self.makeSnapBuild()461 snapbuild = self.makeSnapBuild()
444 snap_lfa = snapbuild.getFiles()[0][1]
445 self.assertContentEqual([], snapbuild.store_upload_jobs)462 self.assertContentEqual([], snapbuild.store_upload_jobs)
446 job = SnapStoreUploadJob.create(snapbuild)463 job = SnapStoreUploadJob.create(snapbuild)
447 client = FakeSnapStoreClient()464 client = FakeSnapStoreClient()
@@ -451,7 +468,8 @@ class TestSnapStoreUploadJob(TestCaseWithFactory):
451 self.useFixture(ZopeUtilityFixture(client, ISnapStoreClient))468 self.useFixture(ZopeUtilityFixture(client, ISnapStoreClient))
452 with dbuser(config.ISnapStoreUploadJobSource.dbuser):469 with dbuser(config.ISnapStoreUploadJobSource.dbuser):
453 run_isolated_jobs([job])470 run_isolated_jobs([job])
454 self.assertEqual([((snap_lfa,), {})], client.uploadFile.calls)471 self.assertThat(
472 client.uploadFile.calls, FileUploaded("test-snap.snap"))
455 self.assertEqual([((snapbuild, 2), {})], client.push.calls)473 self.assertEqual([((snapbuild, 2), {})], client.push.calls)
456 self.assertEqual([((self.status_url,), {})], client.checkStatus.calls)474 self.assertEqual([((self.status_url,), {})], client.checkStatus.calls)
457 self.assertContentEqual([job], snapbuild.store_upload_jobs)475 self.assertContentEqual([job], snapbuild.store_upload_jobs)
@@ -495,7 +513,6 @@ class TestSnapStoreUploadJob(TestCaseWithFactory):
495 owner=requester, name="requester-team", members=[requester])513 owner=requester, name="requester-team", members=[requester])
496 snapbuild = self.makeSnapBuild(514 snapbuild = self.makeSnapBuild(
497 requester=requester_team, name="test-snap", owner=requester_team)515 requester=requester_team, name="test-snap", owner=requester_team)
498 snap_lfa = snapbuild.getFiles()[0][1]
499 self.assertContentEqual([], snapbuild.store_upload_jobs)516 self.assertContentEqual([], snapbuild.store_upload_jobs)
500 job = SnapStoreUploadJob.create(snapbuild)517 job = SnapStoreUploadJob.create(snapbuild)
501 client = FakeSnapStoreClient()518 client = FakeSnapStoreClient()
@@ -509,7 +526,8 @@ class TestSnapStoreUploadJob(TestCaseWithFactory):
509 self.useFixture(ZopeUtilityFixture(client, ISnapStoreClient))526 self.useFixture(ZopeUtilityFixture(client, ISnapStoreClient))
510 with dbuser(config.ISnapStoreUploadJobSource.dbuser):527 with dbuser(config.ISnapStoreUploadJobSource.dbuser):
511 run_isolated_jobs([job])528 run_isolated_jobs([job])
512 self.assertEqual([((snap_lfa,), {})], client.uploadFile.calls)529 self.assertThat(
530 client.uploadFile.calls, FileUploaded("test-snap.snap"))
513 self.assertEqual([((snapbuild, 2), {})], client.push.calls)531 self.assertEqual([((snapbuild, 2), {})], client.push.calls)
514 self.assertEqual([((self.status_url,), {})], client.checkStatus.calls)532 self.assertEqual([((self.status_url,), {})], client.checkStatus.calls)
515 self.assertContentEqual([job], snapbuild.store_upload_jobs)533 self.assertContentEqual([job], snapbuild.store_upload_jobs)
@@ -555,7 +573,6 @@ class TestSnapStoreUploadJob(TestCaseWithFactory):
555 # URL or revision.573 # URL or revision.
556 logger = self.useFixture(FakeLogger())574 logger = self.useFixture(FakeLogger())
557 snapbuild = self.makeSnapBuild()575 snapbuild = self.makeSnapBuild()
558 snap_lfa = snapbuild.getFiles()[0][1]
559 self.assertContentEqual([], snapbuild.store_upload_jobs)576 self.assertContentEqual([], snapbuild.store_upload_jobs)
560 job = SnapStoreUploadJob.create(snapbuild)577 job = SnapStoreUploadJob.create(snapbuild)
561 client = FakeSnapStoreClient()578 client = FakeSnapStoreClient()
@@ -565,7 +582,8 @@ class TestSnapStoreUploadJob(TestCaseWithFactory):
565 self.useFixture(ZopeUtilityFixture(client, ISnapStoreClient))582 self.useFixture(ZopeUtilityFixture(client, ISnapStoreClient))
566 with dbuser(config.ISnapStoreUploadJobSource.dbuser):583 with dbuser(config.ISnapStoreUploadJobSource.dbuser):
567 run_isolated_jobs([job])584 run_isolated_jobs([job])
568 self.assertEqual([((snap_lfa,), {})], client.uploadFile.calls)585 self.assertThat(
586 client.uploadFile.calls, FileUploaded("test-snap.snap"))
569 self.assertEqual([((snapbuild, 1), {})], client.push.calls)587 self.assertEqual([((snapbuild, 1), {})], client.push.calls)
570 self.assertEqual([((self.status_url,), {})], client.checkStatus.calls)588 self.assertEqual([((self.status_url,), {})], client.checkStatus.calls)
571 self.assertContentEqual([job], snapbuild.store_upload_jobs)589 self.assertContentEqual([job], snapbuild.store_upload_jobs)
@@ -583,7 +601,6 @@ class TestSnapStoreUploadJob(TestCaseWithFactory):
583 # channels does so.601 # channels does so.
584 logger = self.useFixture(FakeLogger())602 logger = self.useFixture(FakeLogger())
585 snapbuild = self.makeSnapBuild(store_channels=["stable", "edge"])603 snapbuild = self.makeSnapBuild(store_channels=["stable", "edge"])
586 snap_lfa = snapbuild.getFiles()[0][1]
587 self.assertContentEqual([], snapbuild.store_upload_jobs)604 self.assertContentEqual([], snapbuild.store_upload_jobs)
588 job = SnapStoreUploadJob.create(snapbuild)605 job = SnapStoreUploadJob.create(snapbuild)
589 client = FakeSnapStoreClient()606 client = FakeSnapStoreClient()
@@ -593,7 +610,8 @@ class TestSnapStoreUploadJob(TestCaseWithFactory):
593 self.useFixture(ZopeUtilityFixture(client, ISnapStoreClient))610 self.useFixture(ZopeUtilityFixture(client, ISnapStoreClient))
594 with dbuser(config.ISnapStoreUploadJobSource.dbuser):611 with dbuser(config.ISnapStoreUploadJobSource.dbuser):
595 run_isolated_jobs([job])612 run_isolated_jobs([job])
596 self.assertEqual([((snap_lfa,), {})], client.uploadFile.calls)613 self.assertThat(
614 client.uploadFile.calls, FileUploaded("test-snap.snap"))
597 self.assertEqual([((snapbuild, 1), {})], client.push.calls)615 self.assertEqual([((snapbuild, 1), {})], client.push.calls)
598 self.assertEqual([((self.status_url,), {})], client.checkStatus.calls)616 self.assertEqual([((self.status_url,), {})], client.checkStatus.calls)
599 self.assertContentEqual([job], snapbuild.store_upload_jobs)617 self.assertContentEqual([job], snapbuild.store_upload_jobs)

Subscribers

People subscribed via source and target branches

to status/vote changes: