Skip to content

Commit 5113f9e

Browse files
authored
Merge pull request #2824 from jsternberg/bake-revert-composable-attributes
[v0.19] revert: "bake: initial set of composable bake attributes"
2 parents 71c7889 + 8b02962 commit 5113f9e

24 files changed

+374
-3642
lines changed

bake/bake.go

+115-206
Large diffs are not rendered by default.

bake/bake_test.go

+60-59
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@ package bake
22

33
import (
44
"context"
5-
"fmt"
65
"os"
76
"path/filepath"
87
"sort"
@@ -229,7 +228,7 @@ func TestPushOverride(t *testing.T) {
229228
m, _, err := ReadTargets(context.TODO(), []File{fp}, []string{"app"}, []string{"*.push=true"}, nil)
230229
require.NoError(t, err)
231230
require.Equal(t, 1, len(m["app"].Outputs))
232-
require.Equal(t, "type=image,push=true", m["app"].Outputs[0].String())
231+
require.Equal(t, "type=image,push=true", m["app"].Outputs[0])
233232
})
234233

235234
t.Run("type image", func(t *testing.T) {
@@ -243,7 +242,7 @@ func TestPushOverride(t *testing.T) {
243242
m, _, err := ReadTargets(context.TODO(), []File{fp}, []string{"app"}, []string{"*.push=true"}, nil)
244243
require.NoError(t, err)
245244
require.Equal(t, 1, len(m["app"].Outputs))
246-
require.Equal(t, "type=image,compression=zstd,push=true", m["app"].Outputs[0].String())
245+
require.Equal(t, "type=image,compression=zstd,push=true", m["app"].Outputs[0])
247246
})
248247

249248
t.Run("type image push false", func(t *testing.T) {
@@ -257,7 +256,7 @@ func TestPushOverride(t *testing.T) {
257256
m, _, err := ReadTargets(context.TODO(), []File{fp}, []string{"app"}, []string{"*.push=false"}, nil)
258257
require.NoError(t, err)
259258
require.Equal(t, 1, len(m["app"].Outputs))
260-
require.Equal(t, "type=image,compression=zstd,push=false", m["app"].Outputs[0].String())
259+
require.Equal(t, "type=image,compression=zstd,push=false", m["app"].Outputs[0])
261260
})
262261

263262
t.Run("type registry", func(t *testing.T) {
@@ -271,7 +270,7 @@ func TestPushOverride(t *testing.T) {
271270
m, _, err := ReadTargets(context.TODO(), []File{fp}, []string{"app"}, []string{"*.push=true"}, nil)
272271
require.NoError(t, err)
273272
require.Equal(t, 1, len(m["app"].Outputs))
274-
require.Equal(t, "type=registry", m["app"].Outputs[0].String())
273+
require.Equal(t, "type=registry", m["app"].Outputs[0])
275274
})
276275

277276
t.Run("type registry push false", func(t *testing.T) {
@@ -301,9 +300,9 @@ func TestPushOverride(t *testing.T) {
301300
require.NoError(t, err)
302301
require.Equal(t, 2, len(m))
303302
require.Equal(t, 1, len(m["foo"].Outputs))
304-
require.Equal(t, []string{"type=local,dest=out"}, stringify(m["foo"].Outputs))
303+
require.Equal(t, []string{"type=local,dest=out"}, m["foo"].Outputs)
305304
require.Equal(t, 1, len(m["bar"].Outputs))
306-
require.Equal(t, []string{"type=image,push=true"}, stringify(m["bar"].Outputs))
305+
require.Equal(t, []string{"type=image,push=true"}, m["bar"].Outputs)
307306
})
308307
}
309308

@@ -318,7 +317,7 @@ func TestLoadOverride(t *testing.T) {
318317
m, _, err := ReadTargets(context.TODO(), []File{fp}, []string{"app"}, []string{"*.load=true"}, nil)
319318
require.NoError(t, err)
320319
require.Equal(t, 1, len(m["app"].Outputs))
321-
require.Equal(t, "type=docker", m["app"].Outputs[0].String())
320+
require.Equal(t, "type=docker", m["app"].Outputs[0])
322321
})
323322

324323
t.Run("type docker", func(t *testing.T) {
@@ -332,7 +331,7 @@ func TestLoadOverride(t *testing.T) {
332331
m, _, err := ReadTargets(context.TODO(), []File{fp}, []string{"app"}, []string{"*.load=true"}, nil)
333332
require.NoError(t, err)
334333
require.Equal(t, 1, len(m["app"].Outputs))
335-
require.Equal(t, []string{"type=docker"}, stringify(m["app"].Outputs))
334+
require.Equal(t, []string{"type=docker"}, m["app"].Outputs)
336335
})
337336

338337
t.Run("type image", func(t *testing.T) {
@@ -346,7 +345,7 @@ func TestLoadOverride(t *testing.T) {
346345
m, _, err := ReadTargets(context.TODO(), []File{fp}, []string{"app"}, []string{"*.load=true"}, nil)
347346
require.NoError(t, err)
348347
require.Equal(t, 2, len(m["app"].Outputs))
349-
require.Equal(t, []string{"type=docker", "type=image"}, stringify(m["app"].Outputs))
348+
require.Equal(t, []string{"type=image", "type=docker"}, m["app"].Outputs)
350349
})
351350

352351
t.Run("type image load false", func(t *testing.T) {
@@ -360,7 +359,7 @@ func TestLoadOverride(t *testing.T) {
360359
m, _, err := ReadTargets(context.TODO(), []File{fp}, []string{"app"}, []string{"*.load=false"}, nil)
361360
require.NoError(t, err)
362361
require.Equal(t, 1, len(m["app"].Outputs))
363-
require.Equal(t, []string{"type=image"}, stringify(m["app"].Outputs))
362+
require.Equal(t, []string{"type=image"}, m["app"].Outputs)
364363
})
365364

366365
t.Run("type registry", func(t *testing.T) {
@@ -374,7 +373,7 @@ func TestLoadOverride(t *testing.T) {
374373
m, _, err := ReadTargets(context.TODO(), []File{fp}, []string{"app"}, []string{"*.load=true"}, nil)
375374
require.NoError(t, err)
376375
require.Equal(t, 2, len(m["app"].Outputs))
377-
require.Equal(t, []string{"type=docker", "type=registry"}, stringify(m["app"].Outputs))
376+
require.Equal(t, []string{"type=registry", "type=docker"}, m["app"].Outputs)
378377
})
379378

380379
t.Run("type oci", func(t *testing.T) {
@@ -388,7 +387,7 @@ func TestLoadOverride(t *testing.T) {
388387
m, _, err := ReadTargets(context.TODO(), []File{fp}, []string{"app"}, []string{"*.load=true"}, nil)
389388
require.NoError(t, err)
390389
require.Equal(t, 2, len(m["app"].Outputs))
391-
require.Equal(t, []string{"type=docker", "type=oci,dest=out"}, stringify(m["app"].Outputs))
390+
require.Equal(t, []string{"type=oci,dest=out", "type=docker"}, m["app"].Outputs)
392391
})
393392

394393
t.Run("type docker with dest", func(t *testing.T) {
@@ -402,7 +401,7 @@ func TestLoadOverride(t *testing.T) {
402401
m, _, err := ReadTargets(context.TODO(), []File{fp}, []string{"app"}, []string{"*.load=true"}, nil)
403402
require.NoError(t, err)
404403
require.Equal(t, 2, len(m["app"].Outputs))
405-
require.Equal(t, []string{"type=docker", "type=docker,dest=out"}, stringify(m["app"].Outputs))
404+
require.Equal(t, []string{"type=docker,dest=out", "type=docker"}, m["app"].Outputs)
406405
})
407406

408407
t.Run("type local and empty target", func(t *testing.T) {
@@ -419,9 +418,9 @@ func TestLoadOverride(t *testing.T) {
419418
require.NoError(t, err)
420419
require.Equal(t, 2, len(m))
421420
require.Equal(t, 1, len(m["foo"].Outputs))
422-
require.Equal(t, []string{"type=local,dest=out"}, stringify(m["foo"].Outputs))
421+
require.Equal(t, []string{"type=local,dest=out"}, m["foo"].Outputs)
423422
require.Equal(t, 1, len(m["bar"].Outputs))
424-
require.Equal(t, []string{"type=docker"}, stringify(m["bar"].Outputs))
423+
require.Equal(t, []string{"type=docker"}, m["bar"].Outputs)
425424
})
426425
}
427426

@@ -441,10 +440,12 @@ func TestLoadAndPushOverride(t *testing.T) {
441440
require.Equal(t, 2, len(m))
442441

443442
require.Equal(t, 1, len(m["foo"].Outputs))
444-
require.Equal(t, []string{"type=local,dest=out"}, stringify(m["foo"].Outputs))
443+
sort.Strings(m["foo"].Outputs)
444+
require.Equal(t, []string{"type=local,dest=out"}, m["foo"].Outputs)
445445

446446
require.Equal(t, 2, len(m["bar"].Outputs))
447-
require.Equal(t, []string{"type=docker", "type=image,push=true"}, stringify(m["bar"].Outputs))
447+
sort.Strings(m["bar"].Outputs)
448+
require.Equal(t, []string{"type=docker", "type=image,push=true"}, m["bar"].Outputs)
448449
})
449450

450451
t.Run("type registry", func(t *testing.T) {
@@ -460,7 +461,8 @@ func TestLoadAndPushOverride(t *testing.T) {
460461
require.Equal(t, 1, len(m))
461462

462463
require.Equal(t, 2, len(m["foo"].Outputs))
463-
require.Equal(t, []string{"type=docker", "type=registry"}, stringify(m["foo"].Outputs))
464+
sort.Strings(m["foo"].Outputs)
465+
require.Equal(t, []string{"type=docker", "type=registry"}, m["foo"].Outputs)
464466
})
465467
}
466468

@@ -672,7 +674,7 @@ func TestOverrideMerge(t *testing.T) {
672674

673675
require.Equal(t, []string{"linux/arm", "linux/ppc64le"}, m["app"].Platforms)
674676
require.Equal(t, 1, len(m["app"].Outputs))
675-
require.Equal(t, "type=registry", m["app"].Outputs[0].String())
677+
require.Equal(t, "type=registry", m["app"].Outputs[0])
676678
}
677679

678680
func TestReadContexts(t *testing.T) {
@@ -838,7 +840,7 @@ func TestReadContextFromTargetChain(t *testing.T) {
838840
mid, ok := m["mid"]
839841
require.True(t, ok)
840842
require.Equal(t, 1, len(mid.Outputs))
841-
require.Equal(t, "type=cacheonly", mid.Outputs[0].String())
843+
require.Equal(t, "type=cacheonly", mid.Outputs[0])
842844
require.Equal(t, 1, len(mid.Contexts))
843845

844846
base, ok := m["base"]
@@ -922,8 +924,7 @@ func TestReadTargetsDefault(t *testing.T) {
922924
Data: []byte(`
923925
target "default" {
924926
dockerfile = "test"
925-
}`),
926-
}
927+
}`)}
927928

928929
m, g, err := ReadTargets(ctx, []File{f}, []string{"default"}, nil, nil)
929930
require.NoError(t, err)
@@ -941,8 +942,7 @@ func TestReadTargetsSpecified(t *testing.T) {
941942
Data: []byte(`
942943
target "image" {
943944
dockerfile = "test"
944-
}`),
945-
}
945+
}`)}
946946

947947
_, _, err := ReadTargets(ctx, []File{f}, []string{"default"}, nil, nil)
948948
require.Error(t, err)
@@ -967,8 +967,7 @@ group "foo" {
967967
}
968968
target "image" {
969969
dockerfile = "test"
970-
}`),
971-
}
970+
}`)}
972971

973972
m, g, err := ReadTargets(ctx, []File{f}, []string{"foo"}, nil, nil)
974973
require.NoError(t, err)
@@ -994,8 +993,7 @@ target "foo" {
994993
}
995994
target "image" {
996995
dockerfile = "test"
997-
}`),
998-
}
996+
}`)}
999997

1000998
m, g, err := ReadTargets(ctx, []File{f}, []string{"foo"}, nil, nil)
1001999
require.NoError(t, err)
@@ -1038,8 +1036,7 @@ target "image-release" {
10381036
inherits = ["image"]
10391037
output = ["type=image,push=true"]
10401038
tags = ["user/app:latest"]
1041-
}`),
1042-
}
1039+
}`)}
10431040

