Cabal-2.2.0.0: tests/UnitTests/Distribution/Types/GenericPackageDescription.hs
{-# OPTIONS_GHC -fno-warn-deprecations #-} -- for importing "Distribution.Compat.Prelude.Internal"
module UnitTests.Distribution.Types.GenericPackageDescription where
import Prelude ()
import Distribution.Compat.Prelude.Internal
import Distribution.Types.GenericPackageDescription
import Test.Tasty
import Test.Tasty.HUnit
import qualified Control.Exception as C
tests :: [TestTree]
tests =
[ testCase "GenericPackageDescription deepseq" gpdDeepseq
]
gpdFields :: [(String, GenericPackageDescription -> GenericPackageDescription)]
gpdFields =
[ ("packageDescription", \gpd -> gpd { packageDescription = undefined })
, ("genPackageFlags", \gpd -> gpd { genPackageFlags = undefined })
, ("condLibrary", \gpd -> gpd { condLibrary = undefined })
, ("condSubLibraries", \gpd -> gpd { condSubLibraries = undefined })
, ("condForeignLibs", \gpd -> gpd { condForeignLibs = undefined })
, ("condExecutables", \gpd -> gpd { condExecutables = undefined })
, ("condTestSuites", \gpd -> gpd { condTestSuites = undefined })
, ("condBenchmarks", \gpd -> gpd { condBenchmarks = undefined })
]
gpdDeepseq :: Assertion
gpdDeepseq = sequence_
[ throwsUndefined msg (f emptyGenericPackageDescription) | (msg, f) <- gpdFields ]
throwsUndefined :: NFData a => String -> a -> Assertion
throwsUndefined field a =
C.catch (C.evaluate (rnf a) >> assertFailure ("Deepseq failed to evaluate " ++ show field))
(\(C.ErrorCall _) -> return ())