1194
1194
def test_builds(self):
1195
1195
"""Ensure SourcePackageRecipeView.builds is as described."""
1196
1196
recipe = self.makeRecipe()
1197
# We create builds in time ascending order (oldest first) since we
1198
# use id as the ordering attribute and lower ids mean created earlier.
1197
1199
date_gen = time_counter(
1198
datetime(2010, 03, 16, tzinfo=utc), timedelta(days=-1))
1200
datetime(2010, 03, 16, tzinfo=utc), timedelta(days=1))
1199
1201
build1 = self.makeBuildJob(recipe, date_gen.next())
1200
1202
build2 = self.makeBuildJob(recipe, date_gen.next())
1201
1203
build3 = self.makeBuildJob(recipe, date_gen.next())
1204
1206
build6 = self.makeBuildJob(recipe, date_gen.next())
1205
1207
view = SourcePackageRecipeView(recipe, None)
1206
1208
self.assertEqual(
1207
[build1, build2, build3, build4, build5, build6],
1209
[build6, build5, build4, build3, build2, build1],
1210
1212
def set_status(build, status):
1214
1216
if status == BuildStatus.FULLYBUILT:
1215
1217
naked_build.date_finished = (
1216
1218
naked_build.date_created + timedelta(minutes=10))
1217
set_status(build1, BuildStatus.FULLYBUILT)
1218
set_status(build2, BuildStatus.FAILEDTOBUILD)
1219
set_status(build6, BuildStatus.FULLYBUILT)
1220
set_status(build5, BuildStatus.FAILEDTOBUILD)
1219
1221
# When there are 4+ pending builds, only the the most
1220
1222
# recently-completed build is returned (i.e. build1, not build2)
1221
1223
self.assertEqual(
1222
[build3, build4, build5, build6, build1],
1224
[build4, build3, build2, build1, build6],
1226
set_status(build4, BuildStatus.FULLYBUILT)
1224
1227
set_status(build3, BuildStatus.FULLYBUILT)
1225
set_status(build4, BuildStatus.FULLYBUILT)
1226
set_status(build5, BuildStatus.FULLYBUILT)
1227
set_status(build6, BuildStatus.FULLYBUILT)
1228
set_status(build2, BuildStatus.FULLYBUILT)
1229
set_status(build1, BuildStatus.FULLYBUILT)
1228
1230
self.assertEqual(
1229
[build1, build2, build3, build4, build5], view.builds)
1231
[build6, build5, build4, build3, build2], view.builds)
1231
1233
def test_request_daily_builds_button_stale(self):
1232
1234
# Recipes that are stale and are built daily have a build now link
1300
1302
browser = self.getViewBrowser(recipe)
1301
1303
browser.getControl('Build now').click()
1302
1304
login(ANONYMOUS)
1303
builds = recipe.getPendingBuilds()
1305
builds = recipe.pending_builds
1304
1306
build_distros = [
1305
1307
build.distroseries.displayname for build in builds]
1306
1308
build_distros.sort()