@@ -2,7 +2,6 @@ package bake
2
2
3
3
import (
4
4
"context"
5
- "fmt"
6
5
"os"
7
6
"path/filepath"
8
7
"sort"
@@ -229,7 +228,7 @@ func TestPushOverride(t *testing.T) {
229
228
m , _ , err := ReadTargets (context .TODO (), []File {fp }, []string {"app" }, []string {"*.push=true" }, nil )
230
229
require .NoError (t , err )
231
230
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 ])
233
232
})
234
233
235
234
t .Run ("type image" , func (t * testing.T ) {
@@ -243,7 +242,7 @@ func TestPushOverride(t *testing.T) {
243
242
m , _ , err := ReadTargets (context .TODO (), []File {fp }, []string {"app" }, []string {"*.push=true" }, nil )
244
243
require .NoError (t , err )
245
244
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 ])
247
246
})
248
247
249
248
t .Run ("type image push false" , func (t * testing.T ) {
@@ -257,7 +256,7 @@ func TestPushOverride(t *testing.T) {
257
256
m , _ , err := ReadTargets (context .TODO (), []File {fp }, []string {"app" }, []string {"*.push=false" }, nil )
258
257
require .NoError (t , err )
259
258
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 ])
261
260
})
262
261
263
262
t .Run ("type registry" , func (t * testing.T ) {
@@ -271,7 +270,7 @@ func TestPushOverride(t *testing.T) {
271
270
m , _ , err := ReadTargets (context .TODO (), []File {fp }, []string {"app" }, []string {"*.push=true" }, nil )
272
271
require .NoError (t , err )
273
272
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 ])
275
274
})
276
275
277
276
t .Run ("type registry push false" , func (t * testing.T ) {
@@ -301,9 +300,9 @@ func TestPushOverride(t *testing.T) {
301
300
require .NoError (t , err )
302
301
require .Equal (t , 2 , len (m ))
303
302
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 )
305
304
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 )
307
306
})
308
307
}
309
308
@@ -318,7 +317,7 @@ func TestLoadOverride(t *testing.T) {
318
317
m , _ , err := ReadTargets (context .TODO (), []File {fp }, []string {"app" }, []string {"*.load=true" }, nil )
319
318
require .NoError (t , err )
320
319
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 ])
322
321
})
323
322
324
323
t .Run ("type docker" , func (t * testing.T ) {
@@ -332,7 +331,7 @@ func TestLoadOverride(t *testing.T) {
332
331
m , _ , err := ReadTargets (context .TODO (), []File {fp }, []string {"app" }, []string {"*.load=true" }, nil )
333
332
require .NoError (t , err )
334
333
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 )
336
335
})
337
336
338
337
t .Run ("type image" , func (t * testing.T ) {
@@ -346,7 +345,7 @@ func TestLoadOverride(t *testing.T) {
346
345
m , _ , err := ReadTargets (context .TODO (), []File {fp }, []string {"app" }, []string {"*.load=true" }, nil )
347
346
require .NoError (t , err )
348
347
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 )
350
349
})
351
350
352
351
t .Run ("type image load false" , func (t * testing.T ) {
@@ -360,7 +359,7 @@ func TestLoadOverride(t *testing.T) {
360
359
m , _ , err := ReadTargets (context .TODO (), []File {fp }, []string {"app" }, []string {"*.load=false" }, nil )
361
360
require .NoError (t , err )
362
361
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 )
364
363
})
365
364
366
365
t .Run ("type registry" , func (t * testing.T ) {
@@ -374,7 +373,7 @@ func TestLoadOverride(t *testing.T) {
374
373
m , _ , err := ReadTargets (context .TODO (), []File {fp }, []string {"app" }, []string {"*.load=true" }, nil )
375
374
require .NoError (t , err )
376
375
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 )
378
377
})
379
378
380
379
t .Run ("type oci" , func (t * testing.T ) {
@@ -388,7 +387,7 @@ func TestLoadOverride(t *testing.T) {
388
387
m , _ , err := ReadTargets (context .TODO (), []File {fp }, []string {"app" }, []string {"*.load=true" }, nil )
389
388
require .NoError (t , err )
390
389
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 )
392
391
})
393
392
394
393
t .Run ("type docker with dest" , func (t * testing.T ) {
@@ -402,7 +401,7 @@ func TestLoadOverride(t *testing.T) {
402
401
m , _ , err := ReadTargets (context .TODO (), []File {fp }, []string {"app" }, []string {"*.load=true" }, nil )
403
402
require .NoError (t , err )
404
403
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 )
406
405
})
407
406
408
407
t .Run ("type local and empty target" , func (t * testing.T ) {
@@ -419,9 +418,9 @@ func TestLoadOverride(t *testing.T) {
419
418
require .NoError (t , err )
420
419
require .Equal (t , 2 , len (m ))
421
420
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 )
423
422
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 )
425
424
})
426
425
}
427
426
@@ -441,10 +440,12 @@ func TestLoadAndPushOverride(t *testing.T) {
441
440
require .Equal (t , 2 , len (m ))
442
441
443
442
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 )
445
445
446
446
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 )
448
449
})
449
450
450
451
t .Run ("type registry" , func (t * testing.T ) {
@@ -460,7 +461,8 @@ func TestLoadAndPushOverride(t *testing.T) {
460
461
require .Equal (t , 1 , len (m ))
461
462
462
463
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 )
464
466
})
465
467
}
466
468
@@ -672,7 +674,7 @@ func TestOverrideMerge(t *testing.T) {
672
674
673
675
require .Equal (t , []string {"linux/arm" , "linux/ppc64le" }, m ["app" ].Platforms )
674
676
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 ])
676
678
}
677
679
678
680
func TestReadContexts (t * testing.T ) {
@@ -838,7 +840,7 @@ func TestReadContextFromTargetChain(t *testing.T) {
838
840
mid , ok := m ["mid" ]
839
841
require .True (t , ok )
840
842
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 ])
842
844
require .Equal (t , 1 , len (mid .Contexts ))
843
845
844
846
base , ok := m ["base" ]
@@ -922,8 +924,7 @@ func TestReadTargetsDefault(t *testing.T) {
922
924
Data : []byte (`
923
925
target "default" {
924
926
dockerfile = "test"
925
- }` ),
926
- }
927
+ }` )}
927
928
928
929
m , g , err := ReadTargets (ctx , []File {f }, []string {"default" }, nil , nil )
929
930
require .NoError (t , err )
@@ -941,8 +942,7 @@ func TestReadTargetsSpecified(t *testing.T) {
941
942
Data : []byte (`
942
943
target "image" {
943
944
dockerfile = "test"
944
- }` ),
945
- }
945
+ }` )}
946
946
947
947
_ , _ , err := ReadTargets (ctx , []File {f }, []string {"default" }, nil , nil )
948
948
require .Error (t , err )
@@ -967,8 +967,7 @@ group "foo" {
967
967
}
968
968
target "image" {
969
969
dockerfile = "test"
970
- }` ),
971
- }
970
+ }` )}
972
971
973
972
m , g , err := ReadTargets (ctx , []File {f }, []string {"foo" }, nil , nil )
974
973
require .NoError (t , err )
@@ -994,8 +993,7 @@ target "foo" {
994
993
}
995
994
target "image" {
996
995
dockerfile = "test"
997
- }` ),
998
- }
996
+ }` )}
999
997
1000
998
m , g , err := ReadTargets (ctx , []File {f }, []string {"foo" }, nil , nil )
1001
999
require .NoError (t , err )
@@ -1038,8 +1036,7 @@ target "image-release" {
1038
1036
inherits = ["image"]
1039
1037
output = ["type=image,push=true"]
1040
1038
tags = ["user/app:latest"]
1041
- }` ),
1042
- }
1039
+ }` )}
1043
1040
1044
1041
fyml := File {
1045
1042
Name : "docker-compose.yml" ,
@@ -1063,8 +1060,7 @@ services:
1063
1060
args:
1064
1061
CT_ECR: foo
1065
1062
CT_TAG: bar
1066
- image: ct-fake-aws:bar` ),
1067
- }
1063
+ image: ct-fake-aws:bar` )}
1068
1064
1069
1065
fjson := File {
1070
1066
Name : "docker-bake.json" ,
@@ -1085,24 +1081,23 @@ services:
1085
1081
]
1086
1082
}
1087
1083
}
1088
- }` ),
1089
- }
1084
+ }` )}
1090
1085
1091
1086
m , g , err := ReadTargets (ctx , []File {fhcl }, []string {"default" }, nil , nil )
1092
1087
require .NoError (t , err )
1093
1088
require .Equal (t , 1 , len (g ))
1094
1089
require .Equal (t , []string {"image" }, g ["default" ].Targets )
1095
1090
require .Equal (t , 1 , len (m ))
1096
1091
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 ])
1098
1093
1099
1094
m , g , err = ReadTargets (ctx , []File {fhcl }, []string {"image-release" }, nil , nil )
1100
1095
require .NoError (t , err )
1101
1096
require .Equal (t , 1 , len (g ))
1102
1097
require .Equal (t , []string {"image-release" }, g ["default" ].Targets )
1103
1098
require .Equal (t , 1 , len (m ))
1104
1099
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 ])
1106
1101
1107
1102
m , g , err = ReadTargets (ctx , []File {fhcl }, []string {"image" , "image-release" }, nil , nil )
1108
1103
require .NoError (t , err )
@@ -1111,7 +1106,7 @@ services:
1111
1106
require .Equal (t , 2 , len (m ))
1112
1107
require .Equal (t , "." , * m ["image" ].Context )
1113
1108
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 ])
1115
1110
1116
1111
m , g , err = ReadTargets (ctx , []File {fyml , fhcl }, []string {"default" }, nil , nil )
1117
1112
require .NoError (t , err )
@@ -1171,8 +1166,7 @@ target "foo" {
1171
1166
}
1172
1167
target "image" {
1173
1168
output = ["type=docker"]
1174
- }` ),
1175
- }
1169
+ }` )}
1176
1170
1177
1171
m , g , err := ReadTargets (ctx , []File {f }, []string {"foo" }, nil , nil )
1178
1172
require .NoError (t , err )
@@ -1206,8 +1200,7 @@ target "foo" {
1206
1200
}
1207
1201
target "image" {
1208
1202
output = ["type=docker"]
1209
- }` ),
1210
- }
1203
+ }` )}
1211
1204
1212
1205
m , g , err := ReadTargets (ctx , []File {f }, []string {"foo" }, nil , nil )
1213
1206
require .NoError (t , err )
@@ -1216,7 +1209,7 @@ target "image" {
1216
1209
require .Equal (t , []string {"foo" , "image" }, g ["foo" ].Targets )
1217
1210
require .Equal (t , 2 , len (m ))
1218
1211
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 ])
1220
1213
1221
1214
m , g , err = ReadTargets (ctx , []File {f }, []string {"foo" , "image" }, nil , nil )
1222
1215
require .NoError (t , err )
@@ -1225,7 +1218,7 @@ target "image" {
1225
1218
require .Equal (t , []string {"foo" , "image" }, g ["foo" ].Targets )
1226
1219
require .Equal (t , 2 , len (m ))
1227
1220
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 ])
1229
1222
}
1230
1223
1231
1224
func TestNestedInherits (t * testing.T ) {
@@ -1254,8 +1247,7 @@ target "c" {
1254
1247
}
1255
1248
target "d" {
1256
1249
inherits = ["b", "c"]
1257
- }` ),
1258
- }
1250
+ }` )}
1259
1251
1260
1252
cases := []struct {
1261
1253
name string
@@ -1323,8 +1315,7 @@ group "default" {
1323
1315
"child1",
1324
1316
"child2"
1325
1317
]
1326
- }` ),
1327
- }
1318
+ }` )}
1328
1319
1329
1320
cases := []struct {
1330
1321
name string
@@ -1360,9 +1351,9 @@ group "default" {
1360
1351
require .Equal (t , []string {"child1" , "child2" }, g ["default" ].Targets )
1361
1352
require .Equal (t , 2 , len (m ))
1362
1353
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 )
1364
1355
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 )
1366
1357
})
1367
1358
}
1368
1359
}
@@ -1451,8 +1442,7 @@ group "e" {
1451
1442
1452
1443
target "f" {
1453
1444
context = "./foo"
1454
- }` ),
1455
- }
1445
+ }` )}
1456
1446
1457
1447
cases := []struct {
1458
1448
names []string
@@ -1731,7 +1721,7 @@ func TestAnnotations(t *testing.T) {
1731
1721
1732
1722
require .Equal (t , 1 , len (m ))
1733
1723
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 ])
1735
1725
require .Equal (t , "manifest[linux/amd64]:foo=bar" , m ["app" ].Annotations [0 ])
1736
1726
1737
1727
require .Len (t , bo ["app" ].Exports , 1 )
@@ -2019,11 +2009,22 @@ target "app" {
2019
2009
})
2020
2010
}
2021
2011
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
+ ` ),
2026
2024
}
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 )
2029
2030
}
0 commit comments