Skip to content

Commit ada705e

Browse files
carlobaldassiIanButterworth
authored andcommitted
Fix the greedy resolver (#4032)
Fix #4030 (cherry picked from commit e06588d)
1 parent ad6ec0f commit ada705e

File tree

2 files changed

+35
-1
lines changed

2 files changed

+35
-1
lines changed

src/Resolve/Resolve.jl

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -341,6 +341,8 @@ function greedysolver(graph::Graph)
341341
return (false, Int[])
342342
elseif old_v1 == spp[p1]
343343
sol[p1] = v1
344+
fill!(gconstr[p1], false)
345+
gconstr[p1][v1] = true
344346
push!(staged_next, p1)
345347
end
346348
end

test/resolve.jl

Lines changed: 33 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -611,7 +611,6 @@ end
611611
)
612612
@test resolve_tst(deps_data, reqs_data, want_data)
613613

614-
615614
# require A, D, and lower version of Y
616615
reqs_data = Any[
617616
["A", "*"],
@@ -632,6 +631,39 @@ end
632631
)
633632
@test resolve_tst(deps_data, reqs_data, want_data)
634633

634+
635+
VERBOSE && @info("SCHEME 15")
636+
## DEPENDENCY SCHEME 15: A GRAPH WITH A WEAK DEPENDENCE
637+
## (REDUCED VERSION OF A REALISTIC SCHEME, ref Pkg.jl issue #4030)
638+
deps_data = Any[
639+
["A", v"1"],
640+
["A", v"2", "C", "*"],
641+
["B", v"1", "D", "1", :weak],
642+
["C", v"1", "E", "*"],
643+
["C", v"2", "E", "*"],
644+
["C", v"2", "B", "1"],
645+
["E", v"1", "D", "1"],
646+
["E", v"2", "F", "1"],
647+
["F", v"1", "D", "*"],
648+
["D", v"1"],
649+
["D", v"2"],
650+
]
651+
652+
@test sanity_tst(deps_data)
653+
654+
reqs_data = Any[
655+
["A", "*"],
656+
]
657+
want_data = Dict(
658+
"A" => v"2",
659+
"B" => v"1",
660+
"C" => v"2",
661+
"D" => v"1",
662+
"E" => v"2",
663+
"F" => v"1",
664+
)
665+
@test resolve_tst(deps_data, reqs_data, want_data)
666+
635667
end
636668

637669
@testset "realistic" begin

0 commit comments

Comments
 (0)