Skip to content

Commit e770424

Browse files
author
Santiago Weight
committed
refact: extract Test.AddArgument
1 parent f797887 commit e770424

File tree

3 files changed

+74
-41
lines changed

3 files changed

+74
-41
lines changed

plugins/hls-refactor-plugin/hls-refactor-plugin.cabal

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -97,6 +97,7 @@ test-suite tests
9797
default-language: Haskell2010
9898
hs-source-dirs: test
9999
main-is: Main.hs
100+
other-modules: Test.AddArgument
100101
ghc-options: -O0 -threaded -rtsopts -with-rtsopts=-N -Wunused-imports
101102
build-depends:
102103
, base

plugins/hls-refactor-plugin/test/Main.hs

Lines changed: 3 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,6 @@ import Language.LSP.Types hiding
3939
SemanticTokenRelative (length),
4040
SemanticTokensEdit (_start),
4141
mkRange)
42-
import qualified Language.LSP.Types as LSP
4342
import Language.LSP.Types.Capabilities
4443
import qualified Language.LSP.Types.Lens as L
4544
import System.Directory
@@ -54,13 +53,13 @@ import Test.Tasty.HUnit
5453
import Text.Regex.TDFA ((=~))
5554

5655

57-
import Development.IDE.Plugin.CodeAction (bindingsPluginDescriptor,
58-
matchRegExMultipleImports)
56+
import Development.IDE.Plugin.CodeAction (matchRegExMultipleImports)
5957
import Test.Hls
6058

6159
import Control.Applicative (liftA2)
6260
import qualified Development.IDE.Plugin.CodeAction as Refactor
6361
import qualified Development.IDE.Plugin.HLS.GhcIde as GhcIde
62+
import qualified Test.AddArgument
6463

6564
main :: IO ()
6665
main = defaultTestRunner tests
@@ -322,7 +321,7 @@ codeActionTests = testGroup "code actions"
322321
, addImplicitParamsConstraintTests
323322
, removeExportTests
324323
#if MIN_VERSION_ghc(9,2,1)
325-
, addFunctionArgumentTests
324+
, Test.AddArgument.tests
326325
#endif
327326
]
328327

@@ -2166,45 +2165,8 @@ insertNewDefinitionTests = testGroup "insert new definition actions"
21662165
]
21672166

21682167
#if MIN_VERSION_ghc(9,2,1)
2169-
addFunctionArgumentTests :: TestTree
2170-
addFunctionArgumentTests =
2171-
testGroup
2172-
"add argument"
2173-
[ mkGoldenAddArgTest "Hole" (R 0 0 0 50),
2174-
mkGoldenAddArgTest "NoTypeSuggestion" (R 0 0 0 50),
2175-
mkGoldenAddArgTest "MultipleDeclAlts" (R 0 0 0 50),
2176-
mkGoldenAddArgTest "AddArgWithSig" (R 1 0 1 50),
2177-
mkGoldenAddArgTest "AddArgWithSigAndDocs" (R 8 0 8 50),
2178-
mkGoldenAddArgTest "AddArgFromLet" (R 2 0 2 50),
2179-
mkGoldenAddArgTest "AddArgFromWhere" (R 3 0 3 50),
2180-
mkGoldenAddArgTest "AddArgFromWhereComments" (R 3 0 3 50),
2181-
mkGoldenAddArgTest "AddArgWithTypeSynSig" (R 2 0 2 50),
2182-
mkGoldenAddArgTest "AddArgWithTypeSynSigContravariant" (R 2 0 2 50),
2183-
mkGoldenAddArgTest "AddArgWithLambda" (R 1 0 1 50),
2184-
mkGoldenAddArgTest "MultiSigFirst" (R 2 0 2 50),
2185-
mkGoldenAddArgTest "MultiSigLast" (R 2 0 2 50),
2186-
mkGoldenAddArgTest "MultiSigMiddle" (R 2 0 2 50)
2187-
]
21882168
#endif
21892169

