ghc-mod/test/Main.hs
Daniel Gröber 8680b3f7d1 Make sure tests can't be forgotten in cabal file
some *Spec.hs files weren't landing in the sdist since they werent
listed in other-modules and since we use hspec-discover no one ever
noticed.
2017-03-01 03:26:37 +01:00

97 lines
3.3 KiB
Haskell

{-# LANGUAGE CPP, ScopedTypeVariables #-}
import Dir
import Control.Exception as E
import Control.Monad (void)
import GhcMod (debugInfo)
import System.Process
import System.Environment
import Test.Hspec
import TestUtils
import qualified BrowseSpec
import qualified CabalHelperSpec
import qualified CaseSplitSpec
import qualified CheckSpec
import qualified CradleSpec
import qualified CustomPackageDbSpec
import qualified FileMappingSpec
import qualified FindSpec
import qualified FlagSpec
import qualified GhcPkgSpec
import qualified HomeModuleGraphSpec
import qualified InfoSpec
import qualified LangSpec
import qualified LintSpec
import qualified ListSpec
import qualified MonadSpec
import qualified PathsAndFilesSpec
import qualified ShellParseSpec
import qualified TargetSpec
spec :: Spec
spec = do
describe "Browse" BrowseSpec.spec
describe "CabalHelper" CabalHelperSpec.spec
describe "CaseSplit" CaseSplitSpec.spec
describe "Check" CheckSpec.spec
describe "Cradle" CradleSpec.spec
describe "CustomPackageDb" CustomPackageDbSpec.spec
describe "FileMapping" FileMappingSpec.spec
describe "Find" FindSpec.spec
describe "Flag" FlagSpec.spec
describe "GhcPkg" GhcPkgSpec.spec
describe "HomeModuleGraph" HomeModuleGraphSpec.spec
describe "Info" InfoSpec.spec
describe "Lang" LangSpec.spec
describe "Lint" LintSpec.spec
describe "List" ListSpec.spec
describe "Monad" MonadSpec.spec
describe "PathsAndFiles" PathsAndFilesSpec.spec
describe "ShellParse" ShellParseSpec.spec
describe "Target" TargetSpec.spec
main :: IO ()
main = do
#if __GLASGOW_HASKELL__ >= 708
unsetEnv "GHC_PACKAGE_PATH"
#endif
let sandboxes = [ "test/data/cabal-project"
, "test/data/check-packageid"
, "test/data/duplicate-pkgver/"
, "test/data/broken-cabal/"
]
genSandboxCfg dir = withDirectory dir $ \cwdir -> do
system ("sed 's|@CWD@|" ++ cwdir ++ "|g' cabal.sandbox.config.in > cabal.sandbox.config")
pkgDirs =
[ "test/data/cabal-project/.cabal-sandbox/i386-osx-ghc-7.6.3-packages.conf.d"
, "test/data/check-packageid/.cabal-sandbox/i386-osx-ghc-7.6.3-packages.conf.d"
, "test/data/duplicate-pkgver/.cabal-sandbox/i386-osx-ghc-7.6.3-packages.conf.d"]
genGhcPkgCache dir = system $ "ghc-pkg recache --force -f" ++ dir
let cleanCmd = "git clean -dXf test/data/"
putStrLn $ "$ " ++ cleanCmd
void $ system cleanCmd
void $ system "cabal --version"
void $ system "ghc --version"
genSandboxCfg `mapM_` sandboxes
genGhcPkgCache `mapM_` pkgDirs
let stackDir = "test/data/stack-project"
void $ withDirectory_ stackDir $ do
let ghcver = let gvn = show (__GLASGOW_HASKELL__ :: Int)
(major, minor') = splitAt (length gvn - 2) gvn
minor = case dropWhile (=='0') minor' of
"" -> "0"
x -> x
in major ++ "." ++ minor
void $ system $ "sed '$ a resolver: ghc-" ++ ghcver ++ "' stack.yaml.in > stack.yaml"
void $ system "stack setup"
void $ system "stack build"
(putStrLn =<< runD debugInfo)
`E.catch` (\(_ :: E.SomeException) -> return () )
hspec spec