{-# LANGUAGE OverloadedStrings #-}
module HieBios (tests) where
import Control.Applicative.Combinators
import qualified Data.Text as T
import Language.Haskell.LSP.Test
import Language.Haskell.LSP.Types
import Language.Haskell.LSP.Messages
import System.FilePath ((</>))
import Test.Hls.Util
import Test.Tasty
import Test.Tasty.ExpectedFailure (ignoreTestBecause)
import Test.Tasty.HUnit
tests :: TestTree
tests = testGroup "hie-bios" [
ignoreTestBecause "Broken" $ testCase "loads modules inside main-is" $ do
writeFile (hieBiosErrorPath </> "hie.yaml") ""
runSession hlsCommand fullCaps "test/testdata/hieBiosMainIs" $ do
_ <- openDoc "Main.hs" "haskell"
_ <- count 2 waitForDiagnostics
return ()
, ignoreTestBecause "Broken" $ testCase "reports errors in hie.yaml" $ do
writeFile (hieBiosErrorPath </> "hie.yaml") ""
runSession hlsCommand fullCaps hieBiosErrorPath $ do
_ <- openDoc "Foo.hs" "haskell"
_ <- skipManyTill loggingNotification (satisfy isMessage)
return ()
]
where
hieBiosErrorPath = "test/testdata/hieBiosError"
isMessage (NotShowMessage (NotificationMessage _ _ (ShowMessageParams MtError s))) =
"Couldn't parse hie.yaml" `T.isInfixOf` s
isMessage _ = False