Skip to content

Commit e06588d

Browse files
Fix the greedy resolver (#4032)
Fix #4030
1 parent 51d4910 commit e06588d

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
@@ -362,6 +362,8 @@ function greedysolver(graph::Graph)
362362
return (false, Int[])
363363
elseif old_v1 == spp[p1]
364364
sol[p1] = v1
365+
fill!(gconstr[p1], false)
366+
gconstr[p1][v1] = true
365367
push!(staged_next, p1)
366368
end
367369
end

test/resolve.jl

Lines changed: 33 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -617,7 +617,6 @@ end
617617
)
618618
@test resolve_tst(deps_data, reqs_data, want_data)
619619

620-
621620
# require A, D, and lower version of Y
622621
reqs_data = Any[
623622
["A", "*"],
@@ -638,6 +637,39 @@ end
638637
)
639638
@test resolve_tst(deps_data, reqs_data, want_data)
640639

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

643675
@testset "realistic" begin

0 commit comments

Comments
 (0)