IHaskell/rundoctests.hs

44 lines
1.2 KiB
Haskell
Raw Normal View History

2013-12-09 23:29:07 -08:00
{-# LANGUAGE OverloadedStrings #-}
2013-10-28 09:16:48 -04:00
import System.Process
import Test.DocTest
import System.Environment
2013-12-09 23:29:07 -08:00
import Data.String.Utils
2013-10-28 09:16:48 -04:00
-- | tests that all the >>> comments are followed by correct output. Easiest is to
--
-- > cabal test
--
-- or
--
-- > runghc examples/rundoctests.hs
--
-- or
--
-- > runghc examples/rundoctests.hs Data/HList/File1.hs Data/HList/File2.hs
--
-- you need Cabal >= 1.18 since that's around when cabal repl got added.
2013-12-09 23:29:07 -08:00
main :: IO ()
2013-10-28 09:16:48 -04:00
main = do
2013-12-09 23:29:07 -08:00
-- Get files to run on.
args <- getArgs
2013-10-28 09:16:48 -04:00
2013-12-09 23:29:07 -08:00
-- Get flags via cabal repl.
let cabalCmds = unlines [":show packages", ":show language"]
cabalOpts = ["repl","--ghc-options","-v0 -w"]
options <- readProcess "cabal" cabalOpts cabalCmds
let extraFlags = ["-fobject-code", "-XNoImplicitPrelude"]
flags = words (unlines $ filter (startswith "-" . strip) $ lines options) ++ extraFlags
let files = case args of
2013-10-28 09:16:48 -04:00
[] -> ["Main.hs"]
2013-12-09 23:29:07 -08:00
_ -> args
putStrLn "Testing:\n--------"
mapM_ putStrLn files
putStr "\n"
2013-10-28 09:16:48 -04:00
doctest $ "-i.": "-idist/build/autogen":
"-optP-include":
"-optPdist/build/autogen/cabal_macros.h" :
"-Idist/build/autogen" : "-w":
files ++ flags