diff options
author | Łukasz Hanuszczak <lukasz.hanuszczak@gmail.com> | 2015-08-04 14:41:06 +0200 |
---|---|---|
committer | Łukasz Hanuszczak <lukasz.hanuszczak@gmail.com> | 2015-08-22 23:40:26 +0200 |
commit | 076e04cd4c049ddfad6feed242e2c1024d5db101 (patch) | |
tree | 527b433d98b7330ba7a5b2362fb664ca419d52a4 | |
parent | 17be133c363d161cff0a0e21968784afd2f7058a (diff) |
Make test runner actually run Haddock executable.
-rwxr-xr-x | html-test/run.hs | 27 |
1 files changed, 17 insertions, 10 deletions
diff --git a/html-test/run.hs b/html-test/run.hs index a9fe8bb7..62e8bc23 100755 --- a/html-test/run.hs +++ b/html-test/run.hs @@ -43,13 +43,13 @@ data Config = Config , cfgGhcPath :: FilePath , cfgFiles :: [FilePath] , cfgHaddockArgs :: [String] - } deriving Show + , cfgEnv :: Environment + } main :: IO () main = do cfg <- uncurry loadConfig =<< checkOpt =<< getArgs - putStrLn $ show cfg runHaddock cfg checkOutput cfg @@ -59,7 +59,12 @@ checkOutput _ = return () -- TODO. runHaddock :: Config -> IO () -runHaddock _ = return () -- TODO. +runHaddock (Config { .. }) = do + handle <- runProcess' cfgHaddockPath $ processConfig + { pcArgs = cfgHaddockArgs + , pcEnv = Just $ cfgEnv + } + waitForSuccess "Failed to run Haddock on specified test files" handle checkOpt :: [String] -> IO ([Flag], [String]) @@ -79,12 +84,12 @@ checkOpt args = do loadConfig :: [Flag] -> [String] -> IO Config loadConfig flags files = do - env <- Just . (:) ("haddock_datadir", resDir) <$> getEnvironment + cfgEnv <- (:) ("haddock_datadir", resDir) <$> getEnvironment cfgHaddockPath <- pure $ flip fromMaybe (flagsHaddockPath flags) $ rootDir </> "dist" </> "build" </> "haddock" </> "haddock" - printVersions env cfgHaddockPath + printVersions cfgEnv cfgHaddockPath cfgGhcPath <- flip fromMaybe (flagsGhcPath flags) <$> init <$> rawSystemStdout normal cfgHaddockPath ["--print-ghc-path"] @@ -95,7 +100,7 @@ loadConfig flags files = do [ pure ["--no-warnings"] , pure ["--odir=" ++ outDir] , pure ["--pretty-html"] - , pure ["--optghc=--w"] + , pure ["--optghc=-w"] , pure $ flagsHaddockOptions flags , baseDependencies cfgGhcPath ] @@ -103,16 +108,16 @@ loadConfig flags files = do return $ Config { .. } -printVersions :: Maybe [(String, String)] -> FilePath -> IO () +printVersions :: Environment -> FilePath -> IO () printVersions env haddockPath = do handle <- runProcess' haddockPath $ processConfig - { pcEnv = env + { pcEnv = Just env , pcArgs = ["--version"] } waitForSuccess "Failed to run `haddock --version`" handle handle <- runProcess' haddockPath $ processConfig - { pcEnv = env + { pcEnv = Just env , pcArgs = ["--ghc-version"] } waitForSuccess "Failed to run `haddock --ghc-version`" handle @@ -185,10 +190,12 @@ flagsHaddockOptions flags = concat [ words opts | FlagHaddockOptions opts <- flags ] +type Environment = [(String, String)] + data ProcessConfig = ProcessConfig { pcArgs :: [String] , pcWorkDir :: Maybe FilePath - , pcEnv :: Maybe [(String, String)] + , pcEnv :: Maybe Environment , pcStdIn :: Maybe Handle , pcStdOut :: Maybe Handle , pcStdErr :: Maybe Handle |