X-Git-Url: https://git.lukelau.me/?a=blobdiff_plain;f=test%2FTest.hs;h=81b5c7b131707c6180fb3ab5c2d39327409ea86b;hb=5fed47500d838f468dbb26eaf96e67afcfa5f05e;hp=0fc2f53f73d2511b480a83b7ef770e83ba9acba9;hpb=d409af913af1a3cae988cb146e6bcfa4b4f1e0c7;p=lsp-test.git diff --git a/test/Test.hs b/test/Test.hs index 0fc2f53..81b5c7b 100644 --- a/test/Test.hs +++ b/test/Test.hs @@ -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 () @@ -259,12 +263,12 @@ main = hspec $ do defs <- getDefinitions doc pos liftIO $ defs `shouldBe` [Location (doc ^. uri) (mkRange 28 0 28 7)] - -- describe "getTypeDefinitions" $ - -- it "works" $ runSession "hie" fullCaps "test/data/renamePass" $ do - -- doc <- openDoc "Desktop/simple.hs" "haskell" - -- let pos = Position 20 23 -- Quit value - -- defs <- getTypeDefinitions doc pos - -- liftIO $ defs `shouldBe` [Location (doc ^. uri) (mkRange 10 5 10 12)] -- Type definition + describe "getTypeDefinitions" $ + it "works" $ runSession "hie" fullCaps "test/data/renamePass" $ do + doc <- openDoc "Desktop/simple.hs" "haskell" + let pos = Position 20 23 -- Quit value + defs <- getTypeDefinitions doc pos + liftIO $ defs `shouldBe` [Location (doc ^. uri) (mkRange 10 0 14 19)] -- Type definition describe "waitForDiagnosticsSource" $ it "works" $ runSession "hie" fullCaps "test/data" $ do @@ -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