proteome-0.2.0.0: test/u/TagsSpec.hs
{-# OPTIONS_GHC -F -pgmF htfpp #-}
module TagsSpec(
htf_thisModulesTests
) where
import Control.Monad.IO.Class (liftIO)
import Control.Lens (set)
import System.FilePath ((</>))
import System.Directory (doesFileExist)
import Test.Framework
import Ribosome.Config.Settings (updateSetting)
import qualified Ribosome.Data.Ribo as Ribo (modify)
import Ribosome.Test.Unit (tempDir)
import Proteome.Data.Proteome (Proteome)
import Proteome.Data.Env (_mainProject)
import Proteome.Data.Project (
ProjectName(..),
ProjectRoot(..),
ProjectType(..),
ProjectLang(..),
ProjectMetadata(DirProject),
_meta,
_lang,
)
import qualified Proteome.Settings as S (tagsCommand, tagsArgs, tagsFork)
import Proteome.Tags (proTags)
import Proteome.Test.Unit (specWithDef)
import Config (vars)
main :: FilePath -> ProjectMetadata
main root = DirProject (ProjectName "flagellum") (ProjectRoot root) (Just (ProjectType "haskell"))
tagsSpec :: Proteome ()
tagsSpec = do
root <- tempDir "projects/haskell/flagellum"
Ribo.modify $ set (_mainProject._meta) (main root)
Ribo.modify $ set (_mainProject._lang) (Just (ProjectLang "idris"))
updateSetting S.tagsCommand "touch"
updateSetting S.tagsArgs "tags-{langsComma}-{tagFile}"
updateSetting S.tagsFork False
proTags
let tagsFile = root </> "tags-idris-.tags"
exists <- liftIO $ doesFileExist tagsFile
liftIO $ assertBool exists
test_tags :: IO ()
test_tags = vars >>= specWithDef tagsSpec