Beispiel #1
0
			}, requestedIO)

			Expect(fakeProcessTracker.RunCallCount()).To(Equal(1))
			_, cmd, io, tty, _ := fakeProcessTracker.RunArgsForCall(0)

			Expect(cmd.Path).To(Equal("dosh"))
			Expect(cmd.Args).To(Equal([]string{"dosh", "some-path", "an-arg", "another-arg"}))
			Expect(io).To(Equal(requestedIO))
			Expect(tty).To(Equal(requestedTTY))
		})

		PIt("requests sequential process ids", func() {})
	})

	Describe("Attach", func() {
		It("attaches to the requested process", func() {
			requestedIO := garden.ProcessIO{Stdout: gbytes.NewBuffer()}
			container.Attach(33, requestedIO)

			Expect(fakeProcessTracker.AttachCallCount()).To(Equal(1))
			id, io := fakeProcessTracker.AttachArgsForCall(0)

			Expect(id).To(Equal(uint32(33)))
			Expect(io).To(Equal(requestedIO))
		})
	})

	PIt("adds a signaller to the spawned process", func() {
	})
})
					return process, nil
				}
			})

			It("streams stderr and stdout and exit status", func() {
				stdout := gbytes.NewBuffer()
				stderr := gbytes.NewBuffer()

				process, err := container.Attach(1, garden.ProcessIO{
					Stdout: stdout,
					Stderr: stderr,
				})
				Expect(err).ToNot(HaveOccurred())

				pid, _ := fakeProcessTracker.AttachArgsForCall(0)
				Expect(pid).To(Equal(uint32(1)))

				Expect(process.ID()).To(Equal(uint32(42)))

				Eventually(stdout).Should(gbytes.Say("hi out\n"))
				Eventually(stderr).Should(gbytes.Say("hi err\n"))

				Expect(process.Wait()).To(Equal(123))
			})
		})

		Context("when attaching fails", func() {
			disaster := errors.New("oh no!")

			JustBeforeEach(func() {