~cjwatson/launchpad-buildd/refactor-vcs

« back to all changes in this revision

Viewing changes to lpbuildd/tests/test_snap.py

  • Committer: Colin Watson
  • Date: 2018-06-05 02:04:39 UTC
  • mfrom: (327.1.11 launchpad-buildd)
  • Revision ID: cjwatson@canonical.com-20180605020439-bpvjkmcnewyeu872
Merge trunk.

Show diffs side-by-side

added added

removed removed

Lines of Context:
52
52
        """Retrieve build manager's state."""
53
53
        return self.buildmanager._state
54
54
 
55
 
    def startBuild(self):
 
55
    def startBuild(self, args=None, options=None):
56
56
        # The build manager's iterate() kicks off the consecutive states
57
57
        # after INIT.
58
58
        extra_args = {
62
62
            "git_repository": "https://git.launchpad.dev/~example/+git/snap",
63
63
            "git_path": "master",
64
64
            }
 
65
        if args is not None:
 
66
            extra_args.update(args)
65
67
        original_backend_name = self.buildmanager.backend_name
66
68
        self.buildmanager.backend_name = "fake"
67
69
        self.buildmanager.initiate({}, "chroot.tar.gz", extra_args)
80
82
            "--backend=lxd", "--series=xenial", "--arch=i386", self.buildid,
81
83
            "--git-repository", "https://git.launchpad.dev/~example/+git/snap",
82
84
            "--git-path", "master",
83
 
            "test-snap",
84
85
            ]
 
86
        if options is not None:
 
87
            expected_command.extend(options)
 
88
        expected_command.append("test-snap")
85
89
        self.assertEqual(expected_command, self.buildmanager.commands[-1])
86
90
        self.assertEqual(
87
91
            self.buildmanager.iterate, self.buildmanager.iterators[-1])
180
184
        self.assertEqual(
181
185
            self.buildmanager.iterate, self.buildmanager.iterators[-1])
182
186
        self.assertFalse(self.slave.wasCalled("buildFail"))
 
187
 
 
188
    def test_iterate_with_build_source_tarball(self):
 
189
        # The build manager iterates a build that uploads a source tarball
 
190
        # from start to finish.
 
191
        self.startBuild(
 
192
            {"build_source_tarball": True}, ["--build-source-tarball"])
 
193
 
 
194
        log_path = os.path.join(self.buildmanager._cachepath, "buildlog")
 
195
        with open(log_path, "w") as log:
 
196
            log.write("I am a build log.")
 
197
 
 
198
        self.buildmanager.backend.add_file(
 
199
            "/build/test-snap/test-snap_0_all.snap", b"I am a snap package.")
 
200
        self.buildmanager.backend.add_file(
 
201
            "/build/test-snap.tar.gz", b"I am a source tarball.")
 
202
 
 
203
        # After building the package, reap processes.
 
204
        self.buildmanager.iterate(0)
 
205
        expected_command = [
 
206
            "sharepath/slavebin/in-target", "in-target",
 
207
            "scan-for-processes",
 
208
            "--backend=lxd", "--series=xenial", "--arch=i386", self.buildid,
 
209
            ]
 
210
        self.assertEqual(SnapBuildState.BUILD_SNAP, self.getState())
 
211
        self.assertEqual(expected_command, self.buildmanager.commands[-1])
 
212
        self.assertNotEqual(
 
213
            self.buildmanager.iterate, self.buildmanager.iterators[-1])
 
214
        self.assertFalse(self.slave.wasCalled("buildFail"))
 
215
        self.assertThat(self.slave, HasWaitingFiles.byEquality({
 
216
            "test-snap_0_all.snap": b"I am a snap package.",
 
217
            "test-snap.tar.gz": b"I am a source tarball.",
 
218
            }))
 
219
 
 
220
        # Control returns to the DebianBuildManager in the UMOUNT state.
 
221
        self.buildmanager.iterateReap(self.getState(), 0)
 
222
        expected_command = [
 
223
            "sharepath/slavebin/in-target", "in-target",
 
224
            "umount-chroot",
 
225
            "--backend=lxd", "--series=xenial", "--arch=i386", self.buildid,
 
226
            ]
 
227
        self.assertEqual(SnapBuildState.UMOUNT, self.getState())
 
228
        self.assertEqual(expected_command, self.buildmanager.commands[-1])
 
229
        self.assertEqual(
 
230
            self.buildmanager.iterate, self.buildmanager.iterators[-1])
 
231
        self.assertFalse(self.slave.wasCalled("buildFail"))