Merge ~cjwatson/launchpad:testfix-oci-build-info-to-buildd into launchpad:master

Proposed by Colin Watson
Status: Merged
Approved by: Colin Watson
Approved revision: 8c54c0a43a7d4a40be7e7834d66094ee5b0463c6
Merge reported by: Otto Co-Pilot
Merged at revision: not available
Proposed branch: ~cjwatson/launchpad:testfix-oci-build-info-to-buildd
Merge into: launchpad:master
Diff against target: 213 lines (+94/-94)
1 file modified
lib/lp/oci/tests/test_ocirecipebuildbehaviour.py (+94/-94)
Reviewer Review Type Date Requested Status
Thiago F. Pappacena (community) Approve
Review via email: mp+392613@code.launchpad.net

Commit message

Move _getBuildInfoArgs tests to TestAsyncOCIRecipeBuildBehaviour

Description of the change

MakeOCIBuildMixin.makeJob adds asynchronous cleanup functions, so can't be used in a synchronous test suite.

To post a comment you must log in.
Revision history for this message
Thiago F. Pappacena (pappacena) wrote :

LGTM!

review: Approve

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1diff --git a/lib/lp/oci/tests/test_ocirecipebuildbehaviour.py b/lib/lp/oci/tests/test_ocirecipebuildbehaviour.py
2index 562cb26..2297d6e 100644
3--- a/lib/lp/oci/tests/test_ocirecipebuildbehaviour.py
4+++ b/lib/lp/oci/tests/test_ocirecipebuildbehaviour.py
5@@ -134,7 +134,7 @@ class MakeOCIBuildMixin:
6 return job
7
8
9-class TestOCIBuildBehaviour(TestCaseWithFactory, MakeOCIBuildMixin):
10+class TestOCIBuildBehaviour(TestCaseWithFactory):
11
12 layer = LaunchpadZopelessLayer
13
14@@ -153,99 +153,6 @@ class TestOCIBuildBehaviour(TestCaseWithFactory, MakeOCIBuildMixin):
15 job = IBuildFarmJobBehaviour(build)
16 self.assertProvides(job, IBuildFarmJobBehaviour)
17
18- def makeRecipe(self, processor_names, **kwargs):
19- recipe = self.factory.makeOCIRecipe(**kwargs)
20- processors_list = []
21- distroseries = self.factory.makeDistroSeries(
22- distribution=recipe.oci_project.distribution)
23- for proc_name in processor_names:
24- proc = getUtility(IProcessorSet).getByName(proc_name)
25- distro = self.factory.makeDistroArchSeries(
26- distroseries=distroseries, architecturetag=proc_name,
27- processor=proc)
28- distro.addOrUpdateChroot(self.factory.makeLibraryFileAlias())
29- processors_list.append(proc)
30- recipe.setProcessors(processors_list)
31- return recipe
32-
33- def makeBuildRequest(self, recipe, requester):
34- build_request = recipe.requestBuilds(requester)
35- # Create the builds for the build request, and set them at the build
36- # request job.
37- builds = recipe.requestBuildsFromJob(requester, build_request)
38- job = removeSecurityProxy(build_request).job
39- removeSecurityProxy(job).builds = builds
40- return build_request
41-
42- def test_getBuildInfoArgs_with_build_request(self):
43- owner = self.factory.makePerson()
44- owner.setPreferredEmail(self.factory.makeEmail('owner@foo.com', owner))
45- oci_project = self.factory.makeOCIProject(registrant=owner)
46- recipe = self.makeRecipe(
47- processor_names=["amd64", "386"],
48- oci_project=oci_project, registrant=owner, owner=owner)
49- build_request = self.makeBuildRequest(recipe, recipe.owner)
50- self.assertEqual(2, build_request.builds.count())
51- build = build_request.builds[0]
52- build_per_proc = {i.processor.name: i for i in build_request.builds}
53- job = self.makeJob(build=build)
54-
55- self.assertThat(job._getBuildInfoArgs(), MatchesDict({
56- "architectures": MatchesSetwise(Equals("amd64"), Equals("386")),
57- "recipe_owner": Equals({
58- "name": recipe.owner.name,
59- "email": "owner@foo.com"}),
60- "build_request_id": Equals(build_request.id),
61- "build_requester": Equals({
62- "name": build.requester.name,
63- "email": "owner@foo.com"}),
64- "build_request_timestamp": Equals(
65- build_request.date_requested.isoformat()),
66- "build_urls": MatchesDict({
67- "amd64": Equals(canonical_url(build_per_proc["amd64"])),
68- "386": Equals(canonical_url(build_per_proc["386"]))
69- }),
70- }))
71-
72- def test_getBuildInfoArgs_hide_email(self):
73- owner = self.factory.makePerson()
74- owner.setPreferredEmail(self.factory.makeEmail('owner@foo.com', owner))
75- owner.hide_email_addresses = True
76- oci_project = self.factory.makeOCIProject(registrant=owner)
77- recipe = self.makeRecipe(
78- processor_names=["amd64"],
79- oci_project=oci_project, registrant=owner, owner=owner)
80- build_request = self.makeBuildRequest(recipe, recipe.owner)
81- build = build_request.builds[0]
82- job = self.makeJob(build=build)
83-
84- self.assertThat(job._getBuildInfoArgs(), MatchesDict({
85- "architectures": Equals(["amd64"]),
86- "recipe_owner": Equals({"name": recipe.owner.name, "email": None}),
87- "build_request_id": Equals(build_request.id),
88- "build_requester": Equals({
89- "name": build.requester.name, "email": None}),
90- "build_request_timestamp": Equals(
91- build_request.date_requested.isoformat()),
92- "build_urls": MatchesDict({
93- "amd64": Equals(canonical_url(build_request.builds[0]))
94- }),
95- }))
96-
97- def test_getBuildInfoArgs_without_build_request(self):
98- recipe = self.makeRecipe(processor_names=["amd64"])
99- distro_arch_series = removeSecurityProxy(
100- recipe.getAllowedArchitectures()[0])
101- build = self.factory.makeOCIRecipeBuild(
102- recipe=recipe, distro_arch_series=distro_arch_series)
103- job = self.makeJob(build=build)
104- self.assertThat(job._getBuildInfoArgs(), ContainsDict({
105- "architectures": Equals(["amd64"]),
106- "build_request_id": Equals(None),
107- "build_request_timestamp": Equals(None),
108- "build_urls": MatchesDict({"amd64": Equals(canonical_url(build))}),
109- }))
110-
111
112 class TestAsyncOCIRecipeBuildBehaviour(
113 StatsMixin, MakeOCIBuildMixin, TestCaseWithFactory):
114@@ -343,6 +250,99 @@ class TestAsyncOCIRecipeBuildBehaviour(
115 }),
116 ]))
117
118+ def makeRecipe(self, processor_names, **kwargs):
119+ recipe = self.factory.makeOCIRecipe(**kwargs)
120+ processors_list = []
121+ distroseries = self.factory.makeDistroSeries(
122+ distribution=recipe.oci_project.distribution)
123+ for proc_name in processor_names:
124+ proc = getUtility(IProcessorSet).getByName(proc_name)
125+ distro = self.factory.makeDistroArchSeries(
126+ distroseries=distroseries, architecturetag=proc_name,
127+ processor=proc)
128+ distro.addOrUpdateChroot(self.factory.makeLibraryFileAlias())
129+ processors_list.append(proc)
130+ recipe.setProcessors(processors_list)
131+ return recipe
132+
133+ def makeBuildRequest(self, recipe, requester):
134+ build_request = recipe.requestBuilds(requester)
135+ # Create the builds for the build request, and set them at the build
136+ # request job.
137+ builds = recipe.requestBuildsFromJob(requester, build_request)
138+ job = removeSecurityProxy(build_request).job
139+ removeSecurityProxy(job).builds = builds
140+ return build_request
141+
142+ def test_getBuildInfoArgs_with_build_request(self):
143+ owner = self.factory.makePerson()
144+ owner.setPreferredEmail(self.factory.makeEmail('owner@foo.com', owner))
145+ oci_project = self.factory.makeOCIProject(registrant=owner)
146+ recipe = self.makeRecipe(
147+ processor_names=["amd64", "386"],
148+ oci_project=oci_project, registrant=owner, owner=owner)
149+ build_request = self.makeBuildRequest(recipe, recipe.owner)
150+ self.assertEqual(2, build_request.builds.count())
151+ build = build_request.builds[0]
152+ build_per_proc = {i.processor.name: i for i in build_request.builds}
153+ job = self.makeJob(build=build)
154+
155+ self.assertThat(job._getBuildInfoArgs(), MatchesDict({
156+ "architectures": MatchesSetwise(Equals("amd64"), Equals("386")),
157+ "recipe_owner": Equals({
158+ "name": recipe.owner.name,
159+ "email": "owner@foo.com"}),
160+ "build_request_id": Equals(build_request.id),
161+ "build_requester": Equals({
162+ "name": build.requester.name,
163+ "email": "owner@foo.com"}),
164+ "build_request_timestamp": Equals(
165+ build_request.date_requested.isoformat()),
166+ "build_urls": MatchesDict({
167+ "amd64": Equals(canonical_url(build_per_proc["amd64"])),
168+ "386": Equals(canonical_url(build_per_proc["386"]))
169+ }),
170+ }))
171+
172+ def test_getBuildInfoArgs_hide_email(self):
173+ owner = self.factory.makePerson()
174+ owner.setPreferredEmail(self.factory.makeEmail('owner@foo.com', owner))
175+ owner.hide_email_addresses = True
176+ oci_project = self.factory.makeOCIProject(registrant=owner)
177+ recipe = self.makeRecipe(
178+ processor_names=["amd64"],
179+ oci_project=oci_project, registrant=owner, owner=owner)
180+ build_request = self.makeBuildRequest(recipe, recipe.owner)
181+ build = build_request.builds[0]
182+ job = self.makeJob(build=build)
183+
184+ self.assertThat(job._getBuildInfoArgs(), MatchesDict({
185+ "architectures": Equals(["amd64"]),
186+ "recipe_owner": Equals({"name": recipe.owner.name, "email": None}),
187+ "build_request_id": Equals(build_request.id),
188+ "build_requester": Equals({
189+ "name": build.requester.name, "email": None}),
190+ "build_request_timestamp": Equals(
191+ build_request.date_requested.isoformat()),
192+ "build_urls": MatchesDict({
193+ "amd64": Equals(canonical_url(build_request.builds[0]))
194+ }),
195+ }))
196+
197+ def test_getBuildInfoArgs_without_build_request(self):
198+ recipe = self.makeRecipe(processor_names=["amd64"])
199+ distro_arch_series = removeSecurityProxy(
200+ recipe.getAllowedArchitectures()[0])
201+ build = self.factory.makeOCIRecipeBuild(
202+ recipe=recipe, distro_arch_series=distro_arch_series)
203+ job = self.makeJob(build=build)
204+ self.assertThat(job._getBuildInfoArgs(), ContainsDict({
205+ "architectures": Equals(["amd64"]),
206+ "build_request_id": Equals(None),
207+ "build_request_timestamp": Equals(None),
208+ "build_urls": MatchesDict({"amd64": Equals(canonical_url(build))}),
209+ }))
210+
211 @defer.inlineCallbacks
212 def test_extraBuildArgs_git(self):
213 # extraBuildArgs returns appropriate arguments if asked to build a

Subscribers

People subscribed via source and target branches

to status/vote changes: