@@ -212,6 +212,7 @@ codeActionTests :: TestTree
212codeActionTests = testGroup "code actions"
212codeActionTests = testGroup "code actions"
213 [ renameActionTests
213 [ renameActionTests
214 , typeWildCardActionTests
214 , typeWildCardActionTests
217renameActionTests :: TestTree
218renameActionTests :: TestTree
@@ -360,6 +361,34 @@ typeWildCardActionTests = testGroup "type wildcard actions"
360 liftIO $ expectedContentAfterAction @=? contentAfterAction
361 liftIO $ expectedContentAfterAction @=? contentAfterAction
364+removeImportTests :: TestTree
365+removeImportTests = testGroup "remove import actions"
366+ [ testSession "redundant" $ do
367+ let contentA = T.unlines
368+ [ "module ModuleA where"
370+ docA <- openDoc' "ModuleA.hs" "haskell" contentA
371+ let contentB = T.unlines
372+ [ "{-# OPTIONS_GHC -Wunused-imports #-}"
373+ , "module ModuleB where"
377+ docB <- openDoc' "ModuleB.hs" "haskell" contentB
378+ _ <- waitForDiagnostics
379+ [CACodeAction action@CodeAction { _title = actionTitle }]
380+ <- getCodeActions docB (Range (Position 2 0) (Position 2 5))
381+ liftIO $ "Remove import" @=? actionTitle
382+ executeCodeAction action
383+ contentAfterAction <- documentContents docB
384+ let expectedContentAfterAction = T.unlines
385+ [ "{-# OPTIONS_GHC -Wunused-imports #-}"
386+ , "module ModuleB where"
389+ liftIO $ expectedContentAfterAction @=? contentAfterAction
363----------------------------------------------------------------------
392----------------------------------------------------------------------