lsp-test alternatives and similar packages
Based on the "Testing" category
Do you think we are missing an alternative of lsp-test or a related project?
lsp-test is a functional testing framework for Language Server Protocol servers.
import Language.Haskell.LSP.Test main = runSession "hie" fullCaps "proj/dir" $ do doc <- openDoc "Foo.hs" "haskell" skipMany anyNotification symbols <- getDocumentSymbols doc
Unit tests with HSpec
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"
Replaying captured session
replaySession "hie" "test/data/renamePass"
Parsing with combinators
skipManyTill loggingNotification publishDiagnosticsNotification count 4 (message :: Session ApplyWorkspaceEditRequest) anyRequest <|> anyResponse
Whilst writing your tests you may want to debug them to see what's going wrong.
You can set the
logStdErr options in
SessionConfig to see what the server is up to.
There are also corresponding environment variables so you can turn them on from the command line:
LSP_TEST_LOG_MESSAGES=1 LSP_TEST_LOG_STDERR=1 cabal test
The tests for lsp-test use a dummy server found in
Run the tests with
cabal test or
Tip: If you want to filter the tests, use
cabal run test:tests -- -m "foo"
Seeing funny stuff when running lsp-test via stack? If your server is built upon Haskell tooling, keep in mind that stack sets some environment variables related to GHC, and you may want to unset them.