1 {-# LANGUAGE OverloadedStrings #-}
2 {-# LANGUAGE FlexibleInstances #-}
3 module ParsingTests where
5 import Control.Lens hiding (List)
6 import Language.Haskell.LSP.Messages
7 import Language.Haskell.LSP.Test
8 import Language.Haskell.LSP.Types
10 import Data.Conduit.Parser
14 type TestSession = ConduitParser FromServerMessage IO
16 instance MonadSessionConfig IO where
17 sessionConfig = return def
20 parsingSpec = return ()
21 -- describe "diagnostics" $ do
22 -- let testDiag = NotPublishDiagnostics
23 -- (NotificationMessage "2.0"
24 -- TextDocumentPublishDiagnostics
25 -- (PublishDiagnosticsParams (Uri "foo")
27 -- it "get picked up" $ do
28 -- let source = yield testDiag
30 -- diags <- publishDiagnosticsNotification :: TestSession PublishDiagnosticsNotification
31 -- return $ diags ^. params . uri
32 -- runConduit (source .| runConduitParser session) `shouldReturn` Uri "foo"
33 -- it "get picked up after skipping others before" $ do
34 -- let testDiag = NotPublishDiagnostics
35 -- (NotificationMessage "2.0"
36 -- TextDocumentPublishDiagnostics
37 -- (PublishDiagnosticsParams (Uri "foo")
39 -- notTestDiag = NotLogMessage (NotificationMessage "2.0" WindowLogMessage (LogMessageParams MtLog "foo"))
40 -- source = yield notTestDiag >> yield testDiag
42 -- diags <- skipManyTill anyNotification notification :: TestSession PublishDiagnosticsNotification
43 -- return $ diags ^. params . uri
44 -- runConduit (source .| runConduitParser session) `shouldReturn` Uri "foo"