module ExamplesSpec where
import Prelude ()
import Prelude.Compat
import Control.Monad
import System.FilePath
import Test.Hspec
import ShellProtocol
import qualified CustomOption
import qualified CustomOptionRecord
import qualified RecordType
import qualified Simple
import qualified SimpleRecord
import qualified Test01
import qualified Test02
import qualified Test03
import qualified Test04
examples :: [(IO (), String)]
examples =
(Test01.main, "Test01") :
(Test02.main, "Test02") :
(Test03.main, "Test03") :
(Test04.main, "Test04") :
(Simple.main, "Simple") :
(SimpleRecord.main, "SimpleRecord") :
(RecordType.main, "RecordType") :
(SimpleRecord.main, "SimpleRecord") :
(CustomOption.main, "CustomOption") :
(CustomOptionRecord.main, "CustomOptionRecord") :
[]
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