import Distribution.Simple import Distribution.Simple.LocalBuildInfo import Distribution.PackageDescription import System.Cmd import System.FilePath import System.Directory import Control.Exception import System.IO.Error (isDoesNotExistError) main = defaultMainWithHooks hooks where hooks = simpleUserHooks { runTests = runTests'} hpcReportDir = "hpcreport" runTests' :: Args -> Bool -> PackageDescription -> LocalBuildInfo -> IO () runTests' _ _ _ lbi = do res <- try (removeFile tixFile) case res of Left err | not (isDoesNotExistError err) -> putStrLn "tix file could not be removed" _ -> return () putStrLn "running tests ..." system testprog putStrLn "computing code coverage ..." hpcReport putStrLn "generating code coverage reports ..." hpcMarkup return () where testprog = (buildDir lbi) "test" "test" tixFile = "test.tix" hpcReport = system $ "hpc report test"++exclArgs hpcMarkup = system $ "hpc markup test --destdir="++hpcReportDir++exclArgs excludedModules = [] exclArgs = concatMap (" --exclude="++) excludedModules