proteome-0.3.14.0: test/u/CycleSpec.hs
{-# OPTIONS_GHC -F -pgmF htfpp #-}
module CycleSpec(
htf_thisModulesTests
) where
import Control.Monad.IO.Class (liftIO)
import Data.Default.Class (Default(def))
import Data.Foldable (traverse_)
import System.FilePath ((</>))
import Neovim (Neovim)
import Test.Framework
import Ribosome.Api.Path (nvimCwd)
import Ribosome.Config.Setting (updateSetting)
import Ribosome.Test.Unit (fixture)
import Proteome.Add (proAdd)
import Proteome.Project.Activate (proNext, proPrev)
import Proteome.Data.AddOptions (AddOptions(AddOptions))
import Proteome.Data.Proteome (Proteome)
import Proteome.Init (resolveAndInitMain)
import qualified Proteome.Settings as S (projectBaseDirs, mainProjectDir)
import Proteome.Test.Unit (specWithDef)
import Config (vars)
import Project (cn, fn, tp, hask, prot, cil, flag)
assertProject :: FilePath -> String -> Neovim e ()
assertProject projectsDir n = do
cwd <- nvimCwd
liftIO $ assertEqual cwd $ projectsDir </> hask </> n
cycleSpec :: Proteome ()
cycleSpec = do
projectsDir <- fixture "projects"
let assertDir = assertProject projectsDir
let mainDir = projectsDir </> hask </> prot
updateSetting S.projectBaseDirs [projectsDir]
updateSetting S.mainProjectDir mainDir
resolveAndInitMain
proAdd $ AddOptions fn tp False
proAdd $ AddOptions cn tp False
assertDir prot
let checkNext n = proNext def >> assertDir n
traverse_ checkNext [flag, cil, prot, flag]
proPrev def
assertDir prot
test_next :: IO ()
test_next = vars >>= specWithDef cycleSpec