Skip to content
GitLab
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in / Register
Toggle navigation
Menu
Open sidebar
Glasgow Haskell Compiler
Packages
Cabal
Commits
8ea6f6d2
Commit
8ea6f6d2
authored
Oct 02, 2016
by
kristenk
Browse files
Add stanza preferences to solver DSL.
parent
3b26589c
Changes
2
Hide whitespace changes
Inline
Side-by-side
cabal-install/tests/UnitTests/Distribution/Solver/Modular/DSL.hs
View file @
8ea6f6d2
...
...
@@ -153,7 +153,9 @@ exFlag :: ExampleFlagName -> [ExampleDependency] -> [ExampleDependency]
->
ExampleDependency
exFlag
n
t
e
=
ExFlag
n
(
Buildable
t
)
(
Buildable
e
)
data
ExPreference
=
ExPref
String
ExampleVersionRange
data
ExPreference
=
ExPkgPref
ExamplePkgName
ExampleVersionRange
|
ExStanzaPref
ExamplePkgName
[
OptionalStanza
]
data
ExampleAvailable
=
ExAv
{
exAvName
::
ExamplePkgName
...
...
@@ -502,7 +504,9 @@ exResolve db exts langs pkgConfigDb targets solver mbj indepGoals reorder
$
setGoalOrder
goalOrder
$
standardInstallPolicy
instIdx
avaiIdx
targets'
toLpc
pc
=
LabeledPackageConstraint
pc
ConstraintSourceUnknown
toPref
(
ExPref
n
v
)
=
PackageVersionPreference
(
C
.
mkPackageName
n
)
v
toPref
(
ExPkgPref
n
v
)
=
PackageVersionPreference
(
C
.
mkPackageName
n
)
v
toPref
(
ExStanzaPref
n
stanzas
)
=
PackageStanzasPreference
(
C
.
mkPackageName
n
)
stanzas
goalOrder
::
Maybe
(
Variable
P
.
QPN
->
Variable
P
.
QPN
->
Ordering
)
goalOrder
=
(
orderFromList
.
map
toVariable
)
`
fmap
`
vars
...
...
cabal-install/tests/UnitTests/Distribution/Solver/Modular/Solver.hs
View file @
8ea6f6d2
...
...
@@ -111,16 +111,16 @@ tests = [
]
,
testGroup
"Soft Constraints"
[
runTest
$
soft
[
ExPref
"A"
$
mkvrThis
1
]
$
mkTest
db13
"selectPreferredVersionSimple"
[
"A"
]
(
solverSuccess
[(
"A"
,
1
)])
,
runTest
$
soft
[
ExPref
"A"
$
mkvrOrEarlier
2
]
$
mkTest
db13
"selectPreferredVersionSimple2"
[
"A"
]
(
solverSuccess
[(
"A"
,
2
)])
,
runTest
$
soft
[
ExPref
"A"
$
mkvrOrEarlier
2
,
ExPref
"A"
$
mkvrOrEarlier
1
]
$
mkTest
db13
"selectPreferredVersionMultiple"
[
"A"
]
(
solverSuccess
[(
"A"
,
1
)])
,
runTest
$
soft
[
ExPref
"A"
$
mkvrOrEarlier
1
,
ExPref
"A"
$
mkvrOrEarlier
2
]
$
mkTest
db13
"selectPreferredVersionMultiple2"
[
"A"
]
(
solverSuccess
[(
"A"
,
1
)])
,
runTest
$
soft
[
ExPref
"A"
$
mkvrThis
1
,
ExPref
"A"
$
mkvrThis
2
]
$
mkTest
db13
"selectPreferredVersionMultiple3"
[
"A"
]
(
solverSuccess
[(
"A"
,
2
)])
,
runTest
$
soft
[
ExPref
"A"
$
mkvrThis
1
,
ExPref
"A"
$
mkvrOrEarlier
2
]
$
mkTest
db13
"selectPreferredVersionMultiple4"
[
"A"
]
(
solverSuccess
[(
"A"
,
1
)])
runTest
$
preferences
[
ExP
kgP
ref
"A"
$
mkvrThis
1
]
$
mkTest
db13
"selectPreferredVersionSimple"
[
"A"
]
(
solverSuccess
[(
"A"
,
1
)])
,
runTest
$
preferences
[
ExP
kgP
ref
"A"
$
mkvrOrEarlier
2
]
$
mkTest
db13
"selectPreferredVersionSimple2"
[
"A"
]
(
solverSuccess
[(
"A"
,
2
)])
,
runTest
$
preferences
[
ExP
kgP
ref
"A"
$
mkvrOrEarlier
2
,
ExP
kgP
ref
"A"
$
mkvrOrEarlier
1
]
$
mkTest
db13
"selectPreferredVersionMultiple"
[
"A"
]
(
solverSuccess
[(
"A"
,
1
)])
,
runTest
$
preferences
[
ExP
kgP
ref
"A"
$
mkvrOrEarlier
1
,
ExP
kgP
ref
"A"
$
mkvrOrEarlier
2
]
$
mkTest
db13
"selectPreferredVersionMultiple2"
[
"A"
]
(
solverSuccess
[(
"A"
,
1
)])
,
runTest
$
preferences
[
ExP
kgP
ref
"A"
$
mkvrThis
1
,
ExP
kgP
ref
"A"
$
mkvrThis
2
]
$
mkTest
db13
"selectPreferredVersionMultiple3"
[
"A"
]
(
solverSuccess
[(
"A"
,
2
)])
,
runTest
$
preferences
[
ExP
kgP
ref
"A"
$
mkvrThis
1
,
ExP
kgP
ref
"A"
$
mkvrOrEarlier
2
]
$
mkTest
db13
"selectPreferredVersionMultiple4"
[
"A"
]
(
solverSuccess
[(
"A"
,
1
)])
]
,
testGroup
"Buildable Field"
[
testBuildable
"avoid building component with unknown dependency"
(
ExAny
"unknown"
)
...
...
@@ -179,7 +179,6 @@ tests = [
]
]
where
soft
prefs
test
=
test
{
testSoftConstraints
=
prefs
}
mkvrThis
=
V
.
thisVersion
.
makeV
mkvrOrEarlier
=
V
.
orEarlierVersion
.
makeV
makeV
v
=
V
.
mkVersion
[
v
,
0
,
0
]
...
...
@@ -192,6 +191,9 @@ indep test = test { testIndepGoals = IndependentGoals True }
goalOrder
::
[
ExampleVar
]
->
SolverTest
->
SolverTest
goalOrder
order
test
=
test
{
testGoalOrder
=
Just
order
}
preferences
::
[
ExPreference
]
->
SolverTest
->
SolverTest
preferences
prefs
test
=
test
{
testSoftConstraints
=
prefs
}
data
GoalOrder
=
FixedGoalOrder
|
DefaultGoalOrder
{-------------------------------------------------------------------------------
...
...
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment