lets-lens/test/doctests.hs
2016-02-04 10:25:39 +11:00

50 lines
1.1 KiB
Haskell

{-# LANGUAGE CPP #-}
module Main where
import Build_doctests (deps)
#if (__GLASGOW_HASKELL__ < 710)
import Control.Applicative
#endif
import Control.Monad
import Data.List
import System.Directory
import System.FilePath
import Test.DocTest
main ::
IO ()
main =
getSources >>= \sources -> doctest $
"-isrc"
: "-idist/build/autogen"
: "-optP-include"
: "-optPdist/build/autogen/cabal_macros.h"
: "-hide-all-packages"
: map ("-package="++) deps ++ sources
sourceDirectories ::
[FilePath]
sourceDirectories =
[
"src"
]
isSourceFile ::
FilePath
-> Bool
isSourceFile p =
and [takeFileName p /= "Setup.hs", isSuffixOf ".hs" p]
getSources :: IO [FilePath]
getSources =
liftM (filter isSourceFile . concat) (mapM go sourceDirectories)
where
go dir = do
(dirs, files) <- getFilesAndDirectories dir
(files ++) . concat <$> mapM go dirs
getFilesAndDirectories :: FilePath -> IO ([FilePath], [FilePath])
getFilesAndDirectories dir = do
c <- map (dir </>) . filter (`notElem` ["..", "."]) <$> getDirectoryContents dir
(,) <$> filterM doesDirectoryExist c <*> filterM doesFileExist c