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 ()
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 15 10 19)] -- First constructor
+ liftIO $ defs `shouldBe` [Location (doc ^. uri) (mkRange 10 0 14 19)] -- Type definition
describe "waitForDiagnosticsSource" $
it "works" $ runSession "hie" fullCaps "test/data" $ 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"
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