10441041
fyml := File{
10451042
Name: "docker-compose.yml",
@@ -1063,8 +1060,7 @@ services:
10631060
args:
10641061
CT_ECR: foo
10651062
CT_TAG: bar
1066-
image: ct-fake-aws:bar`),
1067-
}
1063+
image: ct-fake-aws:bar`)}
10681064

10691065
fjson := File{
10701066
Name: "docker-bake.json",
@@ -1085,24 +1081,23 @@ services:
10851081
]
10861082
}
10871083
}
1088-
}`),
1089-
}
1084+
}`)}
10901085

10911086
m, g, err := ReadTargets(ctx, []File{fhcl}, []string{"default"}, nil, nil)
10921087
require.NoError(t, err)
10931088
require.Equal(t, 1, len(g))
10941089
require.Equal(t, []string{"image"}, g["default"].Targets)
10951090
require.Equal(t, 1, len(m))
10961091
require.Equal(t, 1, len(m["image"].Outputs))
1097-
require.Equal(t, "type=docker", m["image"].Outputs[0].String())
1092+
require.Equal(t, "type=docker", m["image"].Outputs[0])
10981093

10991094
m, g, err = ReadTargets(ctx, []File{fhcl}, []string{"image-release"}, nil, nil)
11001095
require.NoError(t, err)
11011096
require.Equal(t, 1, len(g))
11021097
require.Equal(t, []string{"image-release"}, g["default"].Targets)
11031098
require.Equal(t, 1, len(m))
11041099
require.Equal(t, 1, len(m["image-release"].Outputs))
1105-
require.Equal(t, "type=image,push=true", m["image-release"].Outputs[0].String())
1100+
require.Equal(t, "type=image,push=true", m["image-release"].Outputs[0])
11061101

