diff --git a/pkg/e2e/compose_up_test.go b/pkg/e2e/compose_up_test.go index f96e7f0b7..738d60449 100644 --- a/pkg/e2e/compose_up_test.go +++ b/pkg/e2e/compose_up_test.go @@ -22,6 +22,7 @@ import ( "time" "gotest.tools/v3/assert" + "gotest.tools/v3/icmd" ) func TestUpWait(t *testing.T) { @@ -45,3 +46,13 @@ func TestUpWait(t *testing.T) { c.RunDockerComposeCmd(t, "--project-name", projectName, "down") } + +func TestUpExitCodeFrom(t *testing.T) { + c := NewParallelCLI(t) + const projectName = "e2e-exit-code-from" + + res := c.RunDockerComposeCmdNoCheck(t, "-f", "fixtures/start-fail/start-depends_on-long-lived.yaml", "--project-name", projectName, "up", "--exit-code-from=test") + res.Assert(t, icmd.Expected{ExitCode: 137}) + + c.RunDockerComposeCmd(t, "--project-name", projectName, "down", "--remove-orphans") +} diff --git a/pkg/e2e/fixtures/start-fail/start-depends_on-long-lived.yaml b/pkg/e2e/fixtures/start-fail/start-depends_on-long-lived.yaml new file mode 100644 index 000000000..58dda2017 --- /dev/null +++ b/pkg/e2e/fixtures/start-fail/start-depends_on-long-lived.yaml @@ -0,0 +1,11 @@ +services: + safe: + image: 'alpine' + command: ['/bin/sh', '-c', 'sleep infinity'] # never exiting + failure: + image: 'alpine' + command: ['/bin/sh', '-c', 'sleep 2 ; echo "exiting" ; exit 42'] + test: + image: 'alpine' + command: ['/bin/sh', '-c', 'sleep 99999 ; echo "tests are OK"'] # very long job + depends_on: [safe]