{-# LANGUAGE OverloadedStrings #-}
module Main(main) where
import Control.Monad.IO.Class
import Data.Aeson
import qualified Data.ByteString.Lazy as BS
import qualified Data.Text.Encoding as T
import qualified Data.Text.IO as T
import Language.LSP.Test
import Language.LSP.Types
import Test.Hls
import qualified Ide.Plugin.Fourmolu as Fourmolu
import System.FilePath
main :: IO ()
main = defaultTestRunner tests
plugin :: PluginDescriptor IdeState
plugin = Fourmolu.descriptor "fourmolu"
testDataDir :: FilePath
testDataDir = "test/testdata/"
tests :: TestTree
tests = testGroup "fourmolu"
[ goldenGitDiff "formats correctly" (testDataDir </> "Format.fourmolu.formatted.hs") $
runSessionWithServerFormatter plugin "fourmolu" testDataDir $ do
doc <- openDoc "Format.hs" "haskell"
formatDoc doc (FormattingOptions 4 True Nothing Nothing Nothing)
BS.fromStrict . T.encodeUtf8 <$> documentContents doc
, goldenGitDiff "formats imports correctly" (testDataDir </> "Format2.fourmolu.formatted.hs") $
runSessionWithServerFormatter plugin "fourmolu" testDataDir $ do
doc <- openDoc "Format2.hs" "haskell"
formatDoc doc (FormattingOptions 4 True Nothing Nothing Nothing)
BS.fromStrict . T.encodeUtf8 <$> documentContents doc
]