11071102
m, g, err = ReadTargets(ctx, []File{fhcl}, []string{"image", "image-release"}, nil, nil)
11081103
require.NoError(t, err)
@@ -1111,7 +1106,7 @@ services:
11111106
require.Equal(t, 2, len(m))
11121107
require.Equal(t, ".", *m["image"].Context)
11131108
require.Equal(t, 1, len(m["image-release"].Outputs))
1114-
require.Equal(t, "type=image,push=true", m["image-release"].Outputs[0].String())
1109+
require.Equal(t, "type=image,push=true", m["image-release"].Outputs[0])
11151110

11161111
m, g, err = ReadTargets(ctx, []File{fyml, fhcl}, []string{"default"}, nil, nil)
11171112
require.NoError(t, err)
@@ -1171,8 +1166,7 @@ target "foo" {
11711166
}
11721167
target "image" {
11731168
output = ["type=docker"]
1174-
}`),
1175-
}
1169+
}`)}
11761170

11771171
m, g, err := ReadTargets(ctx, []File{f}, []string{"foo"}, nil, nil)
11781172
require.NoError(t, err)
@@ -1206,8 +1200,7 @@ target "foo" {
12061200
}
12071201
target "image" {
12081202
output = ["type=docker"]
1209-
}`),
1210-
}
1203+
}`)}
12111204

