packages feed

haskell-language-server-1.5.0.0: test/functional/FunctionalLiquid.hs

{-# LANGUAGE OverloadedStrings #-}

module FunctionalLiquid (tests) where

import           Control.Lens            hiding (List)
import           Data.Aeson
import           Ide.Plugin.Config
import           Language.LSP.Types.Lens as LSP hiding (contents)
import           Test.Hls
import           Test.Hls.Command

-- ---------------------------------------------------------------------

tests :: TestTree
tests = testGroup "liquid haskell diagnostics" [
    ignoreTestBecause "no liquid haskell"
    $ testCase "liquid haskell generates diagnostics" $
        runSession hlsCommand codeActionSupportCaps "test/testdata" $ do
            doc <- openDoc "liquid/Evens.hs" "haskell"

            let config = def { liquidOn  = True, hlintOn = False }
            sendConfigurationChanged (toJSON config)

            diags <- waitForDiagnosticsFromSource doc "liquid"
            d <- liftIO $ inspectDiagnostic diags ["Liquid Type Mismatch"]
            liftIO $ do
                length diags @?= 1
                d ^. range @?= Range (Position 8 0) (Position 8 11)
                d ^. severity @?= Just DsError
                d ^. code @?= Nothing
    ]