diff --git a/e2e/container/attach_test.go b/e2e/container/attach_test.go index a2b6188b50..d26cae90ff 100644 --- a/e2e/container/attach_test.go +++ b/e2e/container/attach_test.go @@ -1,17 +1,29 @@ package container import ( + "strings" "testing" "github.com/gotestyourself/gotestyourself/icmd" ) func TestAttachExitCode(t *testing.T) { - cName := "test-attach-exit-code" - icmd.RunCommand("docker", "run", "-d", "--rm", "--name", cName, - alpineImage, "sh", "-c", "sleep 5 ; exit 21").Assert(t, icmd.Success) - cmd := icmd.Command("docker", "wait", cName) - res := icmd.StartCmd(cmd) - icmd.RunCommand("docker", "attach", cName).Assert(t, icmd.Expected{ExitCode: 21}) - icmd.WaitOnCmd(8, res).Assert(t, icmd.Expected{ExitCode: 0, Out: "21"}) + containerID := runBackgroundContainsWithExitCode(t, 21) + + result := icmd.RunCmd( + icmd.Command("docker", "attach", containerID), + withStdinNewline) + + result.Assert(t, icmd.Expected{ExitCode: 21}) +} + +func runBackgroundContainsWithExitCode(t *testing.T, exitcode int) string { + result := icmd.RunCmd(shell(t, + "docker run -d -i --rm %s sh -c 'read; exit %d'", alpineImage, exitcode)) + result.Assert(t, icmd.Success) + return strings.TrimSpace(result.Stdout()) +} + +func withStdinNewline(cmd *icmd.Cmd) { + cmd.Stdin = strings.NewReader("\n") }