fay-0.10.0.0: src/Test/Api.hs
{-# LANGUAGE RecordWildCards #-}
{-# LANGUAGE TemplateHaskell #-}
module Test.Api (tests) where
import Language.Fay hiding (compileFile)
import Language.Fay.Compiler
import Paths_fay
import Data.Default
import Data.Maybe
import Language.Haskell.Exts.Syntax
import System.FilePath
import Test.Framework
import Test.Framework.Providers.HUnit
import Test.Framework.TH
import Test.HUnit (Assertion, assertBool)
import Test.Util
tests :: Test
tests = $testGroupGenerator
case_imports :: Assertion
case_imports = do
res <- compileFile defConf fp
assertBool "Could not compile file with imports" (isRight res)
case_importedList :: Assertion
case_importedList = do
res <- compileFile defConf fp
case res of
Left err -> error (show err)
Right r -> assertBool "RecordImport_Export was not added to stateImported" $
isJust $ lookup (ModuleName "RecordImport_Export") (stateImported r)
fp :: FilePath
fp = "tests/RecordImport_Import.hs"
defConf :: CompileConfig
defConf = def { configTypecheck = False, configDirectoryIncludes = ["tests"] }
compileFile :: CompileConfig -> FilePath -> IO (Either CompileError CompileState)
compileFile config filein = do
srcdir <- fmap (takeDirectory . takeDirectory . takeDirectory) (getDataFileName "src/Language/Fay/Stdlib.hs")
hscode <- readFile filein
result <- compileViaStr filein
(config { configDirectoryIncludes = configDirectoryIncludes config ++ [srcdir] })
compileToplevelModule hscode
return $ either Left (Right . snd) result