purescript-0.9.2: tests/Language/PureScript/Ide/RebuildSpec.hs
{-# LANGUAGE NoImplicitPrelude #-}
{-# LANGUAGE OverloadedStrings #-}
module Language.PureScript.Ide.RebuildSpec where
import Protolude
import qualified Language.PureScript.Ide.Integration as Integration
import System.FilePath
import Test.Hspec
shouldBeSuccess :: Text -> IO ()
shouldBeSuccess = shouldBe True . Integration.resultIsSuccess
shouldBeFailure :: Text -> IO ()
shouldBeFailure = shouldBe False . Integration.resultIsSuccess
spec :: Spec
spec = before_ Integration.reset . describe "Rebuilding single modules" $ do
it "rebuilds a correct module without dependencies successfully" $ do
_ <- Integration.loadModule "RebuildSpecSingleModule"
pdir <- Integration.projectDirectory
let file = pdir </> "src" </> "RebuildSpecSingleModule.purs"
Integration.rebuildModule file >>= shouldBeSuccess
it "fails to rebuild an incorrect module without dependencies and returns the errors" $ do
pdir <- Integration.projectDirectory
let file = pdir </> "src" </> "RebuildSpecSingleModule.fail"
Integration.rebuildModule file >>= shouldBeFailure
it "rebuilds a correct module with its dependencies successfully" $ do
_ <- Integration.loadModules ["RebuildSpecWithDeps", "RebuildSpecDep"]
pdir <- Integration.projectDirectory
let file = pdir </> "src" </> "RebuildSpecWithDeps.purs"
Integration.rebuildModule file >>= shouldBeSuccess
it "rebuilds a correct module that has reverse dependencies" $ do
_ <- Integration.loadModule "RebuildSpecWithDeps"
pdir <- Integration.projectDirectory
let file = pdir </> "src" </> "RebuildSpecDep.purs"
Integration.rebuildModule file >>= shouldBeSuccess
it "fails to rebuild a module if its dependencies are not loaded" $ do
_ <- Integration.loadModule "RebuildSpecWithDeps"
pdir <- Integration.projectDirectory
let file = pdir </> "src" </> "RebuildSpecWithDeps.purs"
Integration.rebuildModule file >>= shouldBeFailure
it "rebuilds a correct module with a foreign file" $ do
_ <- Integration.loadModule "RebuildSpecWithForeign"
pdir <- Integration.projectDirectory
let file = pdir </> "src" </> "RebuildSpecWithForeign.purs"
Integration.rebuildModule file >>= shouldBeSuccess
it "fails to rebuild a module with a foreign import but no file" $ do
pdir <- Integration.projectDirectory
let file = pdir </> "src" </> "RebuildSpecWithMissingForeign.fail"
Integration.rebuildModule file >>= shouldBeFailure
it "completes a hidden identifier after rebuilding" $ do
pdir <- Integration.projectDirectory
let file = pdir </> "src" </> "RebuildSpecWithHiddenIdent.purs"
Integration.rebuildModule file >>= shouldBeSuccess
res <- Integration.getFlexCompletionsInModule "hid" "RebuildSpecWithHiddenIdent"
shouldBe False (null res)