@@ -18,13 +18,13 @@ package builder
1818
1919import (
2020 "fmt"
21- "os"
2221 "path/filepath"
2322 "strings"
2423 "testing"
2524
2625 "gotest.tools/v3/assert"
2726
27+ "github.com/containerd/nerdctl/mod/tigron/expect"
2828 "github.com/containerd/nerdctl/mod/tigron/require"
2929 "github.com/containerd/nerdctl/mod/tigron/test"
3030
@@ -44,17 +44,17 @@ func TestBuildContextWithOCILayout(t *testing.T) {
4444 ),
4545 Cleanup : func (data test.Data , helpers test.Helpers ) {
4646 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" ))
4949 }
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" ))
5252 },
5353 Setup : func (data test.Data , helpers test.Helpers ) {
5454 // Default docker driver does not support OCI exporter.
5555 // Reference: https://docs.docker.com/build/exporters/oci-docker/
5656 if nerdtest .IsDocker () {
57- name := data .Identifier ("- container" )
57+ name := data .Identifier ("container" )
5858 helpers .Ensure ("buildx" , "create" , "--name" , name , "--driver=docker-container" )
5959 dockerBuilderArgs = []string {"buildx" , "--builder" , name }
6060 }
@@ -63,33 +63,35 @@ func TestBuildContextWithOCILayout(t *testing.T) {
6363LABEL layer=oci-layout-parent
6464CMD ["echo", "test-nerdctl-build-context-oci-layout-parent"]` , testutil .CommonImage )
6565
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" )
6969
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+ })
7675 },
7776
7877 Command : func (data test.Data , helpers test.Helpers ) test.TestableCommand {
7978 dockerfile := `FROM parent
8079CMD ["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" )
8581
8682 var cmd test.TestableCommand
8783 if nerdtest .IsDocker () {
8884 cmd = helpers .Command (dockerBuilderArgs ... )
8985 } else {
9086 cmd = helpers .Command ()
9187 }
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+ )
9395 if nerdtest .IsDocker () {
9496 // Need to load the container image from the builder to be able to run it.
9597 cmd .WithArgs ("--load" )
@@ -99,7 +101,14 @@ CMD ["echo", "test-nerdctl-build-context-oci-layout"]`
99101 Expected : func (data test.Data , helpers test.Helpers ) * test.Expected {
100102 return & test.Expected {
101103 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+ )
103112 },
104113 }
105114 },
0 commit comments