Execute getTypeDefinition test
[lsp-test.git] / test / Test.hs
index 11114d91fa310b56555e317eec517dfffb14e073..09f8b341b27d5c89fe57e2213c81b6f6b726dbb0 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
@@ -229,6 +228,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"
@@ -254,6 +259,13 @@ 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 0 15 19)]  -- Type definition
+
   describe "waitForDiagnosticsSource" $
     it "works" $ runSession "hie" fullCaps "test/data" $ do
       openDoc "Error.hs" "haskell"