aboutsummaryrefslogtreecommitdiff
path: root/tests/runtests.hs
diff options
context:
space:
mode:
Diffstat (limited to 'tests/runtests.hs')
-rw-r--r--tests/runtests.hs114
1 files changed, 0 insertions, 114 deletions
diff --git a/tests/runtests.hs b/tests/runtests.hs
deleted file mode 100644
index 99a47828..00000000
--- a/tests/runtests.hs
+++ /dev/null
@@ -1,114 +0,0 @@
-import System.Cmd
-import System.Environment
-import System.FilePath
-import System.Exit
-import System.Directory
-import System.Process
-import Data.List
-import Control.Monad
-import Text.Printf
-import Text.Regex
-import Distribution.Simple.Utils
-import Distribution.Simple.Program
-import Distribution.Verbosity
-import Data.Maybe
-
-
-haddockPath = ".." </> "dist" </> "build" </> "haddock" </> "haddock"
-
-
-main = do
- test
- putStrLn "All tests passed!"
-
-
-test = do
- x <- doesFileExist haddockPath
- when (not x) $ die "you need to run 'cabal build' successfully first"
-
- contents <- getDirectoryContents "tests"
- args <- getArgs
- let (opts, spec) = span ("-" `isPrefixOf`) args
- let mods =
- case spec of
- x:_ | x /= "all" -> [x ++ ".hs"]
- _ -> filter ((==) ".hs" . takeExtension) contents
-
- let outdir = "output"
- let mods' = map ("tests" </>) mods
- putStrLn ""
- putStrLn "Haddock version: "
- h1 <- runProcess haddockPath ["--version"] Nothing
- (Just [("haddock_datadir", "../.")]) Nothing Nothing Nothing
- waitForProcess h1
- putStrLn ""
- putStrLn "GHC version: "
- h2 <- runProcess haddockPath ["--ghc-version"] Nothing
- (Just [("haddock_datadir", "../.")]) Nothing Nothing Nothing
- waitForProcess h2
- putStrLn ""
-
- -- TODO: use Distribution.* to get the packages instead
- libdir <- rawSystemStdout normal haddockPath ["--print-ghc-libdir"]
- let librariesPath = ".."</>".."</>"share"</>"doc"</>"ghc"</>"html"</>"libraries"
-
- let mkDep name version =
- let path = init libdir </> librariesPath </> name ++ "-" ++ version
- in "-i " ++ path ++ "," ++ path </> name ++ ".haddock"
-
- let base = mkDep "base" "4.2.0.0"
- process = mkDep "process" "1.0.1.2"
- ghcprim = mkDep "ghc-prim" "0.2.0.0"
-
- putStrLn "Running tests..."
- handle <- runProcess haddockPath
- (["-w", "-o", outdir, "-h", "--optghc=-fglasgow-exts"
- , "--optghc=-w", base, process, ghcprim] ++ opts ++ mods')
- Nothing (Just [("haddock_datadir", "../.")]) Nothing
- Nothing Nothing
-
- code <- waitForProcess handle
- when (code /= ExitSuccess) $ error "Haddock run failed! Exiting."
- check mods (if not (null args) && args !! 0 == "all" then False else True)
-
-
-check modules strict = do
- forM_ modules $ \mod -> do
- let outfile = "output" </> (dropExtension mod ++ ".html")
- let reffile = "tests" </> dropExtension mod ++ ".html.ref"
- b <- doesFileExist reffile
- if b
- then do
- copyFile reffile ("output" </> takeFileName reffile)
- out <- readFile outfile
- ref <- readFile reffile
- if not $ haddockEq out ref
- then do
- putStrLn $ "Output for " ++ mod ++ " has changed! Exiting with diff:"
- let ref' = stripLinks ref
- out' = stripLinks out
- let reffile' = "output" </> takeFileName reffile ++ ".nolinks"
- outfile' = "output" </> takeFileName outfile ++ ".nolinks"
- writeFile reffile' ref'
- writeFile outfile' out'
- b <- programOnPath "colordiff"
- if b
- then system $ "colordiff " ++ reffile' ++ " " ++ outfile'
- else system $ "diff " ++ reffile' ++ " " ++ outfile'
- if strict then exitFailure else return ()
- else do
- putStrLn $ "Pass: " ++ mod
- else do
- putStrLn $ "Pass: " ++ mod ++ " (no .ref file)"
-
-
-haddockEq file1 file2 = stripLinks file1 == stripLinks file2
-
-
-stripLinks f = subRegex (mkRegexWithOpts "<A HREF=[^>]*>" False False) f "<A HREF=\"\">"
-
-
-programOnPath p = do
- result <- findProgramLocation silent p
- return (isJust result)
-