diff options
Diffstat (limited to 'tests')
-rw-r--r-- | tests/GhcSession.hs | 47 |
1 files changed, 20 insertions, 27 deletions
diff --git a/tests/GhcSession.hs b/tests/GhcSession.hs index 4845565..6e71075 100644 --- a/tests/GhcSession.hs +++ b/tests/GhcSession.hs @@ -1,10 +1,7 @@ -{-# LANGUAGE TupleSections, ScopedTypeVariables, CPP #-} +{-# LANGUAGE TupleSections, ScopedTypeVariables #-} module Main where import GHC -#if __GLASGOW_HASKELL__ <= 706 -import GhcMonad -#endif import GHC.Paths (libdir) import DynFlags @@ -19,7 +16,7 @@ import System.FilePath ((</>)) import System.Directory import System.IO import System.IO.Temp -import System.Process (readProcess) +import System.Process (rawSystem, readProcess) import Distribution.Helper @@ -31,12 +28,13 @@ main = do args <- getArgs topdir <- getCurrentDirectory res <- mapM (setup topdir test) $ case args of - [] -> [ ("tests/exelib" , parseVer "1.10") - , ("tests/exeintlib", parseVer "2.0") - , ("tests/fliblib" , parseVer "2.0") - , ("tests/bkpregex" , parseVer "2.0") + [] -> [ ("tests/exelib" , parseVer "1.10", parseVer "0") + , ("tests/exeintlib", parseVer "2.0", parseVer "0") + , ("tests/fliblib" , parseVer "2.0", parseVer "0") + , ("tests/bkpregex" , parseVer "2.0", parseVer "8.1") + -- min Cabal lib ver -^ min GHC ver -^ ] - xs -> map (,parseVer "0") xs + xs -> map (, parseVer "0", parseVer "0") xs if any (==False) $ concat res then exitFailure @@ -46,21 +44,29 @@ cabalInstallVersion :: IO Version cabalInstallVersion = parseVer . trim <$> readProcess "cabal" ["--numeric-version"] "" +ghcVersion :: IO Version +ghcVersion = + parseVer . trim <$> readProcess "ghc" ["--numeric-version"] "" + cabalInstallBuiltinCabalVersion :: IO Version cabalInstallBuiltinCabalVersion = parseVer . trim <$> readProcess "cabal" ["act-as-setup", "--", "--numeric-version"] "" -setup :: FilePath -> (FilePath -> IO [Bool]) -> (FilePath, Version) -> IO [Bool] -setup topdir act (srcdir, min_cabal_ver) = do +setup :: FilePath -> (FilePath -> IO [Bool]) -> (FilePath, Version, Version) -> IO [Bool] +setup topdir act (srcdir, min_cabal_ver, min_ghc_ver) = do ci_ver <- cabalInstallVersion c_ver <- cabalInstallBuiltinCabalVersion + g_ver <- ghcVersion let mreason | (ci_ver < parseVer "1.24") = Just $ "cabal-install-" ++ showVersion ci_ver ++ " is too old" | c_ver < min_cabal_ver = Just $ "Cabal-" ++ showVersion c_ver ++ " < " ++ showVersion min_cabal_ver + | g_ver < min_ghc_ver = + Just $ "ghc-" ++ showVersion g_ver + ++ " < " ++ showVersion min_ghc_ver | otherwise = Nothing @@ -82,8 +88,7 @@ setup topdir act (srcdir, min_cabal_ver) = do run :: String -> [String] -> IO () run x xs = do print $ x:xs - o <- readProcess x xs "" - putStrLn o + ExitSuccess <- rawSystem x xs return () test :: FilePath -> IO [Bool] @@ -116,11 +121,7 @@ compileModule nb ep opts = do E.handle (\(ec :: ExitCode) -> print ec >> return False) $ do -#if __GLASGOW_HASKELL__ <= 704 - defaultErrorHandler defaultLogAction $ do -#else defaultErrorHandler defaultFatalMessager defaultFlushOut $ do -#endif runGhc (Just libdir) $ do @@ -165,7 +166,6 @@ compileModule nb ep opts = do setTargets ts' _ <- load LoadAllTargets -#if __GLASGOW_HASKELL__ >= 706 when (nb == NoBuildOutput) $ do setContext $ case ep of ChLibEntrypoint ms ms' ss -> @@ -174,16 +174,9 @@ compileModule nb ep opts = do map (IIModule . mkModuleName . unChModuleName) $ ChModuleName "Main" : ms ChSetupEntrypoint -> map (IIModule . mkModuleName) ["Main"] -#endif - liftIO'CH $ print ExitSuccess + liftIO $ print ExitSuccess return True unChModuleName :: ChModuleName -> String unChModuleName (ChModuleName mn) = mn - -#if __GLASGOW_HASKELL__ <= 706 -liftIO'CH = GhcMonad.liftIO -#else -liftIO'CH = liftIO -#endif |