@@ -14,6 +14,7 @@ import (
1414 "github.com/containers/podman/v5/utils"
1515 . "github.com/onsi/ginkgo/v2"
1616 . "github.com/onsi/gomega"
17+ imgspec "github.com/opencontainers/image-spec/specs-go/v1"
1718)
1819
1920const (
@@ -99,8 +100,12 @@ var _ = Describe("Podman artifact", func() {
99100 It ("podman artifact add with options" , func () {
100101 yamlType := "text/yaml"
101102 artifact1Name := "localhost/test/artifact1"
103+ artifact2Name := "localhost/test/artifact2"
104+ artifact3Name := "localhost/test/artifact3"
102105 artifact1File , err := createArtifactFile (1024 )
103106 Expect (err ).ToNot (HaveOccurred ())
107+ artifact2File , err := createArtifactFile (1024 )
108+ Expect (err ).ToNot (HaveOccurred ())
104109
105110 artifactType := "octet/foobar"
106111 annotation1 := "color=blue"
@@ -115,9 +120,26 @@ var _ = Describe("Podman artifact", func() {
115120 Expect (a .Manifest .Layers [0 ].Annotations ["flavor" ]).To (Equal ("lemon" ))
116121 Expect (a .Manifest .Layers [0 ].MediaType ).To (Equal (yamlType ))
117122
118- failSession := podmanTest .Podman ([]string {"artifact" , "add" , "--annotation" , "org.opencontainers.image.title=foobar" , "foobar" , artifact1File })
123+ title := RandomString (12 )
124+ annotation3 := fmt .Sprintf ("%s=%s" , imgspec .AnnotationTitle , title )
125+ podmanTest .PodmanExitCleanly ("artifact" , "add" , "--annotation" , annotation3 , artifact2Name , artifact1File )
126+ a = podmanTest .InspectArtifact (artifact2Name )
127+ Expect (a .Manifest .Layers [0 ].Annotations [imgspec .AnnotationTitle ]).To (Equal (title ))
128+
129+ failSession := podmanTest .Podman ([]string {"artifact" , "add" , "--append" , "--annotation" , annotation3 , artifact2Name , artifact2File })
119130 failSession .WaitWithDefaultTimeout ()
120- Expect (failSession ).Should (ExitWithError (125 , "Error: cannot override filename with org.opencontainers.image.title annotation" ))
131+ Expect (failSession ).Should (ExitWithError (125 , "Error: duplicate layers org.opencontainers.image.title labels within an artifact not allowed" ))
132+
133+ title = RandomString (12 )
134+ annotation3 = fmt .Sprintf ("%s=%s" , imgspec .AnnotationTitle , title )
135+ podmanTest .PodmanExitCleanly ("artifact" , "add" , "--append" , "--annotation" , annotation3 , artifact2Name , artifact2File )
136+ a = podmanTest .InspectArtifact (artifact2Name )
137+ Expect (a .Manifest .Layers [1 ].Annotations [imgspec .AnnotationTitle ]).To (Equal (title ))
138+
139+ failSession = podmanTest .Podman ([]string {"artifact" , "add" , "--annotation" , annotation3 , artifact3Name , artifact1File , artifact2File })
140+ failSession .WaitWithDefaultTimeout ()
141+ Expect (failSession ).Should (ExitWithError (125 , "Error: duplicate layers org.opencontainers.image.title labels within an artifact not allowed" ))
142+
121143 })
122144
123145 It ("podman artifact add multiple" , func () {
@@ -480,9 +502,9 @@ var _ = Describe("Podman artifact", func() {
480502 Expect (a .Manifest .Layers ).To (HaveLen (3 ))
481503
482504 for _ , l := range a .Manifest .Layers {
483- layersNames [l .Annotations ["org.opencontainers.image.title" ]] += 1
505+ layersNames [l.Annotations [imgspec. AnnotationTitle ]] += 1
484506
485- if l .Annotations ["org.opencontainers.image.title" ] == filepath .Base (artifact3File ) {
507+ if l .Annotations [imgspec . AnnotationTitle ] == filepath .Base (artifact3File ) {
486508 Expect (l .Annotations ["color" ]).To (Equal ("blue" ))
487509 } else {
488510 Expect (l .Annotations ).To (HaveLen (1 ))
0 commit comments