Skip to content

Commit a0e2cf8

Browse files
authored
eliminate skipping same-Y.maxZ, which should only replace (#1749)
Signed-off-by: grokspawn <[email protected]>
1 parent f4f81c5 commit a0e2cf8

File tree

2 files changed

+20
-16
lines changed

2 files changed

+20
-16
lines changed

alpha/template/semver/semver.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -323,15 +323,15 @@ func (sv *semverTemplate) linkChannels(unlinkedChannels map[string]*declcfg.Chan
323323

324324
if curEdge != yProbe {
325325
if zmaxQueue != "" {
326-
// add skips edge to allow skipping over y iterations within an x stream
327-
(*entries)[preChangeIndex].Skips = append((*entries)[preChangeIndex].Skips, zmaxQueue)
328326
(*entries)[preChangeIndex].Replaces = zmaxQueue
329327
}
330328
zmaxQueue = (*entries)[preChangeIndex].Name
331329
}
332330
for curEdge < preChangeIndex {
333331
// add skips edges to y-1 from z < y
334-
(*entries)[preChangeIndex].Skips = append((*entries)[preChangeIndex].Skips, (*entries)[curEdge].Name)
332+
if (*entries)[preChangeIndex].Replaces != (*entries)[curEdge].Name {
333+
(*entries)[preChangeIndex].Skips = append((*entries)[preChangeIndex].Skips, (*entries)[curEdge].Name)
334+
}
335335
curEdge += 1
336336
}
337337
curEdge += 1

alpha/template/semver/semver_test.go

Lines changed: 17 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import (
66
"testing"
77

88
"github.com/blang/semver/v4"
9+
"github.com/google/go-cmp/cmp"
910
"github.com/stretchr/testify/require"
1011

1112
"github.com/operator-framework/operator-registry/alpha/declcfg"
@@ -157,8 +158,8 @@ func TestLinkChannels(t *testing.T) {
157158
Package: "a",
158159
Entries: []declcfg.ChannelEntry{
159160
{Name: "a-v1.1.0", Replaces: ""},
160-
{Name: "a-v1.2.1", Replaces: "a-v1.1.0", Skips: []string{"a-v1.1.0"}},
161-
{Name: "a-v1.3.1", Replaces: "a-v1.2.1", Skips: []string{"a-v1.2.1"}},
161+
{Name: "a-v1.2.1", Replaces: "a-v1.1.0"},
162+
{Name: "a-v1.3.1", Replaces: "a-v1.2.1"},
162163
},
163164
},
164165
{
@@ -169,7 +170,7 @@ func TestLinkChannels(t *testing.T) {
169170
{Name: "a-v2.1.0", Replaces: ""},
170171
{Name: "a-v2.1.1", Replaces: "", Skips: []string{"a-v2.1.0"}},
171172
{Name: "a-v2.3.1", Replaces: ""},
172-
{Name: "a-v2.3.2", Replaces: "a-v2.1.1", Skips: []string{"a-v2.1.1", "a-v2.3.1"}},
173+
{Name: "a-v2.3.2", Replaces: "a-v2.1.1", Skips: []string{"a-v2.3.1"}},
173174
},
174175
},
175176
},
@@ -195,8 +196,8 @@ func TestLinkChannels(t *testing.T) {
195196
Package: "a",
196197
Entries: []declcfg.ChannelEntry{
197198
{Name: "a-v1.1.0", Replaces: ""},
198-
{Name: "a-v1.2.1", Replaces: "a-v1.1.0", Skips: []string{"a-v1.1.0"}},
199-
{Name: "a-v1.3.1", Replaces: "a-v1.2.1", Skips: []string{"a-v1.2.1"}},
199+
{Name: "a-v1.2.1", Replaces: "a-v1.1.0"},
200+
{Name: "a-v1.3.1", Replaces: "a-v1.2.1"},
200201
},
201202
},
202203
{
@@ -229,8 +230,8 @@ func TestLinkChannels(t *testing.T) {
229230
Package: "a",
230231
Entries: []declcfg.ChannelEntry{
231232
{Name: "a-v1.1.0", Replaces: ""},
232-
{Name: "a-v1.2.1", Replaces: "a-v1.1.0", Skips: []string{"a-v1.1.0"}},
233-
{Name: "a-v1.3.1", Replaces: "a-v1.2.1", Skips: []string{"a-v1.2.1"}},
233+
{Name: "a-v1.2.1", Replaces: "a-v1.1.0"},
234+
{Name: "a-v1.3.1", Replaces: "a-v1.2.1"},
234235
},
235236
},
236237
{
@@ -240,7 +241,7 @@ func TestLinkChannels(t *testing.T) {
240241
Entries: []declcfg.ChannelEntry{
241242
{Name: "a-v2.1.0", Replaces: ""},
242243
{Name: "a-v2.1.1", Replaces: "", Skips: []string{"a-v2.1.0"}},
243-
{Name: "a-v2.3.1", Replaces: "a-v2.1.1", Skips: []string{"a-v2.1.1"}},
244+
{Name: "a-v2.3.1", Replaces: "a-v2.1.1"},
244245
},
245246
},
246247
},
@@ -250,7 +251,10 @@ func TestLinkChannels(t *testing.T) {
250251
for _, tt := range tests {
251252
t.Run(tt.name, func(t *testing.T) {
252253
sv := &semverTemplate{pkg: "a", GenerateMajorChannels: tt.generateMajorChannels, GenerateMinorChannels: tt.generateMinorChannels}
253-
require.ElementsMatch(t, tt.out, sv.linkChannels(tt.unlinkedChannels, &channelOperatorVersions))
254+
diff := cmp.Diff(tt.out, sv.linkChannels(tt.unlinkedChannels, &channelOperatorVersions))
255+
if diff != "" {
256+
t.Errorf("unexpected channel diff (-expected +received):\n%s", diff)
257+
}
254258
})
255259
}
256260
}
@@ -294,13 +298,13 @@ func TestGenerateChannels(t *testing.T) {
294298
Package: "a",
295299
Entries: []declcfg.ChannelEntry{
296300
{Name: "a-v1.1.0", Replaces: ""},
297-
{Name: "a-v1.2.1", Replaces: "a-v1.1.0", Skips: []string{"a-v1.1.0"}},
301+
{Name: "a-v1.2.1", Replaces: "a-v1.1.0"},
298302
{Name: "a-v1.3.1-alpha", Replaces: ""},
299303
{Name: "a-v1.3.1-beta", Replaces: ""},
300-
{Name: "a-v1.3.1", Replaces: "a-v1.2.1", Skips: []string{"a-v1.2.1", "a-v1.3.1-alpha", "a-v1.3.1-beta"}},
304+
{Name: "a-v1.3.1", Replaces: "a-v1.2.1", Skips: []string{"a-v1.3.1-alpha", "a-v1.3.1-beta"}},
301305
{Name: "a-v1.4.1-beta1", Replaces: ""},
302306
{Name: "a-v1.4.1-beta2", Replaces: ""},
303-
{Name: "a-v1.4.1", Replaces: "a-v1.3.1", Skips: []string{"a-v1.3.1", "a-v1.4.1-beta1", "a-v1.4.1-beta2"}},
307+
{Name: "a-v1.4.1", Replaces: "a-v1.3.1", Skips: []string{"a-v1.4.1-beta1", "a-v1.4.1-beta2"}},
304308
},
305309
},
306310
{
@@ -311,7 +315,7 @@ func TestGenerateChannels(t *testing.T) {
311315
{Name: "a-v2.1.0", Replaces: ""},
312316
{Name: "a-v2.1.1", Replaces: "", Skips: []string{"a-v2.1.0"}},
313317
{Name: "a-v2.3.1", Replaces: ""},
314-
{Name: "a-v2.3.2", Replaces: "a-v2.1.1", Skips: []string{"a-v2.1.1", "a-v2.3.1"}},
318+
{Name: "a-v2.3.2", Replaces: "a-v2.1.1", Skips: []string{"a-v2.3.1"}},
315319
},
316320
},
317321
{

0 commit comments

Comments
 (0)