X-Git-Url: http://git.lukelau.me/?a=blobdiff_plain;f=src%2FLanguage%2FHaskell%2FLSP%2FTest%2FReplay.hs;h=9d7f136a20056a7f81359e23f9856c0248c915de;hb=7d0ddb8022d9cccc68a99008dd55c1d39ddda3e7;hp=4802c9ad152afb7b57d8a2a7d906d81b99a459a8;hpb=4eb97ef8a3d4b3908fa9b5bbbd5ae77cfa95cecc;p=lsp-test.git diff --git a/src/Language/Haskell/LSP/Test/Replay.hs b/src/Language/Haskell/LSP/Test/Replay.hs index 4802c9a..9d7f136 100644 --- a/src/Language/Haskell/LSP/Test/Replay.hs +++ b/src/Language/Haskell/LSP/Test/Replay.hs @@ -29,7 +29,7 @@ import Language.Haskell.LSP.Test.Messages -- makes sure it matches up with an expected response. -- The session directory should have a captured session file in it -- named "session.log". -replaySession :: FilePath -- ^ The filepath to the server executable. +replaySession :: String -- ^ The command to run the server. -> FilePath -- ^ The recorded session directory. -> IO Bool replaySession serverExe sessionDir = do @@ -51,10 +51,15 @@ replaySession serverExe sessionDir = do rspSema <- newEmptyMVar passVar <- newEmptyMVar :: IO (MVar Bool) - forkIO $ runSessionWithHandler (listenServer serverMsgs requestMap reqSema rspSema passVar) serverExe sessionDir $ - sendMessages clientMsgs reqSema rspSema + threadId <- forkIO $ + runSessionWithHandler (listenServer serverMsgs requestMap reqSema rspSema passVar) + serverExe + sessionDir + (sendMessages clientMsgs reqSema rspSema) - takeMVar passVar + result <- takeMVar passVar + killThread threadId + return result where isClientMsg (FromClient _ _) = True