2190-
mkGoldenAddArgTest :: FilePath -> Range -> TestTree
2191-
mkGoldenAddArgTest testFileName range = do
2192-
let action docB = do
2193-
_ <- waitForDiagnostics
2194-
InR action@CodeAction {_title = actionTitle} : _ <-
2195-
filter (\(InR CodeAction {_title = x}) -> "Add" `isPrefixOf` T.unpack x)
2196-
<$> getCodeActions docB range
2197-
liftIO $ actionTitle @?= "Add argument ‘new_def’ to function"
2198-
executeCodeAction action
2199-
goldenWithHaskellDoc
2200-
(Refactor.bindingsPluginDescriptor mempty "ghcide-code-actions-bindings")
2201-
(testFileName <> " (golden)")
2202-
"test/data/golden/add-arg"
2203-
testFileName
2204-
"expected"
2205-
"hs"
2206-
action
2207-
22082170
deleteUnusedDefinitionTests :: TestTree
22092171
deleteUnusedDefinitionTests = testGroup "delete unused definition action"
22102172
[ testSession "delete unused top level binding" $
Lines changed: 70 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,70 @@
1+
{-# LANGUAGE AllowAmbiguousTypes #-}
2+
{-# LANGUAGE CPP #-}
3+
{-# LANGUAGE DataKinds #-}
4+
{-# LANGUAGE DuplicateRecordFields #-}
5+
{-# LANGUAGE GADTs #-}
6+
{-# LANGUAGE OverloadedStrings #-}
7+
{-# LANGUAGE PolyKinds #-}
8+
9+
module Test.AddArgument (tests) where
10+
11+
import Data.List.Extra
12+
import qualified Data.Text as T
13+
import Development.IDE.Types.Location
14+
import Language.LSP.Test
15+
import Language.LSP.Types hiding
16+
(SemanticTokenAbsolute (length, line),
17+
SemanticTokenRelative (length),
18+
SemanticTokensEdit (_start),
19+
mkRange)
20+
import Test.Tasty
21+
import Test.Tasty.HUnit
22+
23+
24+
import Test.Hls
25+
26+
import qualified Development.IDE.Plugin.CodeAction as Refactor
27+
28+
tests :: TestTree
29+
tests =
30+
testGroup
31+
"add argument"
32+
#if !MIN_VERSION_ghc(9,2,1)
33+
[]
34+
#else
35+
[ mkGoldenAddArgTest "Hole" (r 0 0 0 50),
36+
mkGoldenAddArgTest "NoTypeSuggestion" (r 0 0 0 50),
37+
mkGoldenAddArgTest "MultipleDeclAlts" (r 0 0 0 50),
38+
mkGoldenAddArgTest "AddArgWithSig" (r 1 0 1 50),
39+
mkGoldenAddArgTest "AddArgWithSigAndDocs" (r 8 0 8 50),
40+
mkGoldenAddArgTest "AddArgFromLet" (r 2 0 2 50),
41+
mkGoldenAddArgTest "AddArgFromWhere" (r 3 0 3 50),
42+
mkGoldenAddArgTest "AddArgFromWhereComments" (r 3 0 3 50),
43+
mkGoldenAddArgTest "AddArgWithTypeSynSig" (r 2 0 2 50),
44+
mkGoldenAddArgTest "AddArgWithTypeSynSigContravariant" (r 2 0 2 50),
45+
mkGoldenAddArgTest "AddArgWithLambda" (r 1 0 1 50),
46+
mkGoldenAddArgTest "MultiSigFirst" (r 2 0 2 50),
47+
mkGoldenAddArgTest "MultiSigLast" (r 2 0 2 50),
48+
mkGoldenAddArgTest "MultiSigMiddle" (r 2 0 2 50)
49+
]
50+
where
51+
r x y x' y' = Range (Position x y) (Position x' y')
52+
53+
mkGoldenAddArgTest :: FilePath -> Range -> TestTree
54+
mkGoldenAddArgTest testFileName range = do
55+
let action docB = do
56+
_ <- waitForDiagnostics
57+
InR action@CodeAction {_title = actionTitle} : _ <-
58+
filter (\(InR CodeAction {_title = x}) -> "Add" `isPrefixOf` T.unpack x)
59+
<$> getCodeActions docB range
60+
liftIO $ actionTitle @?= "Add argument ‘new_def’ to function"
61+
executeCodeAction action
62+
goldenWithHaskellDoc
63+
(Refactor.bindingsPluginDescriptor mempty "ghcide-code-actions-bindings")
64+
(testFileName <> " (golden)")
65+
"test/data/golden/add-arg"
66+
testFileName
67+
"expected"
68+
"hs"
69+
action
70+
#endif

0 commit comments

Comments
 (0)