~cjwatson/launchpad-buildd/log-rotation

« back to all changes in this revision

Viewing changes to lpbuildd/tests/test_binarypackage.py

  • Committer: William Grant
  • Date: 2015-04-17 15:31:27 UTC
  • Revision ID: william.grant@canonical.com-20150417153127-0x4bdttezrah0qt5
Factor out some binarypackage tests.

Show diffs side-by-side

added added

removed removed

Lines of Context:
97
97
            self.buildmanager.iterate, self.buildmanager.iterators[-1])
98
98
        self.assertFalse(self.slave.wasCalled('chrootFail'))
99
99
 
 
100
    def assertScansSanely(self, exit_code):
 
101
        # After building the package, reap processes.
 
102
        self.buildmanager.iterate(exit_code)
 
103
        expected_command = [
 
104
            'processscanpath', 'scan-for-processes', self.buildid,
 
105
            ]
 
106
        self.assertEqual(BinaryPackageBuildState.SBUILD, self.getState())
 
107
        self.assertEqual(expected_command, self.buildmanager.commands[-1])
 
108
        self.assertNotEqual(
 
109
            self.buildmanager.iterate, self.buildmanager.iterators[-1])
 
110
 
 
111
    def assertUnmountsSanely(self):
 
112
        self.buildmanager.iterateReap(self.getState(), 0)
 
113
        expected_command = [
 
114
            'umountpath', 'umount-chroot', self.buildid
 
115
            ]
 
116
        self.assertEqual(BinaryPackageBuildState.UMOUNT, self.getState())
 
117
        self.assertEqual(expected_command, self.buildmanager.commands[-1])
 
118
        self.assertEqual(
 
119
            self.buildmanager.iterate, self.buildmanager.iterators[-1])
 
120
 
100
121
    def test_iterate(self):
101
122
        # The build manager iterates a normal build from start to finish.
102
123
        self.startBuild()
114
135
        changes.close()
115
136
 
116
137
        # After building the package, reap processes.
117
 
        self.buildmanager.iterate(0)
118
 
        expected_command = [
119
 
            'processscanpath', 'scan-for-processes', self.buildid,
120
 
            ]
121
 
        self.assertEqual(BinaryPackageBuildState.SBUILD, self.getState())
122
 
        self.assertEqual(expected_command, self.buildmanager.commands[-1])
123
 
        self.assertNotEqual(
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)
128
142
 
129
143
        # Control returns to the DebianBuildManager in the UMOUNT state.
130
 
        self.buildmanager.iterateReap(self.getState(), 0)
131
 
        expected_command = [
132
 
            'umountpath', 'umount-chroot', self.buildid
133
 
            ]
134
 
        self.assertEqual(BinaryPackageBuildState.UMOUNT, self.getState())
135
 
        self.assertEqual(expected_command, self.buildmanager.commands[-1])
136
 
        self.assertEqual(
137
 
            self.buildmanager.iterate, self.buildmanager.iterators[-1])
 
144
        self.assertUnmountsSanely()
138
145
        self.assertFalse(self.slave.wasCalled('buildFail'))
139
146
 
140
147
    def test_abort_sbuild(self):
154
161
 
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)
158
 
        expected_command = [
159
 
            'umountpath', 'umount-chroot', self.buildid
160
 
            ]
161
 
        self.assertEqual(BinaryPackageBuildState.UMOUNT, self.getState())
162
 
        self.assertEqual(expected_command, self.buildmanager.commands[-1])
163
 
        self.assertEqual(
164
 
            self.buildmanager.iterate, self.buildmanager.iterators[-1])
 
164
        self.assertUnmountsSanely()
165
165
        self.assertFalse(self.slave.wasCalled('buildFail'))
166
166
 
167
167
    def test_abort_sbuild_fail(self):
251
251
        changes.close()
252
252
 
253
253
        # After building the package, reap processes.
254
 
        self.buildmanager.iterate(0)
255
 
        expected_command = [
256
 
            'processscanpath', 'scan-for-processes', self.buildid,
257
 
            ]
258
 
        self.assertEqual(BinaryPackageBuildState.SBUILD, self.getState())
259
 
        self.assertEqual(expected_command, self.buildmanager.commands[-1])
260
 
        self.assertNotEqual(
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)
266
259
 
267
260
        # Control returns to the DebianBuildManager in the UMOUNT state.
268
 
        self.buildmanager.iterateReap(self.getState(), 0)
269
 
        expected_command = [
270
 
            'umountpath', 'umount-chroot', self.buildid
271
 
            ]
272
 
        self.assertEqual(BinaryPackageBuildState.UMOUNT, self.getState())
273
 
        self.assertEqual(expected_command, self.buildmanager.commands[-1])
274
 
        self.assertEqual(
275
 
            self.buildmanager.iterate, self.buildmanager.iterators[-1])
 
261
        self.assertUnmountsSanely()
276
262
        self.assertTrue(self.slave.wasCalled('buildFail'))
277
263
 
278
264
    def test_detects_depfail(self):
285
271
        log.close()
286
272
 
287
273
        # After building the package, reap processes.
288
 
        self.buildmanager.iterate(1)
289
 
        expected_command = [
290
 
            'processscanpath', 'scan-for-processes', self.buildid,
291
 
            ]
292
 
        self.assertEqual(BinaryPackageBuildState.SBUILD, self.getState())
293
 
        self.assertEqual(expected_command, self.buildmanager.commands[-1])
294
 
        self.assertNotEqual(
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)
298
277
 
299
278
        # Control returns to the DebianBuildManager in the UMOUNT state.
300
 
        self.buildmanager.iterateReap(self.getState(), 0)
301
 
        expected_command = [
302
 
            'umountpath', 'umount-chroot', self.buildid
303
 
            ]
304
 
        self.assertEqual(BinaryPackageBuildState.UMOUNT, self.getState())
305
 
        self.assertEqual(expected_command, self.buildmanager.commands[-1])
306
 
        self.assertEqual(
307
 
            self.buildmanager.iterate, self.buildmanager.iterators[-1])
 
279
        self.assertUnmountsSanely()
308
280
        self.assertFalse(self.slave.wasCalled('buildFail'))
309
281
 
310
282
    def test_depfail_with_unknown_error_converted_to_packagefail(self):
317
289
        log.write("E: Everything is broken.\n")
318
290
        log.close()
319
291
 
320
 
        # After building the package, reap processes.
321
 
        self.buildmanager.iterate(1)
322
 
        expected_command = [
323
 
            'processscanpath', 'scan-for-processes', self.buildid,
324
 
            ]
325
 
        self.assertEqual(BinaryPackageBuildState.SBUILD, self.getState())
326
 
        self.assertEqual(expected_command, self.buildmanager.commands[-1])
327
 
        self.assertNotEqual(
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'))