1 {-# LANGUAGE OverloadedStrings #-}
2 module ParsingTests where
4 import Control.Lens hiding (List)
5 import Language.Haskell.LSP.Messages
6 import Language.Haskell.LSP.Test
7 import Language.Haskell.LSP.Types
9 import Data.Conduit.Parser
12 type TestSession = ConduitParser FromServerMessage IO
16 describe "diagnostics" $ do
17 let testDiag = NotPublishDiagnostics
18 (NotificationMessage "2.0"
19 TextDocumentPublishDiagnostics
20 (PublishDiagnosticsParams (Uri "foo")
22 it "get picked up" $ do
23 let source = yield testDiag
25 diags <- publishDiagnosticsNotification :: TestSession PublishDiagnosticsNotification
26 return $ diags ^. params . uri
27 runConduit (source .| runConduitParser session) `shouldReturn` Uri "foo"
28 it "get picked up after skipping others before" $ do
29 let testDiag = NotPublishDiagnostics
30 (NotificationMessage "2.0"
31 TextDocumentPublishDiagnostics
32 (PublishDiagnosticsParams (Uri "foo")
34 notTestDiag = NotLogMessage (NotificationMessage "2.0" WindowLogMessage (LogMessageParams MtLog "foo"))
35 source = yield notTestDiag >> yield testDiag
37 diags <- skipManyTill anyNotification notification :: TestSession PublishDiagnosticsNotification
38 return $ diags ^. params . uri
39 runConduit (source .| runConduitParser session) `shouldReturn` Uri "foo"