12121205
m, g, err := ReadTargets(ctx, []File{f}, []string{"foo"}, nil, nil)
12131206
require.NoError(t, err)
@@ -1216,7 +1209,7 @@ target "image" {
12161209
require.Equal(t, []string{"foo", "image"}, g["foo"].Targets)
12171210
require.Equal(t, 2, len(m))
12181211
require.Equal(t, "bar", *m["foo"].Dockerfile)
1219-
require.Equal(t, "type=docker", m["image"].Outputs[0].String())
1212+
require.Equal(t, "type=docker", m["image"].Outputs[0])
12201213

12211214
m, g, err = ReadTargets(ctx, []File{f}, []string{"foo", "image"}, nil, nil)
12221215
require.NoError(t, err)
@@ -1225,7 +1218,7 @@ target "image" {
12251218
require.Equal(t, []string{"foo", "image"}, g["foo"].Targets)
12261219
require.Equal(t, 2, len(m))
12271220
require.Equal(t, "bar", *m["foo"].Dockerfile)
1228-
require.Equal(t, "type=docker", m["image"].Outputs[0].String())
1221+
require.Equal(t, "type=docker", m["image"].Outputs[0])
12291222
}
12301223

12311224
func TestNestedInherits(t *testing.T) {
@@ -1254,8 +1247,7 @@ target "c" {
12541247
}
12551248
target "d" {
12561249
inherits = ["b", "c"]
1257-
}`),
1258-
}
1250+
}`)}
12591251

