Skip to content

Commit

Permalink
Slight refactoring in test/resolve.jl
Browse files Browse the repository at this point in the history
This is in order to catch resolver failures
inside `@test` calls
  • Loading branch information
carlobaldassi committed Apr 22, 2017
1 parent 5b32e44 commit 3eb7115
Showing 1 changed file with 62 additions and 61 deletions.
123 changes: 62 additions & 61 deletions test/resolve.jl
Expand Up @@ -100,7 +100,7 @@ function sanity_tst(deps_data, expected_result; pkgs=[])
end
sanity_tst(deps_data; kw...) = sanity_tst(deps_data, []; kw...)

function resolve_tst(deps_data, reqs_data)
function resolve_tst(deps_data, reqs_data, want_data = nothing)
deps = deps_from_data(deps_data)
reqs = reqs_from_data(reqs_data)

Expand All @@ -109,6 +109,7 @@ function resolve_tst(deps_data, reqs_data)
#println("reqs=$reqs")
deps = Query.prune_dependencies(reqs, deps)
want = resolve(reqs, deps)
return want == want_data
end

## DEPENDENCY SCHEME 1: TWO PACKAGES, DAG
Expand All @@ -129,15 +130,15 @@ reqs_data = Any[
["B"]
]

want = resolve_tst(deps_data, reqs_data)
@test want == Dict("B"=>v"2")
want_data = Dict("B"=>v"2")
@test resolve_tst(deps_data, reqs_data, want_data)

# require just A: must bring in B
reqs_data = Any[
["A"]
]
want = resolve_tst(deps_data, reqs_data)
@test want == Dict("A"=>v"2", "B"=>v"2")
want_data = Dict("A"=>v"2", "B"=>v"2")
@test resolve_tst(deps_data, reqs_data, want_data)


