Add "rename suggestion" test
[lsp-test.git] / test / Test.hs
index 2372cbefff91ebf9c2b6004a301d6cab0a1e5f63..81b5c7b131707c6180fb3ab5c2d39327409ea86b 100644 (file)
@@ -62,8 +62,12 @@ main = hspec $ do
 
       it "further timeout messages are ignored" $ runSession "hie" fullCaps "test/data/renamePass" $ do
         doc <- openDoc "Desktop/simple.hs" "haskell"
+        -- warm up the cache
+        getDocumentSymbols doc
+        -- shouldn't timeout
         withTimeout 3 $ getDocumentSymbols doc
-        liftIO $ threadDelay 5000000
+        -- longer than the original timeout
+        liftIO $ threadDelay (5 * 10^6)
         -- shouldn't throw an exception
         getDocumentSymbols doc
         return ()
@@ -280,6 +284,18 @@ main = hspec $ do
       rename doc (Position 1 0) "bar"
       documentContents doc >>= liftIO . shouldBe "main = bar\nbar = return 42\n"
 
+  describe "rename suggestion" $
+    it "works" $ runSession "hie" fullCaps "test/data" $ do
+      doc <- openDoc "RenameSuggestion.hs" "haskell"
+
+      _ <- waitForDiagnosticsSource "ghcmod"
+
+      CACodeAction cmd:_ <- getAllCodeActions doc
+      executeCodeAction cmd
+
+      x:_ <- T.lines <$> documentContents doc
+      liftIO $ x `shouldBe` "main = putStrLn \"hello\""
+
   describe "getHover" $
     it "works" $ runSession "hie" fullCaps "test/data/renamePass" $ do
       doc <- openDoc "Desktop/simple.hs" "haskell"
@@ -319,6 +335,13 @@ main = hspec $ do
               documentContents doc >>= liftIO . print
       in sesh `shouldThrow` anyException
 
+  describe "satisfy" $
+    it "works" $ runSession "hie" fullCaps "test/data" $ do
+      openDoc "Format.hs" "haskell"
+      let pred (NotLogMessage _) = True
+          pred _ = False
+      void $ satisfy pred
+
 mkRange sl sc el ec = Range (Position sl sc) (Position el ec)
 
 didChangeCaps :: ClientCapabilities