2
2
3
3
module Main (main ) where
4
4
5
+ import Data.Aeson
6
+ import qualified Data.Map as M
7
+ import Ide.Plugin.Config
5
8
import qualified Ide.Plugin.Rename as Rename
6
9
import System.FilePath
7
10
import Test.Hls
@@ -14,54 +17,51 @@ renamePlugin = Rename.descriptor "rename"
14
17
15
18
tests :: TestTree
16
19
tests = testGroup " Rename"
17
- [ goldenWithRename " Data constructor" " DataConstructor" $ \ doc -> do
20
+ [ goldenWithRename " Data constructor" " DataConstructor" $ \ doc ->
18
21
rename doc (Position 0 15 ) " Op"
19
- , ignoreTestBecause " Renaming across modules unsupported" $
20
- goldenWithRename " Exported function" " ExportedFunction" $ \ doc -> do
22
+ , goldenWithRename " Exported function" " ExportedFunction" $ \ doc ->
21
23
rename doc (Position 2 1 ) " quux"
22
- , goldenWithRename " Function argument" " FunctionArgument" $ \ doc -> do
24
+ , goldenWithRename " Function argument" " FunctionArgument" $ \ doc ->
23
25
rename doc (Position 3 4 ) " y"
24
- , goldenWithRename " Function name" " FunctionName" $ \ doc -> do
26
+ , goldenWithRename " Function name" " FunctionName" $ \ doc ->
25
27
rename doc (Position 3 1 ) " baz"
26
- , goldenWithRename " GADT" " Gadt" $ \ doc -> do
28
+ , goldenWithRename " GADT" " Gadt" $ \ doc ->
27
29
rename doc (Position 6 37 ) " Expr"
28
- , ignoreTestBecause " Renaming across modules unsupported" $
29
- goldenWithRename " Hidden function" " HiddenFunction" $ \ doc -> do
30
+ , goldenWithRename " Hidden function" " HiddenFunction" $ \ doc ->
30
31
rename doc (Position 0 32 ) " quux"
31
- , ignoreTestBecause " Renaming across modules unsupported" $
32
- goldenWithRename " Imported function" " ImportedFunction" $ \ doc -> do
32
+ , goldenWithRename " Imported function" " ImportedFunction" $ \ doc ->
33
33
rename doc (Position 3 8 ) " baz"
34
- , ignoreTestBecause " Renaming across modules unsupported" $
35
- goldenWithRename " Import hiding" " ImportHiding" $ \ doc -> do
34
+ , goldenWithRename " Import hiding" " ImportHiding" $ \ doc ->
36
35
rename doc (Position 0 22 ) " hiddenFoo"
37
- , goldenWithRename " Let expression" " LetExpression" $ \ doc -> do
36
+ , goldenWithRename " Let expression" " LetExpression" $ \ doc ->
38
37
rename doc (Position 5 11 ) " foobar"
39
- , ignoreTestBecause " Renaming across modules unsupported" $
40
- goldenWithRename " Qualified as" " QualifiedAs" $ \ doc -> do
38
+ , goldenWithRename " Qualified as" " QualifiedAs" $ \ doc ->
41
39
rename doc (Position 3 10 ) " baz"
42
- , ignoreTestBecause " Renaming across modules unsupported" $
43
- goldenWithRename " Qualified shadowing" " QualifiedShadowing" $ \ doc -> do
40
+ , goldenWithRename " Qualified shadowing" " QualifiedShadowing" $ \ doc ->
44
41
rename doc (Position 3 12 ) " foobar"
45
- , ignoreTestBecause " Renaming across modules unsupported" $
46
- goldenWithRename " Qualified function" " QualifiedFunction" $ \ doc -> do
42
+ , goldenWithRename " Qualified function" " QualifiedFunction" $ \ doc ->
47
43
rename doc (Position 3 12 ) " baz"
48
- , goldenWithRename " Realigns do block indentation" " RealignDo" $ \ doc -> do
44
+ , goldenWithRename " Realigns do block indentation" " RealignDo" $ \ doc ->
49
45
rename doc (Position 0 2 ) " fooBarQuux"
50
- , goldenWithRename " Record field" " RecordField" $ \ doc -> do
46
+ , goldenWithRename " Record field" " RecordField" $ \ doc ->
51
47
rename doc (Position 6 9 ) " number"
52
- , goldenWithRename " Shadowed name" " ShadowedName" $ \ doc -> do
48
+ , goldenWithRename " Shadowed name" " ShadowedName" $ \ doc ->
53
49
rename doc (Position 1 1 ) " baz"
54
- , goldenWithRename " Typeclass" " Typeclass" $ \ doc -> do
50
+ , goldenWithRename " Typeclass" " Typeclass" $ \ doc ->
55
51
rename doc (Position 8 15 ) " Equal"
56
- , goldenWithRename " Type constructor" " TypeConstructor" $ \ doc -> do
52
+ , goldenWithRename " Type constructor" " TypeConstructor" $ \ doc ->
57
53
rename doc (Position 2 17 ) " BinaryTree"
58
- , goldenWithRename " Type variable" " TypeVariable" $ \ doc -> do
54
+ , goldenWithRename " Type variable" " TypeVariable" $ \ doc ->
59
55
rename doc (Position 0 13 ) " b"
60
56
]
61
57
62
- goldenWithRename :: TestName -> FilePath -> (TextDocumentIdentifier -> Session () ) -> TestTree
63
- goldenWithRename title path =
64
- goldenWithHaskellDoc renamePlugin title testDataDir path " expected" " hs"
58
+ goldenWithRename :: TestName -> FilePath -> (TextDocumentIdentifier -> Session () ) -> TestTree
59
+ goldenWithRename title path act =
60
+ goldenWithHaskellDoc renamePlugin title testDataDir path " expected" " hs" $ \ doc -> do
61
+ sendConfigurationChanged $ toJSON $
62
+ def { plugins = M. fromList [(" rename" , def { plcConfig = " crossModule" .= True })] }
63
+ act doc
64
+
65
65
66
66
testDataDir :: FilePath
67
67
testDataDir = " test" </> " testdata"
0 commit comments