## DEPENDENCY SCHEME 2: TWO PACKAGES, CYCLIC
Expand All @@ -154,22 +155,22 @@ deps_data = Any[
reqs_data = Any[
["A"]
]
want = resolve_tst(deps_data, reqs_data)
@test want == Dict("A"=>v"2", "B"=>v"2")
want_data = Dict("A"=>v"2", "B"=>v"2")
@test resolve_tst(deps_data, reqs_data, want_data)

# require just B, force lower version
reqs_data = Any[
["B", v"1", v"2"]
]
want = resolve_tst(deps_data, reqs_data)
@test want == Dict("A"=>v"2", "B"=>v"1")
want_data = Dict("A"=>v"2", "B"=>v"1")
@test resolve_tst(deps_data, reqs_data, want_data)

# require just A, force lower version
reqs_data = Any[
["A", v"1", v"2"]
]
want = resolve_tst(deps_data, reqs_data)
@test want == Dict("A"=>v"1", "B"=>v"2")
want_data = Dict("A"=>v"1", "B"=>v"2")
@test resolve_tst(deps_data, reqs_data, want_data)


## DEPENDENCY SCHEME 3: THREE PACKAGES, CYCLIC, TWO MUTUALLY EXCLUSIVE SOLUTIONS
Expand All @@ -188,22 +189,22 @@ deps_data = Any[
reqs_data = Any[
["A"]
]
want = resolve_tst(deps_data, reqs_data)
@test want == Dict("A"=>v"2", "B"=>v"1", "C"=>v"2")
want_data = Dict("A"=>v"2", "B"=>v"1", "C"=>v"2")
@test resolve_tst(deps_data, reqs_data, want_data)

# require just B (must choose solution which has the highest version for B)
reqs_data = Any[
["B"]
]
want = resolve_tst(deps_data, reqs_data)
@test want == Dict("A"=>v"1", "B"=>v"2", "C"=>v"1")
want_data = Dict("A"=>v"1", "B"=>v"2", "C"=>v"1")
@test resolve_tst(deps_data, reqs_data, want_data)

# require just A, force lower version
reqs_data = Any[
["A", v"1", v"2"]
]
want = resolve_tst(deps_data, reqs_data)
@test want == Dict("A"=>v"1", "B"=>v"2", "C"=>v"1")
want_data = Dict("A"=>v"1", "B"=>v"2", "C"=>v"1")
@test resolve_tst(deps_data, reqs_data, want_data)

# require A and C, incompatible versions
reqs_data = Any[
Expand All @@ -226,8 +227,8 @@ deps_data = Any[
reqs_data = Any[
["B"]
]
want = resolve_tst(deps_data, reqs_data)
@test want == Dict("B"=>v"1")
want_data = Dict("B"=>v"1")
@test resolve_tst(deps_data, reqs_data, want_data)


## DEPENDENCY SCHEME 5: THREE PACKAGES, DAG, WITH IMPLICIT INCONSISTENCY
Expand All @@ -250,8 +251,8 @@ deps_data = Any[
reqs_data = Any[
["A"]
]
want = resolve_tst(deps_data, reqs_data)
@test want == Dict("A"=>v"1", "B"=>v"2", "C"=>v"2")
want_data = Dict("A"=>v"1", "B"=>v"2", "C"=>v"2")
@test resolve_tst(deps_data, reqs_data, want_data)

# require A, force highest version (impossible)
reqs_data = Any[
Expand Down Expand Up @@ -301,15 +302,15 @@ deps_data = Any[
reqs_data = Any[
["A"]
]
want = resolve_tst(deps_data, reqs_data)
@test want == Dict("A"=>v"2", "B"=>v"2", "C"=>v"2")
want_data = Dict("A"=>v"2", "B"=>v"2", "C"=>v"2")
@test resolve_tst(deps_data, reqs_data, want_data)

# require C
reqs_data = Any[
["C"]
]
want = resolve_tst(deps_data, reqs_data)
@test want == Dict("A"=>v"2", "B"=>v"2", "C"=>v"2")
want_data = Dict("A"=>v"2", "B"=>v"2", "C"=>v"2")
@test resolve_tst(deps_data, reqs_data, want_data)

# require C, lowest version (impossible)
reqs_data = Any[
Expand Down Expand Up @@ -374,44 +375,44 @@ deps_data = Any[
reqs_data = Any[
["F"]
]
want = resolve_tst(deps_data, reqs_data)
@test want == Dict("A"=>v"3", "B"=>v"2", "C"=>v"2",
"D"=>v"2", "E"=>v"1", "F"=>v"2")
want_data = Dict("A"=>v"3", "B"=>v"2", "C"=>v"2",
"D"=>v"2", "E"=>v"1", "F"=>v"2")
@test resolve_tst(deps_data, reqs_data, want_data)

# require just F, lower version
reqs_data = Any[
["F", v"1", v"2"]
]
want = resolve_tst(deps_data, reqs_data)
@test want == Dict("A"=>v"2", "B"=>v"2", "D"=>v"2",
"E"=>v"1", "F"=>v"1")
want_data = Dict("A"=>v"2", "B"=>v"2", "D"=>v"2",
"E"=>v"1", "F"=>v"1")
@test resolve_tst(deps_data, reqs_data, want_data)

# require F and B; force lower B version -> must bring down F, A, and D versions too
reqs_data = Any[
["F"],
["B", v"1", v"2"]
]
want = resolve_tst(deps_data, reqs_data)
@test want == Dict("A"=>v"1", "B"=>v"1", "D"=>v"1",
"E"=>v"1", "F"=>v"1")
want_data = Dict("A"=>v"1", "B"=>v"1", "D"=>v"1",
"E"=>v"1", "F"=>v"1")
@test resolve_tst(deps_data, reqs_data, want_data)

# require F and D; force lower D version -> must not bring down F version
reqs_data = Any[
["F"],
["D", v"1", v"2"]
]
want = resolve_tst(deps_data, reqs_data)
@test want == Dict("A"=>v"3", "B"=>v"2", "C"=>v"2",
"D"=>v"1", "E"=>v"1", "F"=>v"2")
want_data = Dict("A"=>v"3", "B"=>v"2", "C"=>v"2",
"D"=>v"1", "E"=>v"1", "F"=>v"2")
@test resolve_tst(deps_data, reqs_data, want_data)

# require F and C; force lower C version -> must bring down F and A versions
reqs_data = Any[
["F"],
["C", v"1", v"2"]
]
want = resolve_tst(deps_data, reqs_data)
@test want == Dict("A"=>v"2", "B"=>v"2", "C"=>v"1",
"D"=>v"2", "E"=>v"1", "F"=>v"1")
want_data = Dict("A"=>v"2", "B"=>v"2", "C"=>v"1",
"D"=>v"2", "E"=>v"1", "F"=>v"1")
@test resolve_tst(deps_data, reqs_data, want_data)

## DEPENDENCY SCHEME 10: SIX PACKAGES, DAG, WITH PRERELEASE/BUILD VERSIONS
deps_data = Any[
Expand Down Expand Up @@ -448,44 +449,44 @@ deps_data = Any[
reqs_data = Any[
["F"]
]
want = resolve_tst(deps_data, reqs_data)
@test want == Dict("A"=>v"2.1", "B"=>v"1.0.1", "C"=>v"2",
"D"=>v"2", "E"=>v"1", "F"=>v"2")
want_data = Dict("A"=>v"2.1", "B"=>v"1.0.1", "C"=>v"2",
"D"=>v"2", "E"=>v"1", "F"=>v"2")
@test resolve_tst(deps_data, reqs_data, want_data)

# require just F, lower version
reqs_data = Any[
["F", v"1", v"2-"]
]
want = resolve_tst(deps_data, reqs_data)
@test want == Dict("A"=>v"2", "B"=>v"1.0.1", "D"=>v"2",
"E"=>v"1", "F"=>v"1.1")
want_data = Dict("A"=>v"2", "B"=>v"1.0.1", "D"=>v"2",
"E"=>v"1", "F"=>v"1.1")
@test resolve_tst(deps_data, reqs_data, want_data)

# require F and B; force lower B version -> must bring down F, A, and D versions too
reqs_data = Any[
["F"],
["B", v"1", v"1.0.1-"]
]
want = resolve_tst(deps_data, reqs_data)
@test want == Dict("A"=>v"1", "B"=>v"1", "D"=>v"1",
"E"=>v"1", "F"=>v"1.1")
want_data = Dict("A"=>v"1", "B"=>v"1", "D"=>v"1",
"E"=>v"1", "F"=>v"1.1")
@test resolve_tst(deps_data, reqs_data, want_data)

# require F and D; force lower D version -> must not bring down F version
reqs_data = Any[
["F"],
["D", v"1", v"2"]
]
want = resolve_tst(deps_data, reqs_data)
@test want == Dict("A"=>v"2.1", "B"=>v"1.0.1", "C"=>v"2",
"D"=>v"1", "E"=>v"1", "F"=>v"2")
want_data = Dict("A"=>v"2.1", "B"=>v"1.0.1", "C"=>v"2",
"D"=>v"1", "E"=>v"1", "F"=>v"2")
@test resolve_tst(deps_data, reqs_data, want_data)

# require F and C; force lower C version -> must bring down F and A versions
reqs_data = Any[
["F"],
["C", v"1", v"2"]
]
want = resolve_tst(deps_data, reqs_data)
@test want == Dict("A"=>v"2", "B"=>v"1.0.1", "C"=>v"1+BLD",
"D"=>v"2", "E"=>v"1", "F"=>v"2-rc.1")
want_data = Dict("A"=>v"2", "B"=>v"1.0.1", "C"=>v"1+BLD",
"D"=>v"2", "E"=>v"1", "F"=>v"2-rc.1")
@test resolve_tst(deps_data, reqs_data, want_data)

## DEPENDENCY SCHEME 11: FIVE PACKAGES, SAME AS SCHEMES 5 + 1, UNCONNECTED
deps_data = Any[
Expand Down Expand Up @@ -513,21 +514,21 @@ deps_data = Any[
reqs_data = Any[
["A"]
]
want = resolve_tst(deps_data, reqs_data)
@test want == Dict("A"=>v"1", "B"=>v"2", "C"=>v"2")
want_data = Dict("A"=>v"1", "B"=>v"2", "C"=>v"2")
@test resolve_tst(deps_data, reqs_data, want_data)

# require just D: must bring in E
reqs_data = Any[
["D"]
]
want = resolve_tst(deps_data, reqs_data)
@test want == Dict("D"=>v"2", "E"=>v"2")
want_data = Dict("D"=>v"2", "E"=>v"2")
@test resolve_tst(deps_data, reqs_data, want_data)


# require A and D, must be the merge of the previous two cases
reqs_data = Any[
["A"],
["D"]
]
want = resolve_tst(deps_data, reqs_data)
@test want == Dict("A"=>v"1", "B"=>v"2", "C"=>v"2", "D"=>v"2", "E"=>v"2")
want_data = Dict("A"=>v"1", "B"=>v"2", "C"=>v"2", "D"=>v"2", "E"=>v"2")
@test resolve_tst(deps_data, reqs_data, want_data)

0 comments on commit 3eb7115

Please sign in to comment.