Skip to content

Commit 7607718

Browse files
committed
switch tactics
Signed-off-by: grokspawn <[email protected]>
1 parent b5c503a commit 7607718

File tree

2 files changed

+13
-1
lines changed

2 files changed

+13
-1
lines changed

alpha/model/model.go

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -288,6 +288,10 @@ func (c *Channel) validateReplacesChain() error {
288288
if _, ok := chainFrom[cur.Name]; !ok {
289289
chainFrom[cur.Name] = []string{cur.Name}
290290
}
291+
// if the replaces edge is known to be skipped, disregard it
292+
if skippedBundles.Has(cur.Replaces) {
293+
break
294+
}
291295
for k := range chainFrom {
292296
chainFrom[k] = append(chainFrom[k], cur.Replaces)
293297
}

alpha/model/model_test.go

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -164,7 +164,15 @@ func TestValidReplacesChain(t *testing.T) {
164164
}},
165165
assertion: hasError(`channel contains one or more stranded bundles: anakin.v0.0.1`),
166166
},
167-
}
167+
{
168+
name: "Error/SkippedReplacesStranded",
169+
ch: Channel{Bundles: map[string]*Bundle{
170+
"anakin.v0.0.1": {Name: "anakin.v0.0.1"},
171+
"anakin.v0.0.2": {Name: "anakin.v0.0.2", Replaces: "anakin.v0.0.1"},
172+
"anakin.v0.0.3": {Name: "anakin.v0.0.3", Replaces: "anakin.v0.0.2", Skips: []string{"anakin.v0.0.2"}},
173+
}},
174+
assertion: hasError(`channel contains one or more stranded bundles: anakin.v0.0.1`),
175+
}}
168176
for _, s := range specs {
169177
t.Run(s.name, func(t *testing.T) {
170178
err := s.ch.validateReplacesChain()

0 commit comments

Comments
 (0)