From: Luke Lau Date: Tue, 26 Nov 2019 19:05:14 +0000 (+0000) Subject: Add ignoreLogNotifications config option X-Git-Tag: 0.9.0.0~10 X-Git-Url: https://git.lukelau.me/?p=lsp-test.git;a=commitdiff_plain;h=cb75f5731bd7d85b1f1c684cbb2ce90cf82a1e34 Add ignoreLogNotifications config option --- diff --git a/ChangeLog.md b/ChangeLog.md index c75f2c6..2d4f611 100644 --- a/ChangeLog.md +++ b/ChangeLog.md @@ -1,5 +1,9 @@ # Revision history for lsp-test +## 0.9.0.0 -- ??? + +* Add `ignoreLogNotifications` config option + ## 0.8.2.0 -- 2019-11-17 * Expose `satisfyMaybe` (@cocreature) diff --git a/src/Language/Haskell/LSP/Test/Session.hs b/src/Language/Haskell/LSP/Test/Session.hs index 07b5886..2b6da8e 100644 --- a/src/Language/Haskell/LSP/Test/Session.hs +++ b/src/Language/Haskell/LSP/Test/Session.hs @@ -95,11 +95,14 @@ data SessionConfig = SessionConfig , logMessages :: Bool -- ^ Trace the messages sent and received to stdout, defaults to False. , logColor :: Bool -- ^ Add ANSI color to the logged messages, defaults to True. , lspConfig :: Maybe Value -- ^ The initial LSP config as JSON value, defaults to Nothing. + -- ^ Whether or not to ignore 'ShowMessageNotification' and 'LogMessageNotification', defaults to False. + -- @since 0.9.0.0 + , ignoreLogNotifications :: Bool } -- | The configuration used in 'Language.Haskell.LSP.Test.runSession'. defaultConfig :: SessionConfig -defaultConfig = SessionConfig 60 False False True Nothing +defaultConfig = SessionConfig 60 False False True Nothing False instance Default SessionConfig where def = defaultConfig @@ -181,9 +184,14 @@ runSession context state (Session session) = runReaderT (runStateT conduit state chanSource = do msg <- liftIO $ readChan (messageChan context) + unless (ignoreLogNotifications (config context) && isLogNotification msg) $ yield msg chanSource + isLogNotification (ServerMessage (NotShowMessage _)) = True + isLogNotification (ServerMessage (NotLogMessage _)) = True + isLogNotification _ = False + watchdog :: ConduitM SessionMessage FromServerMessage (StateT SessionState (ReaderT SessionContext IO)) () watchdog = Conduit.awaitForever $ \msg -> do curId <- curTimeoutId <$> get @@ -362,3 +370,4 @@ logMsg t msg = do showPretty = B.unpack . encodePretty + diff --git a/test/Test.hs b/test/Test.hs index a0d4d0d..dc770d9 100644 --- a/test/Test.hs +++ b/test/Test.hs @@ -333,6 +333,12 @@ main = hspec $ do pred _ = False void $ satisfy pred + describe "ignoreLogNotifications" $ + it "works" $ + runSessionWithConfig (defaultConfig { ignoreLogNotifications = True }) "hie" fullCaps "test/data" $ do + openDoc "Format.hs" "haskell" + void publishDiagnosticsNotification + mkRange sl sc el ec = Range (Position sl sc) (Position el ec) didChangeCaps :: ClientCapabilities