66 "path/filepath"
77 "testing"
88
9+ "github.com/containers/image/v5/pkg/compression"
910 "github.com/containers/image/v5/types"
1011 "github.com/opencontainers/go-digest"
1112 imgspecv1 "github.com/opencontainers/image-spec/specs-go/v1"
@@ -99,6 +100,23 @@ func TestOCI1EditInstances(t *testing.T) {
99100 AddPlatform : & imgspecv1.Platform {Architecture : "amd64" , OS : "linux" , OSFeatures : []string {"sse4" }},
100101 AddAnnotations : annotations ,
101102 ListOperation : ListOpAdd })
103+ // with zstd but with compression, annotation must be added automatically
104+ editInstances = append (editInstances , ListEdit {
105+ AddDigest : "sha256:hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh" ,
106+ AddSize : 32 ,
107+ AddMediaType : "application/vnd.oci.image.manifest.v1+json" ,
108+ AddPlatform : & imgspecv1.Platform {Architecture : "amd64" , OS : "linux" , OSFeatures : []string {"sse4" }},
109+ AddCompressionAlgorithms : []compression.Algorithm {compression .Zstd },
110+ AddAnnotations : map [string ]string {},
111+ ListOperation : ListOpAdd })
112+ // with zstd but with compression, annotation must be added automatically and AddAnnotations is unset
113+ editInstances = append (editInstances , ListEdit {
114+ AddDigest : "sha256:ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff" ,
115+ AddSize : 32 ,
116+ AddMediaType : "application/vnd.oci.image.manifest.v1+json" ,
117+ AddPlatform : & imgspecv1.Platform {Architecture : "amd64" , OS : "linux" , OSFeatures : []string {"sse4" }},
118+ AddCompressionAlgorithms : []compression.Algorithm {compression .Zstd },
119+ ListOperation : ListOpAdd })
102120 // without zstd
103121 editInstances = append (editInstances , ListEdit {
104122 AddDigest : "sha256:cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc" ,
@@ -110,7 +128,23 @@ func TestOCI1EditInstances(t *testing.T) {
110128 require .NoError (t , err )
111129
112130 // Zstd should be kept on lowest priority as compared to the default gzip ones and order of prior elements must be preserved.
113- assert .Equal (t , list .Instances (), []digest.Digest {digest .Digest ("sha256:e692418e4cbaf90ca69d05a66403747baa33ee08806650b51fab815ad7fc331f" ), digest .Digest ("sha256:5b0bcabd1ed22e9fb1310cf6c2dec7cdef19f0ad69efa1f392e94a4333501270" ), digest .Digest ("sha256:aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" ), digest .Digest ("sha256:cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc" ), digest .Digest ("sha256:eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee" )})
131+ assert .Equal (t , list .Instances (), []digest.Digest {digest .Digest ("sha256:e692418e4cbaf90ca69d05a66403747baa33ee08806650b51fab815ad7fc331f" ), digest .Digest ("sha256:5b0bcabd1ed22e9fb1310cf6c2dec7cdef19f0ad69efa1f392e94a4333501270" ), digest .Digest ("sha256:aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" ), digest .Digest ("sha256:cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc" ), digest .Digest ("sha256:eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee" ), digest .Digest ("sha256:hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh" ), digest .Digest ("sha256:ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff" )})
132+
133+ // Update list and remove zstd annotation from existing instance, and verify if resorting works
134+ editInstances = []ListEdit {}
135+ editInstances = append (editInstances , ListEdit {
136+ UpdateOldDigest : digest .Digest ("sha256:ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff" ),
137+ UpdateDigest : "sha256:ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff" ,
138+ UpdateSize : 32 ,
139+ UpdateMediaType : "application/vnd.oci.image.manifest.v1+json" ,
140+ UpdateAffectAnnotations : true ,
141+ UpdateAnnotations : map [string ]string {},
142+ ListOperation : ListOpUpdate })
143+ err = list .EditInstances (editInstances )
144+ require .NoError (t , err )
145+ // Digest `ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff` should be re-ordered on update.
146+ assert .Equal (t , list .Instances (), []digest.Digest {digest .Digest ("sha256:e692418e4cbaf90ca69d05a66403747baa33ee08806650b51fab815ad7fc331f" ), digest .Digest ("sha256:5b0bcabd1ed22e9fb1310cf6c2dec7cdef19f0ad69efa1f392e94a4333501270" ), digest .Digest ("sha256:aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" ), digest .Digest ("sha256:cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc" ), digest .Digest ("sha256:ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff" ), digest .Digest ("sha256:eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee" ), digest .Digest ("sha256:hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh" )})
147+
114148}
115149
116150func TestOCI1IndexChooseInstanceByCompression (t * testing.T ) {
0 commit comments