97
97
self.buildmanager.iterate, self.buildmanager.iterators[-1])
98
98
self.assertFalse(self.slave.wasCalled('chrootFail'))
100
def assertScansSanely(self, exit_code):
101
# After building the package, reap processes.
102
self.buildmanager.iterate(exit_code)
104
'processscanpath', 'scan-for-processes', self.buildid,
106
self.assertEqual(BinaryPackageBuildState.SBUILD, self.getState())
107
self.assertEqual(expected_command, self.buildmanager.commands[-1])
109
self.buildmanager.iterate, self.buildmanager.iterators[-1])
111
def assertUnmountsSanely(self):
112
self.buildmanager.iterateReap(self.getState(), 0)
114
'umountpath', 'umount-chroot', self.buildid
116
self.assertEqual(BinaryPackageBuildState.UMOUNT, self.getState())
117
self.assertEqual(expected_command, self.buildmanager.commands[-1])
119
self.buildmanager.iterate, self.buildmanager.iterators[-1])
100
121
def test_iterate(self):
101
122
# The build manager iterates a normal build from start to finish.
102
123
self.startBuild()
116
137
# After building the package, reap processes.
117
self.buildmanager.iterate(0)
119
'processscanpath', 'scan-for-processes', self.buildid,
121
self.assertEqual(BinaryPackageBuildState.SBUILD, self.getState())
122
self.assertEqual(expected_command, self.buildmanager.commands[-1])
124
self.buildmanager.iterate, self.buildmanager.iterators[-1])
138
self.assertScansSanely(0)
125
139
self.assertFalse(self.slave.wasCalled('buildFail'))
126
140
self.assertEqual(
127
141
[((changes_path,), {})], self.slave.addWaitingFile.calls)
129
143
# Control returns to the DebianBuildManager in the UMOUNT state.
130
self.buildmanager.iterateReap(self.getState(), 0)
132
'umountpath', 'umount-chroot', self.buildid
134
self.assertEqual(BinaryPackageBuildState.UMOUNT, self.getState())
135
self.assertEqual(expected_command, self.buildmanager.commands[-1])
137
self.buildmanager.iterate, self.buildmanager.iterators[-1])
144
self.assertUnmountsSanely()
138
145
self.assertFalse(self.slave.wasCalled('buildFail'))
140
147
def test_abort_sbuild(self):
155
162
# If reaping completes successfully, the build manager returns
156
163
# control to the DebianBuildManager in the UMOUNT state.
157
self.buildmanager.iterateReap(self.getState(), 0)
159
'umountpath', 'umount-chroot', self.buildid
161
self.assertEqual(BinaryPackageBuildState.UMOUNT, self.getState())
162
self.assertEqual(expected_command, self.buildmanager.commands[-1])
164
self.buildmanager.iterate, self.buildmanager.iterators[-1])
164
self.assertUnmountsSanely()
165
165
self.assertFalse(self.slave.wasCalled('buildFail'))
167
167
def test_abort_sbuild_fail(self):
253
253
# After building the package, reap processes.
254
self.buildmanager.iterate(0)
256
'processscanpath', 'scan-for-processes', self.buildid,
258
self.assertEqual(BinaryPackageBuildState.SBUILD, self.getState())
259
self.assertEqual(expected_command, self.buildmanager.commands[-1])
261
self.buildmanager.iterate, self.buildmanager.iterators[-1])
254
self.assertScansSanely(0)
262
255
self.assertTrue(self.slave.wasCalled('buildFail'))
263
256
self.assertEqual(
264
257
[((os.path.join(build_dir, 'foo_1_i386.changes'),), {})],
265
258
self.slave.addWaitingFile.calls)
267
260
# Control returns to the DebianBuildManager in the UMOUNT state.
268
self.buildmanager.iterateReap(self.getState(), 0)
270
'umountpath', 'umount-chroot', self.buildid
272
self.assertEqual(BinaryPackageBuildState.UMOUNT, self.getState())
273
self.assertEqual(expected_command, self.buildmanager.commands[-1])
275
self.buildmanager.iterate, self.buildmanager.iterators[-1])
261
self.assertUnmountsSanely()
276
262
self.assertTrue(self.slave.wasCalled('buildFail'))
278
264
def test_detects_depfail(self):
287
273
# After building the package, reap processes.
288
self.buildmanager.iterate(1)
290
'processscanpath', 'scan-for-processes', self.buildid,
292
self.assertEqual(BinaryPackageBuildState.SBUILD, self.getState())
293
self.assertEqual(expected_command, self.buildmanager.commands[-1])
295
self.buildmanager.iterate, self.buildmanager.iterators[-1])
274
self.assertScansSanely(1)
296
275
self.assertFalse(self.slave.wasCalled('buildFail'))
297
276
self.assertEqual([(("nonexistent",), {})], self.slave.depFail.calls)
299
278
# Control returns to the DebianBuildManager in the UMOUNT state.
300
self.buildmanager.iterateReap(self.getState(), 0)
302
'umountpath', 'umount-chroot', self.buildid
304
self.assertEqual(BinaryPackageBuildState.UMOUNT, self.getState())
305
self.assertEqual(expected_command, self.buildmanager.commands[-1])
307
self.buildmanager.iterate, self.buildmanager.iterators[-1])
279
self.assertUnmountsSanely()
308
280
self.assertFalse(self.slave.wasCalled('buildFail'))
310
282
def test_depfail_with_unknown_error_converted_to_packagefail(self):
317
289
log.write("E: Everything is broken.\n")
320
# After building the package, reap processes.
321
self.buildmanager.iterate(1)
323
'processscanpath', 'scan-for-processes', self.buildid,
325
self.assertEqual(BinaryPackageBuildState.SBUILD, self.getState())
326
self.assertEqual(expected_command, self.buildmanager.commands[-1])
328
self.buildmanager.iterate, self.buildmanager.iterators[-1])
292
self.assertScansSanely(1)
329
293
self.assertTrue(self.slave.wasCalled('buildFail'))
330
294
self.assertFalse(self.slave.wasCalled('depFail'))