1
1
{-# LANGUAGE OverloadedStrings #-}
2
2
{-# OPTIONS_GHC -Wno-orphans #-}
3
3
{-# LANGUAGE NamedFieldPuns #-}
4
- {-# LANGUAGE ViewPatterns #-}
5
4
module Main
6
5
( main
7
6
) where
8
7
9
8
import Control.Lens ((^.) )
9
+ import Data.Either (isRight )
10
10
import Data.Function
11
11
import qualified Data.Text as Text
12
12
import Development.IDE.Types.Logger
@@ -15,14 +15,13 @@ import qualified Ide.Plugin.Cabal.Parse as Lib
15
15
import qualified Language.LSP.Types.Lens as J
16
16
import System.FilePath
17
17
import Test.Hls
18
- import Data.Either (isRight )
19
18
20
19
cabalPlugin :: Recorder (WithPriority Log ) -> PluginDescriptor IdeState
21
20
cabalPlugin recorder = descriptor recorder " cabal"
22
21
23
22
main :: IO ()
24
23
main = do
25
- recorder <- initialiseRecorder True
24
+ recorder <- initialiseRecorder False
26
25
defaultTestRunner $
27
26
testGroup " Cabal Plugin Tests"
28
27
[ unitTests
@@ -68,22 +67,42 @@ pluginTests recorder = testGroup "Plugin Tests"
68
67
[ runCabalTestCaseSession " Publishes Diagnostics on Error" recorder " " $ do
69
68
doc <- openDoc " invalid.cabal" " cabal"
70
69
diags <- waitForDiagnosticsFromSource doc " parsing"
71
- reduceDiag <- liftIO $ inspectDiagnostic diags [" Unknown SPDX license identifier: 'BSD3'" ]
70
+ unknownLicenseDiag <- liftIO $ inspectDiagnostic diags [" Unknown SPDX license identifier: 'BSD3'" ]
72
71
liftIO $ do
73
72
length diags @?= 1
74
- reduceDiag ^. J. range @?= Range (Position 3 24 ) (Position 4 0 )
75
- reduceDiag ^. J. severity @?= Just DsError
73
+ unknownLicenseDiag ^. J. range @?= Range (Position 3 24 ) (Position 4 0 )
74
+ unknownLicenseDiag ^. J. severity @?= Just DsError
76
75
, runCabalTestCaseSession " Clears diagnostics" recorder " " $ do
77
76
doc <- openDoc " invalid.cabal" " cabal"
78
77
diags <- waitForDiagnosticsFrom doc
79
- reduceDiag <- liftIO $ inspectDiagnostic diags [" Unknown SPDX license identifier: 'BSD3'" ]
78
+ unknownLicenseDiag <- liftIO $ inspectDiagnostic diags [" Unknown SPDX license identifier: 'BSD3'" ]
80
79
liftIO $ do
81
80
length diags @?= 1
82
- reduceDiag ^. J. range @?= Range (Position 3 24 ) (Position 4 0 )
83
- reduceDiag ^. J. severity @?= Just DsError
81
+ unknownLicenseDiag ^. J. range @?= Range (Position 3 24 ) (Position 4 0 )
82
+ unknownLicenseDiag ^. J. severity @?= Just DsError
84
83
_ <- applyEdit doc $ TextEdit (Range (Position 3 20 ) (Position 4 0 )) " BSD-3-Clause\n "
85
84
newDiags <- waitForDiagnosticsFrom doc
86
85
liftIO $ newDiags @?= []
86
+ , runCabalTestCaseSession " No Diagnostics in .hs files from valid .cabal file" recorder " simple-cabal" $ do
87
+ hsDoc <- openDoc " A.hs" " haskell"
88
+ expectNoMoreDiagnostics 1 hsDoc " typechecking"
89
+ cabalDoc <- openDoc " simple-cabal.cabal" " cabal"
90
+ expectNoMoreDiagnostics 1 cabalDoc " parsing"
91
+ , runCabalTestCaseSession " Diagnostics in .hs files from invalid .cabal file" recorder " simple-cabal" $ do
92
+ hsDoc <- openDoc " A.hs" " haskell"
93
+ expectNoMoreDiagnostics 1 hsDoc " typechecking"
94
+ cabalDoc <- openDoc " simple-cabal.cabal" " cabal"
95
+ expectNoMoreDiagnostics 1 cabalDoc " parsing"
96
+ let theRange = Range (Position 3 20 ) (Position 3 23 )
97
+ -- Invalid license
98
+ changeDoc cabalDoc [TextDocumentContentChangeEvent (Just theRange) Nothing " MIT3" ]
99
+ cabalDiags <- waitForDiagnosticsFrom cabalDoc
100
+ unknownLicenseDiag <- liftIO $ inspectDiagnostic cabalDiags [" Unknown SPDX license identifier: 'MIT3'" ]
101
+ expectNoMoreDiagnostics 1 hsDoc " typechecking"
102
+ liftIO $ do
103
+ length cabalDiags @?= 1
104
+ unknownLicenseDiag ^. J. range @?= Range (Position 3 24 ) (Position 4 0 )
105
+ unknownLicenseDiag ^. J. severity @?= Just DsError
87
106
]
88
107
, testGroup " Code Actions"
89
108
[ runCabalTestCaseSession " BSD-3" recorder " " $ do
0 commit comments