mirror of
https://gitea.com/Lydanne/buildx.git
synced 2025-05-29 17:05:46 +08:00
bake: add tests for override+inheritance bug
Signed-off-by: Tibor Vass <tibor@docker.com>
This commit is contained in:
parent
7b297eb895
commit
3282dae09b
@ -19,10 +19,17 @@ func TestReadTargets(t *testing.T) {
|
|||||||
fp := filepath.Join(tmpdir, "config.hcl")
|
fp := filepath.Join(tmpdir, "config.hcl")
|
||||||
err = ioutil.WriteFile(fp, []byte(`
|
err = ioutil.WriteFile(fp, []byte(`
|
||||||
target "dep" {
|
target "dep" {
|
||||||
|
args {
|
||||||
|
VAR_INHERITED = "dep"
|
||||||
|
VAR_BOTH = "dep"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
target "webapp" {
|
target "webapp" {
|
||||||
dockerfile = "Dockerfile.webapp"
|
dockerfile = "Dockerfile.webapp"
|
||||||
|
args {
|
||||||
|
VAR_BOTH = "webapp"
|
||||||
|
}
|
||||||
inherits = ["dep"]
|
inherits = ["dep"]
|
||||||
}`), 0600)
|
}`), 0600)
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
@ -32,35 +39,61 @@ target "webapp" {
|
|||||||
t.Run("NoOverrides", func(t *testing.T) {
|
t.Run("NoOverrides", func(t *testing.T) {
|
||||||
m, err := ReadTargets(ctx, []string{fp}, []string{"webapp"}, nil)
|
m, err := ReadTargets(ctx, []string{fp}, []string{"webapp"}, nil)
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
|
require.Equal(t, 1, len(m))
|
||||||
|
|
||||||
require.Equal(t, "Dockerfile.webapp", *m["webapp"].Dockerfile)
|
require.Equal(t, "Dockerfile.webapp", *m["webapp"].Dockerfile)
|
||||||
require.Equal(t, ".", *m["webapp"].Context)
|
require.Equal(t, ".", *m["webapp"].Context)
|
||||||
|
require.Equal(t, "dep", m["webapp"].Args["VAR_INHERITED"])
|
||||||
|
})
|
||||||
|
|
||||||
|
t.Run("InvalidTargetOverrides", func(t *testing.T) {
|
||||||
|
_, err := ReadTargets(ctx, []string{fp}, []string{"webapp"}, []string{"nosuchtarget.context=foo"})
|
||||||
|
require.NotNil(t, err)
|
||||||
|
require.Equal(t, err.Error(), "unknown target nosuchtarget")
|
||||||
})
|
})
|
||||||
|
|
||||||
t.Run("ArgsOverrides", func(t *testing.T) {
|
t.Run("ArgsOverrides", func(t *testing.T) {
|
||||||
os.Setenv("VAR_FROMENV"+t.Name(), "fromEnv")
|
t.Run("leaf", func(t *testing.T) {
|
||||||
defer os.Unsetenv("VAR_FROM_ENV" + t.Name())
|
os.Setenv("VAR_FROMENV"+t.Name(), "fromEnv")
|
||||||
|
defer os.Unsetenv("VAR_FROM_ENV" + t.Name())
|
||||||
|
|
||||||
m, err := ReadTargets(ctx, []string{fp}, []string{"webapp"}, []string{
|
m, err := ReadTargets(ctx, []string{fp}, []string{"webapp"}, []string{
|
||||||
"webapp.args.VAR_UNSET",
|
"webapp.args.VAR_UNSET",
|
||||||
"webapp.args.VAR_EMPTY=",
|
"webapp.args.VAR_EMPTY=",
|
||||||
"webapp.args.VAR_SET=bananas",
|
"webapp.args.VAR_SET=bananas",
|
||||||
"webapp.args.VAR_FROMENV" + t.Name(),
|
"webapp.args.VAR_FROMENV" + t.Name(),
|
||||||
|
"webapp.args.VAR_INHERITED=override",
|
||||||
|
// not overriding VAR_BOTH on purpose
|
||||||
|
})
|
||||||
|
require.NoError(t, err)
|
||||||
|
|
||||||
|
require.Equal(t, "Dockerfile.webapp", *m["webapp"].Dockerfile)
|
||||||
|
require.Equal(t, ".", *m["webapp"].Context)
|
||||||
|
|
||||||
|
_, isSet := m["webapp"].Args["VAR_UNSET"]
|
||||||
|
require.False(t, isSet, m["webapp"].Args["VAR_UNSET"])
|
||||||
|
|
||||||
|
_, isSet = m["webapp"].Args["VAR_EMPTY"]
|
||||||
|
require.True(t, isSet, m["webapp"].Args["VAR_EMPTY"])
|
||||||
|
|
||||||
|
require.Equal(t, m["webapp"].Args["VAR_SET"], "bananas")
|
||||||
|
|
||||||
|
require.Equal(t, m["webapp"].Args["VAR_FROMENV"+t.Name()], "fromEnv")
|
||||||
|
|
||||||
|
require.Equal(t, m["webapp"].Args["VAR_BOTH"], "webapp")
|
||||||
|
require.Equal(t, m["webapp"].Args["VAR_INHERITED"], "override")
|
||||||
})
|
})
|
||||||
require.NoError(t, err)
|
|
||||||
|
|
||||||
require.Equal(t, "Dockerfile.webapp", *m["webapp"].Dockerfile)
|
// building leaf but overriding parent fields
|
||||||
require.Equal(t, ".", *m["webapp"].Context)
|
t.Run("parent", func(t *testing.T) {
|
||||||
|
m, err := ReadTargets(ctx, []string{fp}, []string{"webapp"}, []string{
|
||||||
_, isSet := m["webapp"].Args["VAR_UNSET"]
|
"dep.args.VAR_INHERITED=override",
|
||||||
require.False(t, isSet, m["webapp"].Args["VAR_UNSET"])
|
"dep.args.VAR_BOTH=override",
|
||||||
|
})
|
||||||
_, isSet = m["webapp"].Args["VAR_EMPTY"]
|
require.NoError(t, err)
|
||||||
require.True(t, isSet, m["webapp"].Args["VAR_EMPTY"])
|
require.Equal(t, m["webapp"].Args["VAR_INHERITED"], "override")
|
||||||
|
require.Equal(t, m["webapp"].Args["VAR_BOTH"], "webapp")
|
||||||
require.Equal(t, m["webapp"].Args["VAR_SET"], "bananas")
|
})
|
||||||
|
|
||||||
require.Equal(t, m["webapp"].Args["VAR_FROMENV"+t.Name()], "fromEnv")
|
|
||||||
})
|
})
|
||||||
|
|
||||||
t.Run("ContextOverride", func(t *testing.T) {
|
t.Run("ContextOverride", func(t *testing.T) {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user