Skip to content

Commit ad389c4

Browse files
committed
add unit tests for channel validation stranding scenarios
1 parent a88a5cc commit ad389c4

File tree

1 file changed

+50
-4
lines changed

1 file changed

+50
-4
lines changed

alpha/model/model_test.go

Lines changed: 50 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -156,13 +156,59 @@ func TestValidReplacesChain(t *testing.T) {
156156
assertion: hasError(`detected cycle in replaces chain of upgrade graph: anakin.v0.0.3 -> anakin.v0.0.2 -> anakin.v0.0.1 -> anakin.v0.0.3`),
157157
},
158158
{
159-
name: "Error/Stranded",
159+
name: "Error/StrandedSkipsBeforeReplaces",
160160
ch: Channel{Bundles: map[string]*Bundle{
161161
"anakin.v0.0.1": {Name: "anakin.v0.0.1"},
162162
"anakin.v0.0.2": {Name: "anakin.v0.0.2", Replaces: "anakin.v0.0.1"},
163-
"anakin.v0.0.3": {Name: "anakin.v0.0.3", Skips: []string{"anakin.v0.0.2"}},
163+
"anakin.v0.0.3": {Name: "anakin.v0.0.3", Replaces: "anakin.v0.0.2"},
164+
"anakin.v0.0.4": {Name: "anakin.v0.0.4", Replaces: "anakin.v0.0.3"},
165+
"anakin.v0.0.5": {Name: "anakin.v0.0.5", Replaces: "anakin.v0.0.4", Skips: []string{"anakin.v0.0.3"}},
166+
}},
167+
assertion: hasError(`channel contains one or more stranded bundles: anakin.v0.0.1, anakin.v0.0.2`),
168+
},
169+
{
170+
name: "Error/StrandedSkipsWithReplaces",
171+
ch: Channel{Bundles: map[string]*Bundle{
172+
"anakin.v0.0.1": {Name: "anakin.v0.0.1"},
173+
"anakin.v0.0.2": {Name: "anakin.v0.0.2", Replaces: "anakin.v0.0.1"},
174+
"anakin.v0.0.3": {Name: "anakin.v0.0.3", Replaces: "anakin.v0.0.2"},
175+
"anakin.v0.0.4": {Name: "anakin.v0.0.4", Replaces: "anakin.v0.0.3", Skips: []string{"anakin.v0.0.3"}},
176+
"anakin.v0.0.5": {Name: "anakin.v0.0.5", Replaces: "anakin.v0.0.4"},
164177
}},
165-
assertion: hasError(`channel contains one or more stranded bundles: anakin.v0.0.1`),
178+
assertion: hasError(`channel contains one or more stranded bundles: anakin.v0.0.1, anakin.v0.0.2`),
179+
},
180+
{
181+
name: "Error/StrandedSkipsAfterReplaces",
182+
ch: Channel{Bundles: map[string]*Bundle{
183+
"anakin.v0.0.1": {Name: "anakin.v0.0.1"},
184+
"anakin.v0.0.2": {Name: "anakin.v0.0.2", Replaces: "anakin.v0.0.1"},
185+
"anakin.v0.0.3": {Name: "anakin.v0.0.3", Replaces: "anakin.v0.0.2", Skips: []string{"anakin.v0.0.3"}},
186+
"anakin.v0.0.4": {Name: "anakin.v0.0.4", Replaces: "anakin.v0.0.3"},
187+
"anakin.v0.0.5": {Name: "anakin.v0.0.5", Replaces: "anakin.v0.0.4"},
188+
}},
189+
assertion: hasError(`channel contains one or more stranded bundles: anakin.v0.0.1, anakin.v0.0.2`),
190+
},
191+
{
192+
name: "Error/StrandingIsCommutative",
193+
ch: Channel{Bundles: map[string]*Bundle{
194+
"anakin.v0.0.1": {Name: "anakin.v0.0.1"},
195+
"anakin.v0.0.2": {Name: "anakin.v0.0.2", Replaces: "anakin.v0.0.1"},
196+
"anakin.v0.0.3": {Name: "anakin.v0.0.3", Replaces: "anakin.v0.0.2"},
197+
"anakin.v0.0.4": {Name: "anakin.v0.0.4", Replaces: "anakin.v0.0.3", Skips: []string{"anakin.v0.0.2"}, SkipRange: "<=1.0.1"},
198+
"anakin.v0.0.5": {Name: "anakin.v0.0.5", Skips: []string{"anakin.v0.0.4"}},
199+
}},
200+
assertion: hasError(`channel contains one or more stranded bundles: anakin.v0.0.1, anakin.v0.0.2, anakin.v0.0.3`),
201+
},
202+
{
203+
name: "Success/StrandedSkipsTheTail",
204+
ch: Channel{Bundles: map[string]*Bundle{
205+
"anakin.v0.0.1": {Name: "anakin.v0.0.1"},
206+
"anakin.v0.0.2": {Name: "anakin.v0.0.2", Replaces: "anakin.v0.0.1", Skips: []string{"anakin.v0.0.1"}},
207+
"anakin.v0.0.3": {Name: "anakin.v0.0.3", Replaces: "anakin.v0.0.2"},
208+
"anakin.v0.0.4": {Name: "anakin.v0.0.4", Replaces: "anakin.v0.0.3"},
209+
"anakin.v0.0.5": {Name: "anakin.v0.0.5", Replaces: "anakin.v0.0.4"},
210+
}},
211+
assertion: require.NoError,
166212
},
167213
}
168214
for _, s := range specs {
@@ -196,7 +242,7 @@ func hasError(expectedError string) require.ErrorAssertionFunc {
196242
}
197243
}
198244
t.Errorf("expected error to be or contain suberror `%s`, got `%s`", expectedError, actualError)
199-
t.FailNow()
245+
//t.FailNow()
200246
}
201247
}
202248

0 commit comments

Comments
 (0)