X-Git-Url: http://git.lukelau.me/?a=blobdiff_plain;f=src%2FLanguage%2FHaskell%2FLSP%2FTest%2FReplay.hs;h=2d5e4e612284ab6c3329a5aa7c36c548f45a1ef2;hb=a65254a5b7a5312bc616d601737f8595b14279ef;hp=8c9e1d07593b5c833780afbcf1b3a65af796a86b;hpb=208679fa3a42e2a81bc778218bab6376bd6f42d1;p=opengl.git diff --git a/src/Language/Haskell/LSP/Test/Replay.hs b/src/Language/Haskell/LSP/Test/Replay.hs index 8c9e1d0..2d5e4e6 100644 --- a/src/Language/Haskell/LSP/Test/Replay.hs +++ b/src/Language/Haskell/LSP/Test/Replay.hs @@ -46,15 +46,18 @@ replaySession sessionDir = do serverMsgs = filter (not . shouldSkip) $ map (\(FromServer _ msg) -> msg) serverEvents requestMap = getRequestMap clientMsgs - reqSema <- newEmptyMVar rspSema <- newEmptyMVar passVar <- newEmptyMVar :: IO (MVar Bool) - forkIO $ runSessionWithHandler (listenServer serverMsgs requestMap reqSema rspSema passVar) sessionDir $ - sendMessages clientMsgs reqSema rspSema + threadId <- forkIO $ + runSessionWithHandler (listenServer serverMsgs requestMap reqSema rspSema passVar) + sessionDir + (sendMessages clientMsgs reqSema rspSema) - takeMVar passVar + result <- takeMVar passVar + killThread threadId + return result where isClientMsg (FromClient _ _) = True @@ -99,7 +102,7 @@ sendMessages (nextMsg:remainingMsgs) reqSema rspSema = if responseId reqId /= id then error $ "Expected id " ++ show reqId ++ ", got " ++ show reqId else do - sendResponse' msg + sendResponse msg liftIO $ putStrLn $ "Sent response to request id " ++ show id sendMessages remainingMsgs reqSema rspSema @@ -130,7 +133,7 @@ listenServer expectedMsgs reqMap reqSema rspSema passVar serverOut = do print msg putStrLn "Expected one of:" mapM_ print $ takeWhile (not . isNotification) expectedMsgs - print $ head $ dropWhile (not . isNotification) expectedMsgs + print $ head $ dropWhile isNotification expectedMsgs putMVar passVar False where