@@ -9,23 +9,33 @@ import Test.DocTest
9main :: IO ()
9main :: IO ()
11 files <- find always (extension ==? ".hs") "src"
11 files <- find always (extension ==? ".hs") "src"
12− cabalMacrosFile <- getCabalMacrosFile
12+ mCabalMacrosFile <- getCabalMacrosFile
13− doctest $ [ "-isrc"
13+ doctest $ "-isrc" :
14− , "-optP-include"
14+ (maybe [] (\ f -> ["-optP-include", "-optP" ++ f]) mCabalMacrosFile) ++
15− , "-optP" ++ cabalMacrosFile
16− , "-XOverloadedStrings"
15+ "-XOverloadedStrings" :
17− , "-XFlexibleInstances"
16+ "-XFlexibleInstances" :
18− , "-XMultiParamTypeClasses"
17+ "-XMultiParamTypeClasses" :
19− , "-XDataKinds"
18+ "-XDataKinds" :
20− , "-XTypeOperators"
19+ "-XTypeOperators" :
23−getCabalMacrosFile :: IO FilePath
22+getCabalMacrosFile :: IO (Maybe FilePath)
24getCabalMacrosFile = do
23getCabalMacrosFile = do
24+ exists <- doesDirectoryExist "dist"
25− contents <- getDirectoryContents "dist"
27+ contents <- getDirectoryContents "dist"
26− let rest = "build" </> "autogen" </> "cabal_macros.h"
28+ let rest = "build" </> "autogen" </> "cabal_macros.h"
27− return $ case filter ("dist-sandbox-" `isPrefixOf`) contents of
29+ whenExists $ case filter ("dist-sandbox-" `isPrefixOf`) contents of
28− [x] -> "dist" </> x </> rest
30+ [x] -> "dist" </> x </> rest
29− [] -> "dist" </> rest
31+ [] -> "dist" </> rest
30− xs -> error $ "ran doctests with multiple dist/dist-sandbox-xxxxx's: \n"
32+ xs -> error $ "ran doctests with multiple dist/dist-sandbox-xxxxx's: \n"
31− ++ show xs ++ "\nTry cabal clean"
33+ ++ show xs ++ "\nTry cabal clean"
36+ whenExists :: FilePath -> IO (Maybe FilePath)
38+ exists <- doesFileExist file