hix-0.9.0: test/Hix/Test/Managed/Bump/CandidatesTest.hs
module Hix.Test.Managed.Bump.CandidatesTest (test_candidatesBump) where
import Distribution.Version (Version)
import Hedgehog ((===))
import Hix.Data.PackageName (PackageName)
import Hix.Data.VersionBounds (VersionBounds)
import Hix.Managed.Bump.Candidates (candidatesBump)
import qualified Hix.Managed.Data.Bump
import Hix.Managed.Data.Bump (Bump (Bump))
import Hix.Managed.Data.Mutable (MutableDep)
import qualified Hix.Managed.Data.Mutation
import Hix.Managed.Data.Mutation (DepMutation (DepMutation))
import qualified Hix.Managed.Handlers.AvailableVersions as AvailableVersions
import Hix.Managed.Handlers.Build (BuildHandlers (..), handlersNull)
import Hix.Managed.QueryDep (simpleQueryDep)
import Hix.Monad (M, clientError)
import Hix.Test.Run (runMTestDir)
import Hix.Test.Utils (UnitTest, toTestT)
deps :: [(MutableDep, VersionBounds)]
deps =
[
("dep1", "^>=2.0"),
("dep2", "<1.5"),
("dep3", ">=0"),
("dep5", "==1.0.1"),
("dep6", "<8.4"),
("dep7", "^>=1.1")
]
dep1Version :: Version
dep1Version = [2, 2, 0, 5]
dep2Version :: Version
dep2Version = [1, 7, 14]
dep3Version :: Version
dep3Version = [1, 0, 5]
dep4Version :: Version
dep4Version = [2, 4, 5]
dep5Version :: Version
dep5Version = [1, 9, 1, 0]
dep6Version :: Version
dep6Version = [7, 3]
dep7Version :: Version
dep7Version = [1, 1, 1]
latestVersion :: PackageName -> M (Maybe Version)
latestVersion =
fmap Just . \case
"dep1" -> pure dep1Version
"dep2" -> pure dep2Version
"dep3" -> pure dep3Version
"dep4" -> pure dep4Version
"dep5" -> pure dep5Version
"dep6" -> pure dep6Version
"dep7" -> pure dep7Version
_ -> clientError "No such package"
handlersTest :: BuildHandlers
handlersTest =
handlersNull {
versions = AvailableVersions.handlersActionOne latestVersion
}
target :: [DepMutation Bump]
target =
[
mkBump "dep6" dep6Bound dep6Version,
mkBump "dep1" dep1Bound dep1Version,
DepMutation {package = "dep7", retract = False, mutation = Bump {version = [1, 1, 1], bound = [1, 2], changed = True}},
mkBump "dep2" dep2Bound dep2Version,
mkBump "dep5" dep5Bound dep5Version,
mkBump "dep3" dep3Bound dep3Version
]
where
mkBump name bound newVersion =
DepMutation {
package = fromString name,
retract = False,
mutation = Bump {
version = newVersion,
bound,
changed = True
}
}
dep1Bound = [2, 3]
dep2Bound = [1, 8]
dep3Bound = [1, 1]
dep5Bound = [1, 10]
dep6Bound = [7, 4]
test_candidatesBump :: UnitTest
test_candidatesBump = do
mutations <- toTestT do
runMTestDir def do
catMaybes <$> traverse (candidatesBump handlersTest) query
sortOn (.package) target === sortOn (.package) (toList mutations)
where
query = uncurry simpleQueryDep <$> deps