66 "path/filepath"
77 "testing"
88
9+ "github.com/containerd/platforms"
910 "github.com/stretchr/testify/require"
1011
1112 "github.com/testcontainers/testcontainers-go/internal/core"
@@ -18,7 +19,8 @@ func TestImageList(t *testing.T) {
1819 require .NoErrorf (t , err , "failed to get provider" )
1920
2021 defer func () {
21- _ = provider .Close ()
22+ err = provider .Close ()
23+ require .NoError (t , err )
2224 }()
2325
2426 req := ContainerRequest {
@@ -51,7 +53,8 @@ func TestSaveImages(t *testing.T) {
5153 require .NoErrorf (t , err , "failed to get provider" )
5254
5355 defer func () {
54- _ = provider .Close ()
56+ err = provider .Close ()
57+ require .NoError (t , err )
5558 }()
5659
5760 req := ContainerRequest {
@@ -71,3 +74,38 @@ func TestSaveImages(t *testing.T) {
7174
7275 require .NotZerof (t , info .Size (), "output file is empty" )
7376}
77+
78+ func TestSaveImagesWithOpts (t * testing.T ) {
79+ t .Setenv ("DOCKER_HOST" , core .MustExtractDockerHost (context .Background ()))
80+
81+ provider , err := ProviderDocker .GetProvider ()
82+ require .NoErrorf (t , err , "failed to get provider" )
83+
84+ defer func () {
85+ err = provider .Close ()
86+ require .NoError (t , err )
87+ }()
88+
89+ req := ContainerRequest {
90+ Image : "redis:latest" ,
91+ ImagePlatform : "linux/amd64" ,
92+ }
93+
94+ p , err := platforms .ParseAll ([]string {"linux/amd64" })
95+ require .NoError (t , err )
96+
97+ ctr , err := provider .CreateContainer (context .Background (), req )
98+ CleanupContainer (t , ctr )
99+ require .NoErrorf (t , err , "creating test container" )
100+
101+ output := filepath .Join (t .TempDir (), "images.tar" )
102+ err = provider .SaveImagesWithOpts (
103+ context .Background (), output , []string {req .Image }, SaveDockerImageWithPlatforms (p ... ),
104+ )
105+ require .NoErrorf (t , err , "saving image %q" , req .Image )
106+
107+ info , err := os .Stat (output )
108+ require .NoError (t , err )
109+
110+ require .NotZerof (t , info .Size (), "output file is empty" )
111+ }
0 commit comments