module Main where import Data.List (isPrefixOf) import System.Directory import System.FilePath import System.FilePath.Find import Test.DocTest main :: IO () main = do files <- find always (extension ==? ".hs") "src" cabalMacrosFile <- getCabalMacrosFile doctest $ [ "-isrc" , "-optP-include" , "-optP" ++ cabalMacrosFile , "-XOverloadedStrings" , "-XFlexibleInstances" , "-XMultiParamTypeClasses" , "-XDataKinds" , "-XTypeOperators" ] ++ files getCabalMacrosFile :: IO FilePath getCabalMacrosFile = do contents <- getDirectoryContents "dist" let rest = "build" "autogen" "cabal_macros.h" return $ case filter ("dist-sandbox-" `isPrefixOf`) contents of [x] -> "dist" x rest [] -> "dist" rest xs -> error $ "ran doctests with multiple dist/dist-sandbox-xxxxx's: \n" ++ show xs ++ "\nTry cabal clean"