-
-
Notifications
You must be signed in to change notification settings - Fork 389
/
Copy pathMain.hs
42 lines (36 loc) · 1.59 KB
/
Main.hs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
{-# LANGUAGE OverloadedStrings #-}
module Main
( main
) where
import Data.Aeson
import qualified Data.Aeson.KeyMap as KM
import Data.Functor
import Ide.Plugin.Config
import qualified Ide.Plugin.Fourmolu as Fourmolu
import Language.LSP.Protocol.Types
import Language.LSP.Test
import System.FilePath
import Test.Hls
main :: IO ()
main = defaultTestRunner tests
fourmoluPlugin :: PluginTestDescriptor Fourmolu.LogEvent
fourmoluPlugin = mkPluginTestDescriptor Fourmolu.descriptor "fourmolu"
tests :: TestTree
tests =
testGroup "fourmolu" $
[False, True] <&> \cli ->
testGroup
(if cli then "cli" else "lib")
[ goldenWithFourmolu cli "formats correctly" "Fourmolu" "formatted" $ \doc -> do
formatDoc doc (FormattingOptions 4 True Nothing Nothing Nothing)
, goldenWithFourmolu cli "formats imports correctly" "Fourmolu2" "formatted" $ \doc -> do
formatDoc doc (FormattingOptions 4 True Nothing Nothing Nothing)
, goldenWithFourmolu cli "uses correct operator fixities" "Fourmolu3" "formatted" $ \doc -> do
formatDoc doc (FormattingOptions 4 True Nothing Nothing Nothing)
]
goldenWithFourmolu :: Bool -> TestName -> FilePath -> FilePath -> (TextDocumentIdentifier -> Session ()) -> TestTree
goldenWithFourmolu cli title path desc = goldenWithHaskellDocFormatter def fourmoluPlugin "fourmolu" conf title testDataDir path desc "hs"
where
conf = def{plcConfig = KM.fromList ["external" .= cli]}
testDataDir :: FilePath
testDataDir = "test" </> "testdata"