Merge pull request #2014 from crazy-max/fix-compose-test

test: fix non-deterministic compose context path
pull/2015/head
CrazyMax 1 year ago committed by GitHub
commit 296832c90e
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -295,6 +295,9 @@ services:
ctx := context.TODO() ctx := context.TODO()
cwd, err := os.Getwd()
require.NoError(t, err)
m, g, err := ReadTargets(ctx, []File{fp, fp2, fp3}, []string{"default"}, nil, nil) m, g, err := ReadTargets(ctx, []File{fp, fp2, fp3}, []string{"default"}, nil, nil)
require.NoError(t, err) require.NoError(t, err)
@ -303,7 +306,7 @@ services:
require.True(t, ok) require.True(t, ok)
require.Equal(t, "Dockerfile.webapp", *m["webapp"].Dockerfile) require.Equal(t, "Dockerfile.webapp", *m["webapp"].Dockerfile)
require.Equal(t, "/src/bake", *m["webapp"].Context) require.Equal(t, cwd, *m["webapp"].Context)
require.Equal(t, ptrstr("1"), m["webapp"].Args["buildno"]) require.Equal(t, ptrstr("1"), m["webapp"].Args["buildno"])
require.Equal(t, ptrstr("12"), m["webapp"].Args["buildno2"]) require.Equal(t, ptrstr("12"), m["webapp"].Args["buildno2"])
@ -342,6 +345,9 @@ services:
ctx := context.TODO() ctx := context.TODO()
cwd, err := os.Getwd()
require.NoError(t, err)
m, _, err := ReadTargets(ctx, []File{fp}, []string{"web.app"}, nil, nil) m, _, err := ReadTargets(ctx, []File{fp}, []string{"web.app"}, nil, nil)
require.NoError(t, err) require.NoError(t, err)
require.Equal(t, 1, len(m)) require.Equal(t, 1, len(m))
@ -364,7 +370,7 @@ services:
_, ok = m["web_app"] _, ok = m["web_app"]
require.True(t, ok) require.True(t, ok)
require.Equal(t, "Dockerfile.webapp", *m["web_app"].Dockerfile) require.Equal(t, "Dockerfile.webapp", *m["web_app"].Dockerfile)
require.Equal(t, "/src/bake", *m["web_app"].Context) require.Equal(t, cwd, *m["web_app"].Context)
require.Equal(t, ptrstr("1"), m["web_app"].Args["buildno"]) require.Equal(t, ptrstr("1"), m["web_app"].Args["buildno"])
require.Equal(t, ptrstr("12"), m["web_app"].Args["buildno2"]) require.Equal(t, ptrstr("12"), m["web_app"].Args["buildno2"])
@ -543,6 +549,9 @@ services:
ctx := context.TODO() ctx := context.TODO()
cwd, err := os.Getwd()
require.NoError(t, err)
m, _, err := ReadTargets(ctx, []File{fp, fp2}, []string{"app1", "app2"}, nil, nil) m, _, err := ReadTargets(ctx, []File{fp, fp2}, []string{"app1", "app2"}, nil, nil)
require.NoError(t, err) require.NoError(t, err)
@ -555,7 +564,7 @@ services:
require.Equal(t, "Dockerfile", *m["app1"].Dockerfile) require.Equal(t, "Dockerfile", *m["app1"].Dockerfile)
require.Equal(t, ".", *m["app1"].Context) require.Equal(t, ".", *m["app1"].Context)
require.Equal(t, "Dockerfile", *m["app2"].Dockerfile) require.Equal(t, "Dockerfile", *m["app2"].Dockerfile)
require.Equal(t, "/src/bake", *m["app2"].Context) require.Equal(t, cwd, *m["app2"].Context)
} }
func TestReadContextFromTargetChain(t *testing.T) { func TestReadContextFromTargetChain(t *testing.T) {

@ -22,7 +22,7 @@ services:
build: build:
context: ./dir context: ./dir
additional_contexts: additional_contexts:
foo: /bar foo: ./bar
dockerfile: Dockerfile-alternate dockerfile: Dockerfile-alternate
network: network:
none none
@ -49,6 +49,9 @@ secrets:
file: /root/.aws/credentials file: /root/.aws/credentials
`) `)
cwd, err := os.Getwd()
require.NoError(t, err)
c, err := ParseCompose([]compose.ConfigFile{{Content: dt}}, nil) c, err := ParseCompose([]compose.ConfigFile{{Content: dt}}, nil)
require.NoError(t, err) require.NoError(t, err)
@ -62,12 +65,12 @@ secrets:
return c.Targets[i].Name < c.Targets[j].Name return c.Targets[i].Name < c.Targets[j].Name
}) })
require.Equal(t, "db", c.Targets[0].Name) require.Equal(t, "db", c.Targets[0].Name)
require.Equal(t, "/src/bake/db", *c.Targets[0].Context) require.Equal(t, filepath.Join(cwd, "db"), *c.Targets[0].Context)
require.Equal(t, []string{"docker.io/tonistiigi/db"}, c.Targets[0].Tags) require.Equal(t, []string{"docker.io/tonistiigi/db"}, c.Targets[0].Tags)
require.Equal(t, "webapp", c.Targets[1].Name) require.Equal(t, "webapp", c.Targets[1].Name)
require.Equal(t, "/src/bake/dir", *c.Targets[1].Context) require.Equal(t, filepath.Join(cwd, "dir"), *c.Targets[1].Context)
require.Equal(t, map[string]string{"foo": "/bar"}, c.Targets[1].Contexts) require.Equal(t, map[string]string{"foo": filepath.Join(cwd, "bar")}, c.Targets[1].Contexts)
require.Equal(t, "Dockerfile-alternate", *c.Targets[1].Dockerfile) require.Equal(t, "Dockerfile-alternate", *c.Targets[1].Dockerfile)
require.Equal(t, 1, len(c.Targets[1].Args)) require.Equal(t, 1, len(c.Targets[1].Args))
require.Equal(t, ptrstr("123"), c.Targets[1].Args["buildno"]) require.Equal(t, ptrstr("123"), c.Targets[1].Args["buildno"])
@ -80,7 +83,7 @@ secrets:
}, c.Targets[1].Secrets) }, c.Targets[1].Secrets)
require.Equal(t, "webapp2", c.Targets[2].Name) require.Equal(t, "webapp2", c.Targets[2].Name)
require.Equal(t, "/src/bake/dir", *c.Targets[2].Context) require.Equal(t, filepath.Join(cwd, "dir"), *c.Targets[2].Context)
require.Equal(t, "FROM alpine\n", *c.Targets[2].DockerfileInline) require.Equal(t, "FROM alpine\n", *c.Targets[2].DockerfileInline)
} }

Loading…
Cancel
Save