}) Context("when the droplet runner returns an error", func() { It("prints the error from upload bits", func() { fakeDropletRunner.UploadBitsReturns(errors.New("uploading bits failed")) test_helpers.ExecuteCommandWithArgs(buildDropletCommand, []string{"droplet-name", "http://some.url/for/buildpack"}) Expect(outputBuffer).To(test_helpers.SayLine("Error uploading droplet-name: uploading bits failed")) Expect(fakeExitHandler.ExitCalledWith).To(Equal([]int{exit_codes.CommandFailed})) Expect(fakeDropletRunner.UploadBitsCallCount()).To(Equal(1)) Expect(fakeDropletRunner.BuildDropletCallCount()).To(Equal(0)) }) It("prints the error from build droplet", func() { fakeDropletRunner.BuildDropletReturns(errors.New("failed")) test_helpers.ExecuteCommandWithArgs(buildDropletCommand, []string{"droplet-name", "http://some.url/for/buildpack"}) Expect(outputBuffer).To(test_helpers.SayLine("Error submitting build of droplet-name: failed")) Expect(fakeDropletRunner.UploadBitsCallCount()).To(Equal(1)) Expect(fakeDropletRunner.BuildDropletCallCount()).To(Equal(1)) Expect(fakeExitHandler.ExitCalledWith).To(Equal([]int{exit_codes.CommandFailed})) }) }) Describe("waiting for the build to finish", func() { It("polls for the build to complete, outputting logs while the build runs", func() { fakeTaskExaminer.TaskStatusReturns(task_examiner.TaskInfo{State: "PENDING"}, nil) args := []string{