{-# LANGUAGE CPP #-}
module DocsSpec where
import Prelude ()
import Prelude.Compat
import Control.Monad
import System.FilePath
import Test.Hspec
import ShellProtocol
import qualified Test01
import qualified CustomOption
import qualified Simple
#if MIN_VERSION_base(4,8,0)
import qualified Test02
import qualified Test03
import qualified Test04
import qualified RecordType
import qualified CustomOptionRecord
#endif
examples :: [(IO (), String)]
examples =
(Test01.main, "Test01") :
(CustomOption.main, "CustomOption") :
(Simple.main, "Simple") :
#if MIN_VERSION_base(4,8,0)
(Test02.main, "Test02") :
(Test03.main, "Test03") :
(Test04.main, "Test04") :
(RecordType.main, "RecordType") :
(CustomOptionRecord.main, "CustomOptionRecord") :
#endif
[]
main :: IO ()
main = hspec spec
spec :: Spec
spec = do
describe "shell protocols" $ do
forM_ examples $ \ (program, name) ->
it name $ do
test program name
test :: IO () -> String -> IO ()
test program name = do
protocol <- readFile ("docs" </> name <.> "shell-protocol")
testShellProtocol program protocol