shaker-0.3: testsuite/tests/Shaker/SourceHelperTest.hs
module Shaker.SourceHelperTest
where
import Test.HUnit
import Shaker.SourceHelper
import Shaker.Type
import Shaker.CommonTest
import Data.List
import Control.Monad.Reader
testConstructCompileFileList :: Test
testConstructCompileFileList = TestCase $ runTestOnDirectory "testsuite/tests/resources/cabalTest" $ do
let cpIn = initializeEmptyCompileInput {cfSourceDirs = ["src"]}
fileList <- constructCompileFileList cpIn
any (\cpFl -> "Main.hs" `isSuffixOf` cfFp cpFl && cfHasMain cpFl) fileList @? "Should have one main file, got " ++ show fileList
any (\cpFl -> "CabalTest.hs" `isSuffixOf` cfFp cpFl && (not . cfHasMain) cpFl) fileList @? "Should have one main file, got " ++ show fileList
testConstructConductorCompileFileList :: Test
testConstructConductorCompileFileList = TestCase $ do
list <- constructCompileFileList defaultCompileInput
let (Just cpFile) = find (\a -> "Conductor.hs" `isSuffixOf` cfFp a ) list
not (cfHasMain cpFile) && not (cfHasTH cpFile) @? "Should have conductor in list, got " ++ show cpFile
testCompileInputConstruction :: Test
testCompileInputConstruction = TestCase $ do
list <- constructCompileFileList defaultCompileInput
let newCpIn = runReader (setAllHsFilesAsTargets defaultCompileInput >>= removeFileWithMain >>= removeFileWithTemplateHaskell ) list
any (\a -> "Conductor.hs" `isSuffixOf` a) (cfTargetFiles newCpIn) @?"Should have conductor in list, got " ++ show (cfTargetFiles newCpIn)