staversion-0.1.3.0: test/Staversion/Internal/CabalSpec.hs
module Staversion.Internal.CabalSpec (main,spec) where
import System.FilePath ((</>), (<.>))
import Test.Hspec
import Staversion.Internal.Cabal (loadCabalFile, BuildDepends(..), Target(..))
main :: IO ()
main = hspec spec
shouldBeParsedTo :: FilePath -> [BuildDepends] -> IO ()
shouldBeParsedTo cabal_file expectation = do
got_deps <- either error return =<< loadCabalFile ("test" </> "data" </> cabal_file)
got_deps `shouldBe` expectation
spec :: Spec
spec = describe "loadCabalFile" $ do
it "should load library, executable and test-suite targets" $ do
"doctest.cabal_test" `shouldBeParsedTo`
[ BuildDepends { depsTarget = TargetLibrary,
depsPackages = [ "base",
"base-compat",
"ghc",
"syb",
"deepseq",
"directory",
"filepath",
"process",
"ghc-paths",
"transformers"
]
},
BuildDepends { depsTarget = TargetExecutable "doctest",
depsPackages = [ "base",
"doctest"
]
},
BuildDepends { depsTarget = TargetTestSuite "spec",
depsPackages = [ "base",
"ghc",
"syb",
"deepseq",
"directory",
"filepath",
"process",
"ghc-paths",
"transformers",
"base-compat",
"HUnit",
"hspec",
"QuickCheck",
"stringbuilder",
"silently",
"setenv",
"with-location"
]
},
BuildDepends { depsTarget = TargetTestSuite "doctests",
depsPackages = [ "base", "doctest"
]
}
]
it "should merge conditional build-depends" $ do
"conduit.cabal_test" `shouldBeParsedTo`
[ BuildDepends { depsTarget = TargetLibrary,
depsPackages = [ "base",
"resourcet",
"exceptions",
"lifted-base",
"transformers-base",
"transformers",
"mtl",
"mmorph",
"monad-control",
"void"
]
},
BuildDepends { depsTarget = TargetTestSuite "test",
depsPackages = [ "conduit",
"base",
"hspec",
"QuickCheck",
"transformers",
"mtl",
"resourcet",
"containers",
"exceptions",
"safe",
"void"
]
},
BuildDepends { depsTarget = TargetBenchmark "optimize-201408",
depsPackages = [ "base",
"conduit",
"vector",
"deepseq",
"containers",
"transformers",
"hspec",
"mwc-random",
"criterion",
"kan-extensions"
]
},
BuildDepends { depsTarget = TargetBenchmark "unfused",
depsPackages = [ "base",
"conduit",
"criterion",
"transformers"
]
}
]