packages feed

hie-bios-0.3.0: tests/ParserTests.hs

module Main where

import Test.Tasty
import Test.Tasty.HUnit
import HIE.Bios.Config
import System.FilePath

configDir :: FilePath
configDir = "tests/configs"

main :: IO ()
main = defaultMain $
  testCase "Parser Tests" $ do
    assertParser "cabal-1.yaml" (noDeps (Cabal (Just "lib:hie-bios")))
    assertParser "stack-config.yaml" (noDeps (Stack Nothing))
    --assertParser "bazel.yaml" (noDeps Bazel)
    assertParser "bios-1.yaml" (noDeps (Bios "program" Nothing))
    assertParser "bios-2.yaml" (noDeps (Bios "program" (Just "dep-program")))
    assertParser "dependencies.yaml" (Config (CradleConfig ["depFile"] (Cabal (Just "lib:hie-bios"))))
    assertParser "direct.yaml" (noDeps (Direct ["list", "of", "arguments"]))
    assertParser "none.yaml" (noDeps None)
    --assertParser "obelisk.yaml" (noDeps Obelisk)
    assertParser "multi.yaml" (noDeps (Multi [("./src", CradleConfig [] (Cabal (Just "lib:hie-bios")))
                                             , ("./test", CradleConfig [] (Cabal (Just "test")) ) ]))

    assertParser "cabal-multi.yaml" (noDeps (CabalMulti [("./src", "lib:hie-bios")
                                                    ,("./", "lib:hie-bios")]))

    assertParser "stack-multi.yaml" (noDeps (StackMulti [("./src", "lib:hie-bios")
                                                    ,("./", "lib:hie-bios")]))

    assertParser "nested-cabal-multi.yaml" (noDeps (Multi [("./test/testdata", CradleConfig [] None)
                                                          ,("./", CradleConfig [] (
                                                                    CabalMulti [("./src", "lib:hie-bios")
                                                                               ,("./tests", "parser-tests")]))]))

    assertParser "nested-stack-multi.yaml" (noDeps (Multi [("./test/testdata", CradleConfig [] None)
                                                          ,("./", CradleConfig [] (
                                                                    StackMulti [("./src", "lib:hie-bios")
                                                                              ,("./tests", "parser-tests")]))]))

assertParser :: FilePath -> Config -> Assertion
assertParser fp cc = do
  conf <- readConfig (configDir </> fp)
  (conf == cc) @? (unlines [("Parser Failed: " ++ fp)
                           , "Expected: " ++ show cc
                           , "Actual: " ++ show conf ])

noDeps :: CradleType -> Config
noDeps c = Config (CradleConfig [] c)