|
|
|
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"])
|
|
|
|
}
|