mirror of
https://gitea.com/Lydanne/buildx.git
synced 2025-05-29 00:47:42 +08:00
bake: add additional tests for matrix behavior
Signed-off-by: Justin Chadwell <me@jedevc.com>
This commit is contained in:
parent
0806870261
commit
d699d08399
@ -881,6 +881,61 @@ func TestHCLMatrixMultipleKeys(t *testing.T) {
|
|||||||
require.ElementsMatch(t, []string{"a-b-d", "a-b-e", "a-b-f", "a-c-d", "a-c-e", "a-c-f"}, c.Groups[0].Targets)
|
require.ElementsMatch(t, []string{"a-b-d", "a-b-e", "a-b-f", "a-c-d", "a-c-e", "a-c-f"}, c.Groups[0].Targets)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestHCLMatrixLists(t *testing.T) {
|
||||||
|
dt := []byte(`
|
||||||
|
target "foo" {
|
||||||
|
matrix = {
|
||||||
|
aa = [["aa", "bb"], ["cc", "dd"]]
|
||||||
|
}
|
||||||
|
name = aa[0]
|
||||||
|
args = {
|
||||||
|
target = "val${aa[1]}"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
`)
|
||||||
|
|
||||||
|
c, err := ParseFile(dt, "docker-bake.hcl")
|
||||||
|
require.NoError(t, err)
|
||||||
|
|
||||||
|
require.Equal(t, 2, len(c.Targets))
|
||||||
|
require.Equal(t, "aa", c.Targets[0].Name)
|
||||||
|
require.Equal(t, ptrstr("valbb"), c.Targets[0].Args["target"])
|
||||||
|
require.Equal(t, "cc", c.Targets[1].Name)
|
||||||
|
require.Equal(t, ptrstr("valdd"), c.Targets[1].Args["target"])
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestHCLMatrixMaps(t *testing.T) {
|
||||||
|
dt := []byte(`
|
||||||
|
target "foo" {
|
||||||
|
matrix = {
|
||||||
|
aa = [
|
||||||
|
{
|
||||||
|
foo = "aa"
|
||||||
|
bar = "bb"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
foo = "cc"
|
||||||
|
bar = "dd"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
name = aa.foo
|
||||||
|
args = {
|
||||||
|
target = "val${aa.bar}"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
`)
|
||||||
|
|
||||||
|
c, err := ParseFile(dt, "docker-bake.hcl")
|
||||||
|
require.NoError(t, err)
|
||||||
|
|
||||||
|
require.Equal(t, 2, len(c.Targets))
|
||||||
|
require.Equal(t, c.Targets[0].Name, "aa")
|
||||||
|
require.Equal(t, c.Targets[0].Args["target"], ptrstr("valbb"))
|
||||||
|
require.Equal(t, c.Targets[1].Name, "cc")
|
||||||
|
require.Equal(t, c.Targets[1].Args["target"], ptrstr("valdd"))
|
||||||
|
}
|
||||||
|
|
||||||
func TestHCLMatrixMultipleTargets(t *testing.T) {
|
func TestHCLMatrixMultipleTargets(t *testing.T) {
|
||||||
dt := []byte(`
|
dt := []byte(`
|
||||||
target "x" {
|
target "x" {
|
||||||
@ -942,8 +997,40 @@ func TestHCLMatrixArgs(t *testing.T) {
|
|||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
|
|
||||||
require.Equal(t, 2, len(c.Targets))
|
require.Equal(t, 2, len(c.Targets))
|
||||||
require.Equal(t, c.Targets[0].Name, "1")
|
require.Equal(t, "1", c.Targets[0].Name)
|
||||||
require.Equal(t, c.Targets[1].Name, "2")
|
require.Equal(t, "2", c.Targets[1].Name)
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestHCLMatrixArgsOverride(t *testing.T) {
|
||||||
|
dt := []byte(`
|
||||||
|
variable "ABC" {
|
||||||
|
default = "def"
|
||||||
|
}
|
||||||
|
|
||||||
|
target "bar" {
|
||||||
|
matrix = {
|
||||||
|
aa = split(",", ABC)
|
||||||
|
}
|
||||||
|
name = "bar-${aa}"
|
||||||
|
args = {
|
||||||
|
foo = aa
|
||||||
|
}
|
||||||
|
}
|
||||||
|
`)
|
||||||
|
|
||||||
|
c, err := ParseFiles([]File{
|
||||||
|
{Data: dt, Name: "docker-bake.hcl"},
|
||||||
|
}, map[string]string{"ABC": "11,22,33"})
|
||||||
|
require.NoError(t, err)
|
||||||
|
|
||||||
|
require.Equal(t, 3, len(c.Targets))
|
||||||
|
require.Equal(t, "bar-11", c.Targets[0].Name)
|
||||||
|
require.Equal(t, "bar-22", c.Targets[1].Name)
|
||||||
|
require.Equal(t, "bar-33", c.Targets[2].Name)
|
||||||
|
|
||||||
|
require.Equal(t, ptrstr("11"), c.Targets[0].Args["foo"])
|
||||||
|
require.Equal(t, ptrstr("22"), c.Targets[1].Args["foo"])
|
||||||
|
require.Equal(t, ptrstr("33"), c.Targets[2].Args["foo"])
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestHCLMatrixErrors(t *testing.T) {
|
func TestHCLMatrixErrors(t *testing.T) {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user