lsp-test: Functional test framework for LSP servers.

[ bsd3, library, testing ] [ Propose Tags ]

A test framework for writing tests against Language Server Protocol servers. Language.Haskell.LSP.Test launches your server as a subprocess and allows you to simulate a session down to the wire, and Language.Haskell.LSP.Test can replay captured sessions from https://hackage.haskell.org/package/haskell-lsp. It's currently used for testing in haskell-ide-engine.


[Skip to Readme]
Versions [faq] 0.1.0.0, 0.2.0.0, 0.2.1.0, 0.3.0.0, 0.4.0.0, 0.5.0.0, 0.5.0.1, 0.5.0.2, 0.5.1.0, 0.5.1.1
Change log ChangeLog.md
Dependencies aeson, aeson-pretty, ansi-terminal, base (>=4.7 && <5), bytestring, conduit, conduit-parse, containers, data-default, Diff, directory, filepath, haskell-lsp (>=0.6), lens, mtl, parser-combinators, process, text, transformers, unix, unordered-containers, Win32, yi-rope [details]
License BSD-3-Clause
Copyright 2018 Luke Lau
Author Luke Lau
Maintainer luke_lau@icloud.com
Category Testing
Home page https://github.com/Bubba/haskell-lsp-test#readme
Bug tracker https://github.com/Bubba/haskell-lsp-test/issues
Source repo head: git clone https://github.com/Bubba/haskell-lsp-test/
Uploaded by luke_ at Tue Aug 14 21:43:09 UTC 2018
Distributions LTSHaskell:0.5.1.0, NixOS:0.5.1.0, Stackage:0.5.1.1
Downloads 544 total (103 in the last 30 days)
Rating 2.0 (votes: 1) [estimated by rule of succession]
Your Rating
  • λ
  • λ
  • λ
Status Hackage Matrix CI
Docs not available [build log]
All reported builds failed as of 2018-08-14 [all 2 reports]

Modules

  • Control
    • Applicative
      • Control.Applicative.Combinators
  • Language
    • Haskell
      • LSP
        • Language.Haskell.LSP.Test
          • Language.Haskell.LSP.Test.Replay
        • Language.Haskell.LSP.Types
          • Language.Haskell.LSP.Types.Capabilities

Downloads

Maintainer's Corner

For package maintainers and hackage trustees


Readme for lsp-test-0.2.1.0

[back to package description]

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

To test make sure you have the following language servers installed: