mirror of
https://github.com/woodpecker-ci/woodpecker.git
synced 2026-04-15 01:41:56 +00:00
Fix DAG cycle detection (#3049)
Previously a graph like this.
a <- b
^ ^
| |
c <- d
Was incorrectly recognized as having a cycle.
Fixes #3048.
This commit is contained in:
@@ -102,6 +102,8 @@ func dfsVisit(steps map[string]*dagCompilerStep, name string, visited map[string
|
||||
}
|
||||
}
|
||||
|
||||
delete(visited, name)
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
|
||||
@@ -51,6 +51,26 @@ func TestConvertDAGToStages(t *testing.T) {
|
||||
_, err = convertDAGToStages(steps, "")
|
||||
assert.NoError(t, err)
|
||||
|
||||
steps = map[string]*dagCompilerStep{
|
||||
"a": {
|
||||
step: &backend_types.Step{},
|
||||
},
|
||||
"b": {
|
||||
step: &backend_types.Step{},
|
||||
dependsOn: []string{"a"},
|
||||
},
|
||||
"c": {
|
||||
step: &backend_types.Step{},
|
||||
dependsOn: []string{"a"},
|
||||
},
|
||||
"d": {
|
||||
step: &backend_types.Step{},
|
||||
dependsOn: []string{"b", "c"},
|
||||
},
|
||||
}
|
||||
_, err = convertDAGToStages(steps, "")
|
||||
assert.NoError(t, err)
|
||||
|
||||
steps = map[string]*dagCompilerStep{
|
||||
"step1": {
|
||||
step: &backend_types.Step{},
|
||||
|
||||
Reference in New Issue
Block a user