BSD-3-Clause licensed by Luke Lau
Maintained by [email protected]
This version can be pinned in stack with:lsp-test-0.7.0.0@sha256:f38d1205680602260f3545ef54aebda63f170a8bcc0e748d25eef5ba61d6bb1d,3506

Module documentation for 0.7.0.0

lsp-test Build Status Hackage

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

Examples

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

Try out the example tests in the example directory with cabal new-test. For more examples check the Wiki

Developing

The tests are integration tests, so make sure you have the following language servers installed and on your PATH:

haskell-ide-engine

  • Check out a relatively recent version of the repo, or see .travis.yml to get the exact commit used for CI.
  • stack install

javascript-typescript-langserver

npm i -g javascript-typescript-langserver

Then run the tests with stack test or cabal new-test.

Changes

Revision history for lsp-test

0.7.0.0 – 2019-09-08

  • Update for haskell-lsp-0.16.0.0

0.6.1.0 – 2019-08-24

  • Add satisfyMaybe (@cocreature)

0.6.0.0 – 2019-07-04

  • Update to haskell-lsp-0.15.0.0 (@lorenzo)

0.5.4.0 – 2019-06-13

  • Fix getDefinitions for SingleLoc (@cocreature)
  • Add getCodeLenses (@cocreature)

0.5.3.0 – 2019-06-13

  • Update to haskell-lsp-0.14.0.0 (@cocreature)
  • Support TextDocumentDidChange (@cocreature)
  • Add non-file based openDoc (@cocreature)

0.5.2.0 – 2019-04-28

  • Add satisfy parser combinator

0.5.1.0 – 2019-04-22

  • Fix unhandled window/progress server notifications

0.5.1.0 – 2019-04-07

  • Add getTypeDefinitions (@fendor)

0.5.0.2 – 2018-12-05

  • Fix loose threads when exceptions are thrown

0.5.0.0 – 2018-11-13

  • Add lspConfig option in config
  • GHC 8.6.2 support

0.4.0.0 – 2018-09-08

  • Update to haskell-lsp-0.8.0.0

0.3.0.0 – 2018-09-0t

  • Update to haskell-lsp-0.7.0.0

0.2.1.0 – 2018-08-14

  • Add getCodeActions
  • Add getCurrentDiagnostics

0.2.0.0 – 2018-08-06

  • Update to haskell-lsp 0.6.0.0