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 doc
describe "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 <|> anyResponse
Try 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.yml
to 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
.