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
22 source = yield testDiag
24 diags <- publishDiagnosticsNotification
25 return $ diags ^. params . uri
26 runConduit (source .| runConduitParser session) `shouldReturn` Uri "foo"
27 it "get picked up after skipping others before" $ do
28 let testDiag = NotPublishDiagnostics
29 (NotificationMessage "2.0"
30 TextDocumentPublishDiagnostics
31 (PublishDiagnosticsParams (Uri "foo")
33 notTestDiag = NotLogMessage (NotificationMessage "2.0" WindowLogMessage (LogMessageParams MtLog "foo"))
34 source = yield notTestDiag >> yield testDiag
36 diags <- skipManyTill notification publishDiagnosticsNotification
37 return $ diags ^. params . uri
38 runConduit (source .| runConduitParser session) `shouldReturn` Uri "foo"