Skip to content

Commit 0f6440d

Browse files
author
Michal Minář
committed
Sort istags alphabetically during schema conversion
Signed-off-by: Michal Minář <[email protected]>
1 parent 21f535d commit 0f6440d

File tree

3 files changed

+48
-2
lines changed

3 files changed

+48
-2
lines changed
Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
package v1
2+
3+
import (
4+
"reflect"
5+
"testing"
6+
7+
"k8s.io/apimachinery/pkg/util/diff"
8+
kapi "k8s.io/kubernetes/pkg/api"
9+
10+
newer "github.com/openshift/origin/pkg/image/apis/image"
11+
"github.com/openshift/origin/pkg/image/apis/image/v1"
12+
13+
_ "github.com/openshift/origin/pkg/image/apis/image/install"
14+
)
15+
16+
func TestImageStreamStatusConversionPreservesTags(t *testing.T) {
17+
in := &newer.ImageStreamStatus{
18+
Tags: map[string]newer.TagEventList{
19+
"v3.5.0": {},
20+
"3.5.0": {},
21+
},
22+
}
23+
expOutVersioned := &v1.ImageStreamStatus{
24+
Tags: []v1.NamedTagEventList{{Tag: "3.5.0"}, {Tag: "v3.5.0"}},
25+
}
26+
27+
outVersioned := v1.ImageStreamStatus{Tags: []v1.NamedTagEventList{}}
28+
err := kapi.Scheme.Convert(in, &outVersioned, nil)
29+
if err != nil {
30+
t.Fatalf("got unexpected error: %v", err)
31+
}
32+
if a, e := &outVersioned, expOutVersioned; !reflect.DeepEqual(a, e) {
33+
t.Fatalf("got unexpected output: %s", diff.ObjectDiff(&a, e))
34+
}
35+
36+
// convert back from v1 to internal scheme
37+
out := newer.ImageStreamStatus{}
38+
err = kapi.Scheme.Convert(&outVersioned, &out, nil)
39+
if err != nil {
40+
t.Fatalf("got unexpected error: %v", err)
41+
}
42+
if a, e := &out, in; !reflect.DeepEqual(a, e) {
43+
t.Fatalf("got unexpected output: %s", diff.ObjectDiff(&a, e))
44+
}
45+
}

pkg/image/apis/image/v1/conversion.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -231,7 +231,7 @@ func Convert_image_TagEventListArray_to_v1_NamedTagEventListArray(in *map[string
231231
for key := range *in {
232232
allKeys = append(allKeys, key)
233233
}
234-
newer.PrioritizeTags(allKeys)
234+
sort.Strings(allKeys)
235235

236236
for _, key := range allKeys {
237237
newTagEventList := (*in)[key]

test/cmd/images.sh

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -283,7 +283,8 @@ os::test::junit::declare_suite_end
283283
os::test::junit::declare_suite_start "cmd/images${IMAGES_TESTS_POSTFIX:-}/delete-istag"
284284
# test deleting a tag using oc delete
285285
os::cmd::expect_success_and_text "oc get is perl --template '{{(index .spec.tags 0).name}}'" '5.16'
286-
os::cmd::expect_success_and_text "oc get is perl --template '{{(index .status.tags 0).tag}}'" 'latest'
286+
os::cmd::expect_success_and_text "oc get is perl --template '{{(index .status.tags 0).tag}}'" '5.16'
287+
os::cmd::expect_success_and_text "oc describe is perl | sed -n -e '0,/^Tags:/d' -e '/^\s\+/d' -e '/./p' | head -n 1" 'latest'
287288
os::cmd::expect_success "oc delete istag/perl:5.16 --context='${cluster_admin_context}'"
288289
os::cmd::expect_success_and_not_text 'oc get is/perl --template={{.spec.tags}}' 'version:5.16'
289290
os::cmd::expect_success_and_not_text 'oc get is/perl --template={{.status.tags}}' 'version:5.16'

0 commit comments

Comments
 (0)