12601252
cases := []struct {
12611253
name string
@@ -1323,8 +1315,7 @@ group "default" {
13231315
"child1",
13241316
"child2"
13251317
]
1326-
}`),
1327-
}
1318+
}`)}
13281319

13291320
cases := []struct {
13301321
name string
@@ -1360,9 +1351,9 @@ group "default" {
13601351
require.Equal(t, []string{"child1", "child2"}, g["default"].Targets)
13611352
require.Equal(t, 2, len(m))
13621353
require.Equal(t, tt.wantch1, m["child1"].Args)
1363-
require.Equal(t, []string{"type=docker"}, stringify(m["child1"].Outputs))
1354+
require.Equal(t, []string{"type=docker"}, m["child1"].Outputs)
13641355
require.Equal(t, tt.wantch2, m["child2"].Args)
1365-
require.Equal(t, []string{"type=docker"}, stringify(m["child2"].Outputs))
1356+
require.Equal(t, []string{"type=docker"}, m["child2"].Outputs)
13661357
})
13671358
}
13681359
}
@@ -1451,8 +1442,7 @@ group "e" {
14511442
14521443
target "f" {
14531444
context = "./foo"
1454-
}`),
1455-
}
1445+
}`)}
14561446

14571447
cases := []struct {
14581448
names []string
@@ -1731,7 +1721,7 @@ func TestAnnotations(t *testing.T) {
17311721

17321722
require.Equal(t, 1, len(m))
17331723
require.Contains(t, m, "app")
1734-
require.Equal(t, "type=image,name=foo", m["app"].Outputs[0].String())
1724+
require.Equal(t, "type=image,name=foo", m["app"].Outputs[0])
17351725
require.Equal(t, "manifest[linux/amd64]:foo=bar", m["app"].Annotations[0])
17361726

17371727
require.Len(t, bo["app"].Exports, 1)
@@ -2019,11 +2009,22 @@ target "app" {
20192009
})
20202010
}
20212011

2022-
func stringify[V fmt.Stringer](values []V) []string {
2023-
s := make([]string, len(values))
2024-
for i, v := range values {
2025-
s[i] = v.String()
2012+
// https://github.com/docker/buildx/issues/2822
2013+
func TestVariableEmpty(t *testing.T) {
2014+
fp := File{
2015+
Name: "docker-bake.hcl",
2016+
Data: []byte(`
2017+
variable "FOO" {
2018+
default = ""
2019+
}
2020+
target "app" {
2021+
output = [FOO]
2022+
}
2023+
`),
20262024
}
2027-
sort.Strings(s)
2028-
return s
2025+
2026+
ctx := context.TODO()
2027+
2028+
_, _, err := ReadTargets(ctx, []File{fp}, []string{"app"}, nil, nil)
2029+
require.NoError(t, err)
20292030
}

0 commit comments

Comments
 (0)