lsp-test is a functional testing framework for Language Server Protocol servers.
import Language.Haskell.LSP.Test
runSession "hie" fullCaps "proj/dir" $ do
doc <- openDoc "Foo.hs" "haskell"
skipMany anyNotification
symbols <- getDocumentSymbols docdescribe "diagnostics" $
it "report errors" $ runSession "hie" fullCaps "test/data" $ do
openDoc "Error.hs" "haskell"
[diag] <- waitForDiagnosticsSource "ghcmod"
liftIO $ do
diag ^. severity `shouldBe` Just DsError
diag ^. source `shouldBe` Just "ghcmod"replaySession "hie" "test/data/renamePass"skipManyTill loggingNotification publishDiagnosticsNotification
count 4 (message :: Session ApplyWorkspaceEditRequest)
anyRequest <|> anyResponseTry out the example tests in the example directory with cabal new-test.
For more examples check the Wiki
The tests are integration tests, so make sure you have the following language servers installed and on your PATH:
- Check out a relatively recent version of the repo, or see
.travis.ymlto get the exact commit used for CI. stack install
npm i -g javascript-typescript-langserver
Then run the tests with stack test or cabal new-test.