@@ -212,6 +212,7 @@ codeActionTests :: TestTree
212
212
codeActionTests = testGroup " code actions"
213
213
[ renameActionTests
214
214
, typeWildCardActionTests
215
+ , removeImportTests
215
216
]
216
217
217
218
renameActionTests :: TestTree
@@ -360,6 +361,58 @@ typeWildCardActionTests = testGroup "type wildcard actions"
360
361
liftIO $ expectedContentAfterAction @=? contentAfterAction
361
362
]
362
363
364
+ removeImportTests :: TestTree
365
+ removeImportTests = testGroup " remove import actions"
366
+ [ testSession " redundant" $ do
367
+ let contentA = T. unlines
368
+ [ " module ModuleA where"
369
+ ]
370
+ docA <- openDoc' " ModuleA.hs" " haskell" contentA
371
+ let contentB = T. unlines
372
+ [ " {-# OPTIONS_GHC -Wunused-imports #-}"
373
+ , " module ModuleB where"
374
+ , " import ModuleA"
375
+ , " stuffB = 123"
376
+ ]
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"
387
+ , " stuffB = 123"
388
+ ]
389
+ liftIO $ expectedContentAfterAction @=? contentAfterAction
390
+ , testSession " qualified redundant" $ do
391
+ let contentA = T. unlines
392
+ [ " module ModuleA where"
393
+ ]
394
+ docA <- openDoc' " ModuleA.hs" " haskell" contentA
395
+ let contentB = T. unlines
396
+ [ " {-# OPTIONS_GHC -Wunused-imports #-}"
397
+ , " module ModuleB where"
398
+ , " import qualified ModuleA"
399
+ , " stuffB = 123"
400
+ ]
401
+ docB <- openDoc' " ModuleB.hs" " haskell" contentB
402
+ _ <- waitForDiagnostics
403
+ [CACodeAction action@ CodeAction { _title = actionTitle }]
404
+ <- getCodeActions docB (Range (Position 2 0 ) (Position 2 5 ))
405
+ liftIO $ " Remove import" @=? actionTitle
406
+ executeCodeAction action
407
+ contentAfterAction <- documentContents docB
408
+ let expectedContentAfterAction = T. unlines
409
+ [ " {-# OPTIONS_GHC -Wunused-imports #-}"
410
+ , " module ModuleB where"
411
+ , " stuffB = 123"
412
+ ]
413
+ liftIO $ expectedContentAfterAction @=? contentAfterAction
414
+ ]
415
+
363
416
----------------------------------------------------------------------
364
417
-- Utils
365
418
0 commit comments