From: Luke Lau Date: Thu, 28 Jun 2018 10:32:46 +0000 (+0100) Subject: Add config option to log stderr X-Git-Url: http://git.lukelau.me/?p=opengl.git;a=commitdiff_plain;h=269f303e5e44fba835c51eacfca622c488a06b9f Add config option to log stderr --- diff --git a/src/Language/Haskell/LSP/Test.hs b/src/Language/Haskell/LSP/Test.hs index 1b8c2a8..1ce6871 100644 --- a/src/Language/Haskell/LSP/Test.hs +++ b/src/Language/Haskell/LSP/Test.hs @@ -121,7 +121,7 @@ runSessionWithConfig config serverExe rootDir session = do Nothing (capabilities config) (Just TraceOff) - withServer serverExe $ \serverIn serverOut _ -> + withServer serverExe (logStdErr config) $ \serverIn serverOut _ -> runSessionWithHandles serverIn serverOut listenServer config rootDir $ do -- Wrap the session around initialize and shutdown calls diff --git a/src/Language/Haskell/LSP/Test/Replay.hs b/src/Language/Haskell/LSP/Test/Replay.hs index 88bc092..68e6b1b 100644 --- a/src/Language/Haskell/LSP/Test/Replay.hs +++ b/src/Language/Haskell/LSP/Test/Replay.hs @@ -42,7 +42,7 @@ replaySession serverExe sessionDir = do -- decode session let unswappedEvents = map (fromJust . decode) entries - withServer serverExe $ \serverIn serverOut pid -> do + withServer serverExe False $ \serverIn serverOut pid -> do events <- swapCommands pid <$> swapFiles sessionDir unswappedEvents diff --git a/src/Language/Haskell/LSP/Test/Server.hs b/src/Language/Haskell/LSP/Test/Server.hs index c59a755..7d00f23 100644 --- a/src/Language/Haskell/LSP/Test/Server.hs +++ b/src/Language/Haskell/LSP/Test/Server.hs @@ -6,8 +6,8 @@ import Language.Haskell.LSP.Test.Compat import System.IO import System.Process -withServer :: String -> (Handle -> Handle -> Int -> IO a) -> IO a -withServer serverExe f = do +withServer :: String -> Bool -> (Handle -> Handle -> Int -> IO a) -> IO a +withServer serverExe logStdErr f = do -- TODO Probably should just change runServer to accept -- separate command and arguments let cmd:args = words serverExe @@ -17,7 +17,7 @@ withServer serverExe f = do -- Need to continuously consume to stderr else it gets blocked -- Can't pass NoStream either to std_err hSetBuffering serverErr NoBuffering - errSinkThread <- forkIO $ forever $ hGetLine serverErr + errSinkThread <- forkIO $ forever $ hGetLine serverErr >>= when logStdErr . putStrLn pid <- getProcessID serverProc diff --git a/src/Language/Haskell/LSP/Test/Session.hs b/src/Language/Haskell/LSP/Test/Session.hs index 6a9a6d5..b38d1b7 100644 --- a/src/Language/Haskell/LSP/Test/Session.hs +++ b/src/Language/Haskell/LSP/Test/Session.hs @@ -66,10 +66,11 @@ data SessionConfig = SessionConfig { capabilities :: ClientCapabilities -- ^ Specific capabilities the client should advertise. Default is yes to everything. , timeout :: Int -- ^ Maximum time to wait for a request in seconds. Defaults to 60. + , logStdErr :: Bool -- ^ When True redirects the servers stderr output to haskell-lsp-test's stdout. Defaults to False } instance Default SessionConfig where - def = SessionConfig def 60 + def = SessionConfig def 60 False class Monad m => MonadSessionConfig m where sessionConfig :: m SessionConfig