Cabal-1.22.1.0: tests/PackageTests/ReexportedModules/Check.hs
module PackageTests.ReexportedModules.Check where
import Data.Version
import PackageTests.PackageTester
import System.FilePath
import Test.HUnit
import Data.Maybe
import Data.List
import Control.Monad
import Data.Char
import Text.ParserCombinators.ReadP
orFail :: String -> [(a, String)] -> a
orFail err r = case find (all isSpace . snd) r of
Nothing -> error err
Just (i, _) -> i
find' :: (a -> Bool) -> [a] -> Maybe a
find' = find
suite :: FilePath -> Test
suite ghcPath = TestCase $ do
-- ToDo: Turn this into a utility function
(_, _, xs) <- run Nothing ghcPath [] ["--info"]
let compat = (>= Version [7,9] [])
. orFail "could not parse version"
. readP_to_S parseVersion
. snd
. fromJust
. find' ((=="Project version").fst)
. orFail "could not parse ghc --info output"
. reads
$ xs
when compat $ do
let spec = PackageSpec
{ directory = "PackageTests" </> "ReexportedModules"
, configOpts = []
, distPref = Nothing
}
result <- cabal_build spec ghcPath
assertBuildSucceeded result