@@ -18,13 +18,13 @@ package builder
18
18
19
19
import (
20
20
"fmt"
21
- "os"
22
21
"path/filepath"
23
22
"strings"
24
23
"testing"
25
24
26
25
"gotest.tools/v3/assert"
27
26
27
+ "github.com/containerd/nerdctl/mod/tigron/expect"
28
28
"github.com/containerd/nerdctl/mod/tigron/require"
29
29
"github.com/containerd/nerdctl/mod/tigron/test"
30
30
@@ -44,17 +44,17 @@ func TestBuildContextWithOCILayout(t *testing.T) {
44
44
),
45
45
Cleanup : func (data test.Data , helpers test.Helpers ) {
46
46
if nerdtest .IsDocker () {
47
- helpers .Anyhow ("buildx" , "stop" , data .Identifier ("- container" ))
48
- helpers .Anyhow ("buildx" , "rm" , "--force" , data .Identifier ("- container" ))
47
+ helpers .Anyhow ("buildx" , "stop" , data .Identifier ("container" ))
48
+ helpers .Anyhow ("buildx" , "rm" , "--force" , data .Identifier ("container" ))
49
49
}
50
- helpers .Anyhow ("rmi" , "-f" , data .Identifier ("- parent" ))
51
- helpers .Anyhow ("rmi" , "-f" , data .Identifier ("- child" ))
50
+ helpers .Anyhow ("rmi" , "-f" , data .Identifier ("parent" ))
51
+ helpers .Anyhow ("rmi" , "-f" , data .Identifier ("child" ))
52
52
},
53
53
Setup : func (data test.Data , helpers test.Helpers ) {
54
54
// Default docker driver does not support OCI exporter.
55
55
// Reference: https://docs.docker.com/build/exporters/oci-docker/
56
56
if nerdtest .IsDocker () {
57
- name := data .Identifier ("- container" )
57
+ name := data .Identifier ("container" )
58
58
helpers .Ensure ("buildx" , "create" , "--name" , name , "--driver=docker-container" )
59
59
dockerBuilderArgs = []string {"buildx" , "--builder" , name }
60
60
}
@@ -63,33 +63,35 @@ func TestBuildContextWithOCILayout(t *testing.T) {
63
63
LABEL layer=oci-layout-parent
64
64
CMD ["echo", "test-nerdctl-build-context-oci-layout-parent"]` , testutil .CommonImage )
65
65
66
- buildCtx := data .TempDir ( )
67
- err := os . WriteFile ( filepath . Join ( buildCtx , "Dockerfile" ), [] byte ( dockerfile ), 0o600 )
68
- assert . NilError ( helpers . T (), err )
66
+ data .Temp (). Save ( dockerfile , "Dockerfile" )
67
+ dest := data . Temp (). Dir ( "parent" )
68
+ tarPath := data . Temp (). Path ( "parent.tar" )
69
69
70
- tarPath := filepath .Join (buildCtx , "parent.tar" )
71
- dest := filepath .Join (buildCtx , "parent" )
72
- assert .NilError (helpers .T (), os .MkdirAll (dest , 0o700 ))
73
- helpers .Ensure ("build" , buildCtx , "--tag" , data .Identifier ("-parent" ))
74
- helpers .Ensure ("image" , "save" , "--output" , tarPath , data .Identifier ("-parent" ))
75
- helpers .Custom ("tar" , "Cxf" , dest , tarPath ).Run (& test.Expected {})
70
+ helpers .Ensure ("build" , data .Temp ().Path (), "--tag" , data .Identifier ("parent" ))
71
+ helpers .Ensure ("image" , "save" , "--output" , tarPath , data .Identifier ("parent" ))
72
+ helpers .Custom ("tar" , "Cxf" , dest , tarPath ).Run (& test.Expected {
73
+ ExitCode : expect .ExitCodeSuccess ,
74
+ })
76
75
},
77
76
78
77
Command : func (data test.Data , helpers test.Helpers ) test.TestableCommand {
79
78
dockerfile := `FROM parent
80
79
CMD ["echo", "test-nerdctl-build-context-oci-layout"]`
81
-
82
- buildCtx := data .TempDir ()
83
- err := os .WriteFile (filepath .Join (buildCtx , "Dockerfile" ), []byte (dockerfile ), 0o600 )
84
- assert .NilError (helpers .T (), err )
80
+ data .Temp ().Save (dockerfile , "Dockerfile" )
85
81
86
82
var cmd test.TestableCommand
87
83
if nerdtest .IsDocker () {
88
84
cmd = helpers .Command (dockerBuilderArgs ... )
89
85
} else {
90
86
cmd = helpers .Command ()
91
87
}
92
- cmd .WithArgs ("build" , buildCtx , fmt .Sprintf ("--build-context=parent=oci-layout://%s" , filepath .Join (buildCtx , "parent" )), "--tag" , data .Identifier ("-child" ))
88
+ cmd .WithArgs (
89
+ "build" ,
90
+ data .Temp ().Path (),
91
+ fmt .Sprintf ("--build-context=parent=oci-layout://%s" , filepath .Join (data .Temp ().Path (), "parent" )),
92
+ "--tag" ,
93
+ data .Identifier ("child" ),
94
+ )
93
95
if nerdtest .IsDocker () {
94
96
// Need to load the container image from the builder to be able to run it.
95
97
cmd .WithArgs ("--load" )
@@ -99,7 +101,14 @@ CMD ["echo", "test-nerdctl-build-context-oci-layout"]`
99
101
Expected : func (data test.Data , helpers test.Helpers ) * test.Expected {
100
102
return & test.Expected {
101
103
Output : func (stdout string , info string , t * testing.T ) {
102
- assert .Assert (t , strings .Contains (helpers .Capture ("run" , "--rm" , data .Identifier ("-child" )), "test-nerdctl-build-context-oci-layout" ), info )
104
+ assert .Assert (
105
+ t ,
106
+ strings .Contains (
107
+ helpers .Capture ("run" , "--rm" , data .Identifier ("child" )),
108
+ "test-nerdctl-build-context-oci-layout" ,
109
+ ),
110
+ info ,
111
+ )
103
112
},
104
113
}
105
114
},
0 commit comments