@@ -19,10 +19,14 @@ package container
1919import  (
2020	"testing" 
2121
22+ 	"gotest.tools/v3/assert" 
23+ 
2224	"github.com/containerd/nerdctl/mod/tigron/expect" 
2325	"github.com/containerd/nerdctl/mod/tigron/require" 
2426	"github.com/containerd/nerdctl/mod/tigron/test" 
27+ 	"github.com/containerd/nerdctl/mod/tigron/tig" 
2528
29+ 	"github.com/containerd/nerdctl/v2/pkg/inspecttypes/native" 
2630	"github.com/containerd/nerdctl/v2/pkg/testutil" 
2731	"github.com/containerd/nerdctl/v2/pkg/testutil/nerdtest" 
2832)
@@ -86,3 +90,52 @@ func TestCommit(t *testing.T) {
8690
8791	testCase .Run (t )
8892}
93+ 
94+ func  TestZstdCommit (t  * testing.T ) {
95+ 	testCase  :=  nerdtest .Setup ()
96+ 	testCase .Require  =  require .All (
97+ 		// FIXME: Docker  does not support compression 
98+ 		require .Not (nerdtest .Docker ),
99+ 		nerdtest .ContainerdVersionV2 ,
100+ 		nerdtest .CGroup ,
101+ 	)
102+ 	testCase .Cleanup  =  func (data  test.Data , helpers  test.Helpers ) {
103+ 		helpers .Anyhow ("rm" , "-f" , data .Identifier ())
104+ 		helpers .Anyhow ("rmi" , "-f" , data .Identifier ("image" ))
105+ 	}
106+ 	testCase .Setup  =  func (data  test.Data , helpers  test.Helpers ) {
107+ 		identifier  :=  data .Identifier ()
108+ 		helpers .Ensure ("run" , "-d" , "--name" , identifier , testutil .CommonImage , "sleep" , nerdtest .Infinity )
109+ 		nerdtest .EnsureContainerStarted (helpers , identifier )
110+ 		helpers .Ensure ("exec" , identifier , "sh" , "-euxc" , `echo hello-test-commit > /foo` )
111+ 		helpers .Ensure ("commit" , identifier , data .Identifier ("image" ), "--compression=zstd" )
112+ 		data .Labels ().Set ("image" , data .Identifier ("image" ))
113+ 	}
114+ 
115+ 	testCase .SubTests  =  []* test.Case {
116+ 		{
117+ 			Description : "verify zstd has been used" ,
118+ 			Command : func (data  test.Data , helpers  test.Helpers ) test.TestableCommand  {
119+ 				return  helpers .Command ("image" , "inspect" , "--mode=native" , data .Labels ().Get ("image" ))
120+ 			},
121+ 			Expected : func (data  test.Data , helpers  test.Helpers ) * test.Expected  {
122+ 				return  & test.Expected {
123+ 					ExitCode : 0 ,
124+ 					Output : expect .JSON ([]native.Image {}, func (images  []native.Image , s  string , t  tig.T ) {
125+ 						assert .Equal (t , len (images ), 1 )
126+ 						assert .Equal (helpers .T (), images [0 ].Manifest .Layers [len (images [0 ].Manifest .Layers )- 1 ].MediaType , "application/vnd.docker.image.rootfs.diff.tar.zstd" )
127+ 					}),
128+ 				}
129+ 			},
130+ 		},
131+ 		{
132+ 			Description : "verify the image is working" ,
133+ 			Command : func (data  test.Data , helpers  test.Helpers ) test.TestableCommand  {
134+ 				return  helpers .Command ("run" , "--rm" , data .Labels ().Get ("image" ), "sh" , "-c" , "--" , "cat /foo" )
135+ 			},
136+ 			Expected : test .Expects (0 , nil , expect .Equals ("hello-test-commit\n " )),
137+ 		},
138+ 	}
139+ 
140+ 	testCase .Run (t )
141+ }
0 commit comments