import Language.Haskell.LSP.Messages
import Language.Haskell.LSP.Test
import Language.Haskell.LSP.Test.Replay
-import Language.Haskell.LSP.Types.Capabilities
import Language.Haskell.LSP.Types as LSP hiding (capabilities, message)
import System.Timeout
selector _ = False
sesh = do
doc <- openDoc "Desktop/simple.hs" "haskell"
- sendRequest' TextDocumentDocumentSymbol (DocumentSymbolParams doc)
+ sendRequest TextDocumentDocumentSymbol (DocumentSymbolParams doc)
skipMany anyNotification
message :: Session RenameResponse -- the wrong type
in runSession "hie --lsp" fullCaps "test/data/renamePass" sesh
noDiagnostics
- (fooSymbol:_) <- getDocumentSymbols doc
+ Right (fooSymbol:_) <- getDocumentSymbols doc
liftIO $ do
fooSymbol ^. name `shouldBe` "foo"
(Position 1 14)
"Redundant bracket"
reqParams = ExecuteCommandParams "applyrefact:applyOne" (Just (List [args]))
- sendRequest_ WorkspaceExecuteCommand reqParams
+ request_ WorkspaceExecuteCommand reqParams
editReq <- message :: Session ApplyWorkspaceEditRequest
liftIO $ do
(Position 1 14)
"Redundant bracket"
reqParams = ExecuteCommandParams "applyrefact:applyOne" (Just (List [args]))
- sendRequest_ WorkspaceExecuteCommand reqParams
+ request_ WorkspaceExecuteCommand reqParams
contents <- getDocumentEdit doc
liftIO $ contents `shouldBe` "main :: IO Int\nmain = return 42\n"
noDiagnostics
+ describe "getCodeActions" $
+ it "works" $ runSession "hie" fullCaps "test/data/refactor" $ do
+ doc <- openDoc "Main.hs" "haskell"
+ waitForDiagnostics
+ [CACodeAction action] <- getCodeActions doc (Range (Position 1 14) (Position 1 18))
+ liftIO $ action ^. title `shouldBe` "Apply hint:Redundant bracket"
+
describe "getAllCodeActions" $
it "works" $ runSession "hie --lsp" fullCaps "test/data/refactor" $ do
doc <- openDoc "Main.hs" "haskell"
_ <- waitForDiagnostics
actions <- getAllCodeActions doc
liftIO $ do
- let [CommandOrCodeActionCodeAction action] = actions
+ let [CACodeAction action] = actions
action ^. title `shouldBe` "Apply hint:Redundant bracket"
action ^. command . _Just . command `shouldSatisfy` T.isSuffixOf ":applyrefact:applyOne"
noDiagnostics
- (mainSymbol:_) <- getDocumentSymbols doc
+ Left (mainSymbol:_) <- getDocumentSymbols doc
liftIO $ do
mainSymbol ^. name `shouldBe` "main"
mainSymbol ^. kind `shouldBe` SkFunction
- mainSymbol ^. location . range `shouldBe` Range (Position 3 0) (Position 3 4)
- mainSymbol ^. containerName `shouldBe` Nothing
+ mainSymbol ^. range `shouldBe` Range (Position 3 0) (Position 3 4)
describe "applyEdit" $ do
it "increments the version" $ runSession "hie --lsp" docChangesCaps "test/data/renamePass" $ do