hob-0.0.1.0: test/HobTest/Context/Stubbed.hs
module HobTest.Context.Stubbed (
loadStubbedContext,
stubbedFileLoader,
failingFileWriter
) where
import Control.Monad.Error (throwError)
import Data.Text (pack)
import Data.Tree
import qualified Hob.Context as HC
import qualified Hob.Context.FileContext as HFC
import qualified Hob.Context.StyleContext as HSC
import Hob.DirectoryTree
import Hob.Ui
fileTreeStub :: IO (Forest DirectoryTreeElement)
fileTreeStub = return [
Node (DirectoryTreeElement "a" "/xxx/a" True) [
Node (DirectoryTreeElement "b" "/xxx/a/b" False) []],
Node (DirectoryTreeElement "a.b" "/xxx/a.b" False) [],
Node (DirectoryTreeElement "c" "/xxx/c" False) [],
Node (DirectoryTreeElement "-" "/xxx/cannotRead" False) []]
failingFileWriter :: HFC.FileWriter
failingFileWriter _ _ = throwError $ userError "cannot write files stub"
stubbedFileLoader :: HFC.FileLoader
stubbedFileLoader "/xxx/c" = return $ Just $ pack "file contents for /xxx/c"
stubbedFileLoader "/xxx/a/b" = return $ Just $ pack "file contents for /xxx/a/b"
stubbedFileLoader "/xxx/a.b" = return $ Just $ pack "file contents for /xxx/a.b"
stubbedFileLoader "/xxx/cannotRead" = return Nothing
stubbedFileLoader "/xxx/testName.hs" = return $ Just $ pack "file contents for /xxx/testName.hs"
stubbedFileLoader path = throwError $ userError $ "cannot open unknown file: "++path
loadStubbedContext :: IO HC.Context
loadStubbedContext = do
sc <- HSC.defaultStyleContext "app-data"
fc <- HFC.defaultFileContext stubbedFileLoader failingFileWriter fileTreeStub
loadGui fc sc