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
14 describe "diagnostics" $ do
15 let testDiag = NotPublishDiagnostics
16 (NotificationMessage "2.0"
17 TextDocumentPublishDiagnostics
18 (PublishDiagnosticsParams (Uri "foo")
20 it "get picked up" $ do
21 let source = yield testDiag
23 diags <- publishDiagnosticsNotification :: ConduitParser FromServerMessage IO PublishDiagnosticsNotification
24 return $ diags ^. params . uri
25 runConduit (source .| runConduitParser session) `shouldReturn` Uri "foo"
26 it "get picked up after skipping others before" $ do
27 let testDiag = NotPublishDiagnostics
28 (NotificationMessage "2.0"
29 TextDocumentPublishDiagnostics
30 (PublishDiagnosticsParams (Uri "foo")
32 notTestDiag = NotLogMessage (NotificationMessage "2.0" WindowLogMessage (LogMessageParams MtLog "foo"))
33 source = yield notTestDiag >> yield testDiag
35 diags <- skipManyTill anyNotification notification :: ConduitParser FromServerMessage IO PublishDiagnosticsNotification
36 return $ diags ^. params . uri
37 runConduit (source .| runConduitParser session) `shouldReturn` Uri "foo"