cabal2nix-2.8.2: test/Main.hs
module Main ( main ) where
import Distribution.Nixpkgs.Haskell.FromCabal
import Distribution.Nixpkgs.Haskell.Derivation
import Distribution.Nixpkgs.Fetch
import Control.Lens
import Distribution.Compiler
import Distribution.PackageDescription
import Distribution.PackageDescription.Parse
import Distribution.System
import Distribution.Verbosity
import Distribution.Version
import Language.Nix
import System.FilePath
import Test.Tasty
import Test.Tasty.Golden
import Text.PrettyPrint.HughesPJClass
main :: IO ()
main = do
testCases <- findByExtension [".cabal"] "test/golden-test-cases"
defaultMain $ testGroup "regression-tests" (map regressionTest testCases)
regressionTest :: String -> TestTree
regressionTest cabalFile = do
let nixFile = cabalFile `replaceExtension` "nix"
goldenFile = nixFile `addExtension` "golden"
cabal2nix :: GenericPackageDescription -> Derivation
cabal2nix gpd = fromGenericPackageDescription
(const True)
(\i -> Just (binding # (i, path # [i])))
(Platform X86_64 Linux)
(unknownCompilerInfo (CompilerId GHC (mkVersion [8,2])) NoAbiTag)
[]
[]
gpd
& src .~ DerivationSource
{ derivKind = "url"
, derivUrl = "http://example.org/"
, derivRevision = ""
, derivHash = "abc"
}
goldenVsFileDiff
nixFile
(\ref new -> ["diff", "-u", ref, new])
goldenFile
nixFile
(readGenericPackageDescription silent cabalFile >>= writeFile nixFile . prettyShow . cabal2nix)