fourmolu-0.15.0.0: tests/Ormolu/ConfigSpec.hs
{-# LANGUAGE OverloadedStrings #-}
-- | Tests for Fourmolu file configuration.
module Ormolu.ConfigSpec (spec) where
import Data.ByteString.Char8 qualified as Char8
import Data.List.NonEmpty qualified as NonEmpty
import Data.Map qualified as Map
import Data.Yaml qualified as Yaml
import Ormolu.Config (FourmoluConfig (..), poIndentation, resolvePrinterOpts)
import Ormolu.Fixity (ModuleReexports (..))
import Test.Hspec
spec :: Spec
spec = do
describe "FourmoluConfig" $ do
it "parses multiple reexports from same module" $ do
config <-
Yaml.decodeThrow . Char8.pack . unlines $
[ "reexports:",
"- module Foo exports Bar1",
"- module Foo exports Bar2"
]
let expected =
Map.fromList
[ ("Foo", NonEmpty.fromList [(Nothing, "Bar2"), (Nothing, "Bar1")])
]
cfgFileReexports config `shouldBe` ModuleReexports expected
it "applies configurations in correct order" $ do
let opts1 = mempty {poIndentation = Just 2}
opts2 = mempty {poIndentation = Just 4}
configs = [opts1, opts2]
poIndentation (resolvePrinterOpts configs) `shouldBe` 4