package bake import ( "context" "io/ioutil" "os" "path/filepath" "testing" "github.com/stretchr/testify/require" ) func TestReadTargets(t *testing.T) { t.Parallel() tmpdir, err := ioutil.TempDir("", "bake") require.NoError(t, err) defer os.RemoveAll(tmpdir) fp := filepath.Join(tmpdir, "config.hcl") err = ioutil.WriteFile(fp, []byte(` target "dep" { } target "webapp" { dockerfile = "Dockerfile.webapp" inherits = ["dep"] }`), 0600) require.NoError(t, err) ctx := context.TODO() m, err := ReadTargets(ctx, []string{fp}, []string{"webapp"}, nil) require.NoError(t, err) require.Equal(t, "Dockerfile.webapp", *m["webapp"].Dockerfile) require.Equal(t, ".", *m["webapp"].Context) } func TestReadTargetsCompose(t *testing.T) { t.Parallel() tmpdir, err := ioutil.TempDir("", "bake") require.NoError(t, err) defer os.RemoveAll(tmpdir) fp := filepath.Join(tmpdir, "docker-compose.yml") err = ioutil.WriteFile(fp, []byte(` version: "3" services: db: build: . command: ./entrypoint.sh image: docker.io/tonistiigi/db webapp: build: dockerfile: Dockerfile.webapp args: buildno: 1 `), 0600) require.NoError(t, err) fp2 := filepath.Join(tmpdir, "docker-compose2.yml") err = ioutil.WriteFile(fp2, []byte(` version: "3" services: newservice: build: . webapp: build: args: buildno2: 12 `), 0600) require.NoError(t, err) ctx := context.TODO() m, err := ReadTargets(ctx, []string{fp, fp2}, []string{"default"}, nil) require.NoError(t, err) require.Equal(t, 3, len(m)) _, ok := m["newservice"] require.True(t, ok) require.Equal(t, "Dockerfile.webapp", *m["webapp"].Dockerfile) require.Equal(t, ".", *m["webapp"].Context) require.Equal(t, "1", m["webapp"].Args["buildno"]) require.Equal(t, "12", m["webapp"].Args["buildno2"]) }