packages feed

doctest-discover 0.1.0.8 → 0.1.0.9

raw patch · 6 files changed

+31/−19 lines, 6 filessetup-changed

Files

− Setup.hs
@@ -1,2 +0,0 @@-import Distribution.Simple-main = defaultMain
doctest-discover.cabal view
@@ -1,5 +1,5 @@ name:                doctest-discover-version:             0.1.0.8+version:             0.1.0.9 synopsis:            Easy way to run doctests via cabal description:         doctest-discover provides an easy way to run doctests via cabal license:             PublicDomain
src/Config.hs view
@@ -8,22 +8,24 @@  data Config = Config {     ignore :: Maybe [String],-    sourceFolders :: Maybe [String]+    sourceFolders :: Maybe [String],+    doctestOptions :: Maybe [String] } deriving (Show)  instance FromJSON Config where     parseJSON (Object v) =          Config <$>          (v .:? "ignore") <*>-        (v .:? "sourceFolders")+        (v .:? "sourceFolders") <*>+        (v .:? "doctestOptions")  -- | Parses config json as string to the Config type -- -- >>> config "{\"ignore\": [] }"--- Just (Config {ignore = Just [], sourceFolders = Nothing})+-- Just (Config {ignore = Just [], sourceFolders = Nothing, doctestOptions = Nothing}) -- -- >>> config "{\"ignore\": [\"Foo.hs\"] }"--- Just (Config {ignore = Just ["Foo.hs"], sourceFolders = Nothing})+-- Just (Config {ignore = Just ["Foo.hs"], sourceFolders = Nothing, doctestOptions = Nothing}) -- -- >>> config "{\"ignore\": [1,2,3] }" -- Nothing@@ -32,7 +34,10 @@ -- Nothing -- -- >>> config "{\"sourceFolders\": [\"src\"] }"--- Just (Config {ignore = Nothing, sourceFolders = Just ["src"]})+-- Just (Config {ignore = Nothing, sourceFolders = Just ["src"], doctestOptions = Nothing})+--+-- >>> config "{\"doctestOptions\": [\"--some-option\"] }"+-- Just (Config {ignore = Nothing, sourceFolders = Nothing, doctestOptions = Just ["--some-option"]}) -- config :: String -> Maybe Config config json = decode (B.pack json) :: Maybe Config
src/Main.hs view
@@ -4,6 +4,7 @@ import Control.Applicative  import Control.Monad import Data.Maybe (fromMaybe)+import Data.List (sort) import Runner import Config import System.Directory@@ -16,9 +17,7 @@                               (configFile : _) -> readFile configFile                               _ -> return ""     customConfiguration <- config <$> configFileContents-    let sources = case customConfiguration of-                    Just (Config _ (Just sourceFolders)) -> sourceFolders-                    _ -> ["src"]+    let sources = fromMaybe ["src"] $ customConfiguration >>= sourceFolders     files <- sequence $ map getAbsDirectoryContents sources     let testDriverFileContents = driver (concat files) customConfiguration     writeFile dst testDriverFileContents@@ -39,4 +38,4 @@         if isDir             then getAbsDirectoryContents canonicalized             else return [canonicalized]-    return $ concat paths'+    return $ sort $ concat paths'
src/Runner.hs view
@@ -1,8 +1,12 @@+{-# LANGUAGE+    RecordWildCards+  #-} module Runner (     driver ) where  import Data.List+import Data.Maybe import Config import System.FilePath.Posix @@ -21,22 +25,28 @@ -- >>> generateConfig ["foo.hs", "bar.hs", "baz.qux"] Nothing -- ["-isrc","foo.hs","bar.hs"] ----- >>> let config = Just (Config (Just ["bar.hs"]) Nothing)+-- >>> let config = Just (Config (Just ["bar.hs"]) Nothing Nothing) -- >>> generateConfig ["foo.hs", "bar.hs", "baz.qux"] config -- ["-isrc","foo.hs"] ----- >>> let config = Just (Config Nothing (Just ["qux"]))+-- >>> let config = Just (Config Nothing (Just ["qux"]) Nothing) -- >>> generateConfig ["foo.hs", "bar.hs", "baz.qux"] config -- ["-iqux","foo.hs","bar.hs"] ----- >>> let config = Just (Config (Just ["bar.hs"]) (Just ["qux"]))+-- >>> let config = Just (Config (Just ["bar.hs"]) (Just ["qux"]) Nothing) -- >>> generateConfig ["foo.hs", "bar.hs", "baz.qux"] config -- ["-iqux","foo.hs"] --+-- >>> let config = Just (Config (Just ["bar.hs"]) (Just ["qux"]) (Just ["-some", "--doctest options"]))+-- >>> generateConfig ["foo.hs", "bar.hs", "baz.qux"] config+-- ["-iqux","foo.hs","-some","--doctest","options"]+-- generateConfig :: [FilePath] -> Maybe Config -> [String]-generateConfig files (Just (Config Nothing (Just sourceFolders))) = ((++) (map ("-i"++) sourceFolders) . notCurrentAndParent . filterHaskellSources) files-generateConfig files (Just (Config (Just ignoreList) Nothing)) = ((:) "-isrc" . filter (`notElem` ignoreList) . notCurrentAndParent . filterHaskellSources) files-generateConfig files (Just (Config (Just ignoreList) (Just sourceFolders))) = ((++) (map ("-i"++) sourceFolders) . filter (`notElem` ignoreList) . notCurrentAndParent . filterHaskellSources) files+generateConfig files (Just Config {..})+    =  concat [ maybe ["-isrc"] (map ("-i" ++)) $ sourceFolders+              , nub . filter (`notElem` fromMaybe [] ignore) . notCurrentAndParent . filterHaskellSources $ files+              ]+    ++ maybe [] (concat . map words) doctestOptions generateConfig files _ = ((:) "-isrc" . notCurrentAndParent . filterHaskellSources) files  -- | Filters out current and parent directories 
test/Doctest-Main.hs view
@@ -1,1 +1,1 @@-{-# OPTIONS_GHC -F -pgmF doctest-discover #-}+{-# OPTIONS_GHC -F -pgmF doctest-discover -optF config.json #-}