Tweak timeout tests
[lsp-test.git] / test / Test.hs
index 11114d91fa310b56555e317eec517dfffb14e073..d4c1529ed7ac1ea2af30c7686d2c623d2a62b672 100644 (file)
@@ -30,12 +30,11 @@ import           System.Timeout
 main = hspec $ do
   describe "Session" $ do
     it "fails a test" $
-      -- TODO: Catch the exception in haskell-lsp-test and provide nicer output
       let session = runSession "hie" fullCaps "test/data/renamePass" $ do
                       openDoc "Desktop/simple.hs" "haskell"
                       skipMany loggingNotification
                       anyRequest
-        in session `shouldThrow` anyException
+        in session `shouldThrow` anySessionException
     it "initializeResponse" $ runSession "hie" fullCaps "test/data/renamePass" $ do
       rsp <- initializeResponse
       liftIO $ rsp ^. result `shouldNotBe` Nothing
@@ -53,19 +52,20 @@ main = hspec $ do
                     withTimeout 5 $ skipManyTill anyMessage message :: Session ApplyWorkspaceEditRequest
           -- wait just a bit longer than 5 seconds so we have time
           -- to open the document
-          in timeout 6000000 sesh `shouldThrow` anySessionException
+          in timeout 6e6 sesh `shouldThrow` anySessionException
           
       it "doesn't time out" $
         let sesh = runSession "hie" fullCaps "test/data/renamePass" $ do
                     openDoc "Desktop/simple.hs" "haskell"
                     withTimeout 5 $ skipManyTill anyMessage publishDiagnosticsNotification
-          in void $ timeout 6000000 sesh
+          in void $ timeout 6e6 sesh
 
-      it "further timeout messages are ignored" $ runSession "hie" fullCaps "test/data/renamePass" $ do
+      it "further timeout messages are ignored" $ runSessionWithConfig (defaultConfig { logStdErr = True, logMessages = True }) "hie" fullCaps "test/data/renamePass" $ do
         doc <- openDoc "Desktop/simple.hs" "haskell"
+        getDocumentSymbols doc
         withTimeout 3 $ getDocumentSymbols doc
-        liftIO $ threadDelay 5000000
         -- shouldn't throw an exception
+        liftIO $ threadDelay 5e6
         getDocumentSymbols doc
         return ()
 
@@ -74,7 +74,7 @@ main = hspec $ do
               runSessionWithConfig (def { messageTimeout = 5 }) "hie" fullCaps "test/data/renamePass" $ do
                 doc <- openDoc "Desktop/simple.hs" "haskell"
                 -- shouldn't time out in here since we are overriding it
-                withTimeout 10 $ liftIO $ threadDelay 7000000
+                withTimeout 10 $ liftIO $ threadDelay 7e6
                 getDocumentSymbols doc
                 return True
         in sesh `shouldReturn` True
@@ -84,7 +84,7 @@ main = hspec $ do
               runSessionWithConfig (def { messageTimeout = 5 }) "hie" fullCaps "test/data/renamePass" $ do
                 doc <- openDoc "Desktop/simple.hs" "haskell"
                 -- shouldn't time out in here since we are overriding it
-                withTimeout 10 $ liftIO $ threadDelay 7000000
+                withTimeout 10 $ liftIO $ threadDelay 7e6
                 getDocumentSymbols doc
                 -- should now timeout
                 skipManyTill anyMessage message :: Session ApplyWorkspaceEditRequest
@@ -229,6 +229,12 @@ main = hspec $ do
   describe "getCompletions" $
     it "works" $ runSession "hie" def "test/data/renamePass" $ do
       doc <- openDoc "Desktop/simple.hs" "haskell"
+
+      -- wait for module to be loaded
+      skipMany loggingNotification
+      noDiagnostics
+      noDiagnostics
+
       item:_ <- getCompletions doc (Position 5 5)
       liftIO $ do
         item ^. label `shouldBe` "interactWithUser"