packages feed

stylish-cabal-0.3.0.0: tests/strictness/Main.hs

{-# OPTIONS_GHC -fno-warn-missing-signatures #-}
{-# Language FlexibleContexts #-}

import Control.DeepSeq
import Distribution.PackageDescription
import qualified Distribution.PackageDescription as C
import Distribution.PackageDescription.Parse
import Instances ()
import Prelude.Compat
import Pretty
import StylishCabal
import Test.Hspec hiding (shouldBe)
import Test.Hspec.Expectations.Pretty
import Test.StrictCheck.Demands
import Test.StrictCheck.Instances ()
import Test.StrictCheck.Observe

whnfContext = flip seq ()

process gpd =
    deepseq
        ( C.library pd
        , C.subLibraries pd
        , C.executables pd
        , C.buildDepends pd
        , C.foreignLibs pd
        , C.testSuites pd
        , C.benchmarks pd)
        (length $ show $ pretty gpd)
  where
    pd = packageDescription gpd

main :: IO ()
main =
    hspec $ do
        ParseOk _ gpd <-
            runIO $
            parseGenericPackageDescription <$> readFile "tests/cabal-files/example"
        describe "pretty" $
            it "should fully evaluate the package description" $ do
                let expected = nf gpd
                    (_, actual) = observe1 whnfContext process gpd
                pprint actual `shouldBe` pprint expected