hix-0.7.0: test/Hix/Test/CabalTest.hs
module Hix.Test.CabalTest where
import Control.Monad.Trans.Except (runExceptT)
import qualified Data.ByteString as ByteString
import Distribution.Package (Dependency)
import qualified Distribution.PackageDescription
import Hedgehog ((===))
import Language.Haskell.Extension (
Extension (DisableExtension, EnableExtension),
KnownExtension (AllowAmbiguousTypes, ApplicativeDo),
)
import Path (relfile, toFilePath, (</>))
import Path.IO (withSystemTempDir)
import Hix.Cabal (parseCabal)
import qualified Hix.Data.Dep as Dep
import Hix.Test.CabalFile (testCabal)
import Hix.Test.Utils (UnitTest)
target :: [Extension]
target =
[EnableExtension AllowAmbiguousTypes, DisableExtension ApplicativeDo]
deps :: [Dependency]
deps =
Dep.toCabal <$> ["Cabal", "base >=4.12 && <5", "semigroups >=1"]
test_cabal :: UnitTest
test_cabal = do
Right pkg <- liftIO $ withSystemTempDir "hix-unit" \ tmp -> do
let cabalFile = tmp </> [relfile|test.cabal|]
ByteString.writeFile (toFilePath cabalFile) testCabal
runExceptT (parseCabal cabalFile)
let lib = fold pkg.condLibrary
deps === lib.condTreeData.libBuildInfo.targetBuildDepends
deps === lib.condTreeConstraints
target === lib.condTreeData.libBuildInfo.defaultExtensions