Ignore logging messages and remove some verbose logging
authorLuke Lau <luke_lau@icloud.com>
Wed, 6 Jun 2018 15:42:01 +0000 (11:42 -0400)
committerLuke Lau <luke_lau@icloud.com>
Wed, 6 Jun 2018 15:42:01 +0000 (11:42 -0400)
src/Language/Haskell/LSP/Test/Recorded.hs

index c028478dc1e7411c3cea400d57d9dbee8e5e452e..35bd6f3a74ce34785a45d596a285859c12a154a3 100644 (file)
@@ -40,17 +40,19 @@ replaySession sessionDir = do
 
   events <- swapFiles sessionDir unswappedEvents
 
-  let clientEvents = map (\(FromClient _ msg) -> msg) $ filter isClientMsg events
-      serverEvents = map (\(FromServer _ msg) -> msg) $ filter isServerMsg events
-      requestMap = getRequestMap clientEvents
+  let clientEvents = filter isClientMsg events
+      serverEvents = filter isServerMsg events
+      clientMsgs = map (\(FromClient _ msg) -> msg) clientEvents
+      serverMsgs = filter (not . shouldSkip) $ map (\(FromServer _ msg) -> msg) serverEvents
+      requestMap = getRequestMap clientMsgs
 
 
   reqSema <- newEmptyMVar
   rspSema <- newEmptyMVar
   passVar <- newEmptyMVar :: IO (MVar Bool)
 
-  forkIO $ runSessionWithHandler (listenServer serverEvents requestMap reqSema rspSema passVar) sessionDir $
-    sendMessages clientEvents reqSema rspSema
+  forkIO $ runSessionWithHandler (listenServer serverMsgs requestMap reqSema rspSema passVar) sessionDir $
+    sendMessages clientMsgs reqSema rspSema
 
   takeMVar passVar
 
@@ -117,8 +119,6 @@ sendMessages (nextMsg:remainingMsgs) reqSema rspSema =
     sendMessages remainingMsgs reqSema rspSema
 
   request msg@(RequestMessage _ id m _) = do
-    liftIO $ print $ addHeader $ encode msg
-
     sendRequest' msg
     liftIO $ putStrLn $  "Sent a request id " ++ show id ++ ": " ++ show m ++ "\nWaiting for a response"
 
@@ -187,7 +187,9 @@ listenServer expectedMsgs reqMap reqSema rspSema passVar serverOut  = do
     NotTelemetry                m -> notification m
     NotCancelRequestFromServer  m -> notification m
 
-  if inRightOrder msg expectedMsgs
+  if shouldSkip msg
+    then listenServer expectedMsgs reqMap reqSema rspSema passVar serverOut
+    else if inRightOrder msg expectedMsgs
       then listenServer (delete msg expectedMsgs) reqMap reqSema rspSema passVar serverOut
       else liftIO $ do
         putStrLn "Out of order"
@@ -203,8 +205,6 @@ listenServer expectedMsgs reqMap reqSema rspSema passVar serverOut  = do
   response res = do
     liftIO $ putStrLn $ "Got response for id " ++ show (res ^. id)
 
-    liftIO $ print res
-
     liftIO $ putMVar rspSema (res ^. id) -- unblock the handler waiting to send a request
 
   request :: (Show a, Show b) => RequestMessage ServerMethod a b -> Session ()
@@ -216,19 +216,10 @@ listenServer expectedMsgs reqMap reqSema rspSema passVar serverOut  = do
       ++ " "
       ++ show (req ^. method)
 
-    liftIO $ print req
-
     liftIO $ putMVar reqSema (req ^. id) -- unblock the handler waiting for a response
 
   notification :: Show a => NotificationMessage ServerMethod a -> Session ()
-  notification n = do
-    liftIO $ putStrLn $ "Got notification " ++ show (n ^. method)
-    liftIO $ print n
-
-    liftIO
-      $  putStrLn
-      $  show (length (filter isNotification expectedMsgs) - 1)
-      ++ " notifications remaining"
+  notification n = liftIO $ putStrLn $ "Got notification " ++ show (n ^. method)
 
 
 
@@ -245,9 +236,15 @@ listenServer expectedMsgs reqMap reqSema rspSema passVar serverOut  = do
 inRightOrder :: FromServerMessage -> [FromServerMessage] -> Bool
 
 inRightOrder _ [] = error "Why is this empty"
--- inRightOrder (LSP.NotificationMessage _ _ _) _ = True
 
 inRightOrder received (expected : msgs)
   | received == expected    = True
   | isNotification expected = inRightOrder received msgs
   | otherwise               = False
+
+-- | Ignore logging notifications since they vary from session to session
+shouldSkip :: FromServerMessage -> Bool
+shouldSkip (NotLogMessage  _) = True
+shouldSkip (NotShowMessage _) = True
+shouldSkip (ReqShowMessage _) = True
+shouldSkip _                  = False