diff --git a/pkg/e2e/compose_environment_test.go b/pkg/e2e/compose_environment_test.go index 62d6c9ebc5e..640b9a61529 100644 --- a/pkg/e2e/compose_environment_test.go +++ b/pkg/e2e/compose_environment_test.go @@ -205,6 +205,24 @@ func TestEnvInterpolation(t *testing.T) { }) } +func TestEnvSelfReference(t *testing.T) { + c := NewParallelCLI(t) + + t.Run("self-referencing variables expand within env file", func(t *testing.T) { + res := c.RunDockerComposeCmd(t, "-f", "./fixtures/environment/env-self-reference/compose.yaml", "config") + res.Assert(t, icmd.Expected{Out: `FULL_IMAGE: gcr.io/myproject/myapp:latest`}) + res.Assert(t, icmd.Expected{Out: `BASE_URL: gcr.io/myproject/subpath`}) + }) + + t.Run("OS env overrides base variable and cascades through references", func(t *testing.T) { + cmd := c.NewDockerComposeCmd(t, "-f", "./fixtures/environment/env-self-reference/compose.yaml", "config") + cmd.Env = append(cmd.Env, "REGISTRY_URL=override.io") + res := icmd.RunCmd(cmd) + res.Assert(t, icmd.Expected{Out: `FULL_IMAGE: override.io/myapp:latest`}) + res.Assert(t, icmd.Expected{Out: `BASE_URL: override.io/subpath`}) + }) +} + func TestCommentsInEnvFile(t *testing.T) { c := NewParallelCLI(t) diff --git a/pkg/e2e/fixtures/environment/env-self-reference/.env b/pkg/e2e/fixtures/environment/env-self-reference/.env new file mode 100644 index 00000000000..3dedb325cb1 --- /dev/null +++ b/pkg/e2e/fixtures/environment/env-self-reference/.env @@ -0,0 +1,4 @@ +REGISTRY_URL=gcr.io/myproject +IMAGE_NAME=myapp +FULL_IMAGE=${REGISTRY_URL}/${IMAGE_NAME}:latest +BASE_URL=${REGISTRY_URL}/subpath diff --git a/pkg/e2e/fixtures/environment/env-self-reference/compose.yaml b/pkg/e2e/fixtures/environment/env-self-reference/compose.yaml new file mode 100644 index 00000000000..ec8a4e418dc --- /dev/null +++ b/pkg/e2e/fixtures/environment/env-self-reference/compose.yaml @@ -0,0 +1,7 @@ +services: + test: + image: bash + environment: + FULL_IMAGE: ${FULL_IMAGE} + BASE_URL: ${BASE_URL} + command: echo "ok"