module Main ( main ) where import Control.DeepSeq import Control.Exception import Control.Lens import Data.Maybe import Distribution.Nixpkgs.License import Distribution.Nixpkgs.Meta import System.Environment import Test.DocTest import Test.Hspec main :: IO () main = do distDir <- fromMaybe "dist" `fmap` lookupEnv "HASKELL_DIST_DIR" let cabalMacrosHeader = distDir ++ "/build/autogen/cabal_macros.h" doctest [ "-isrc", "-optP-include", "-optP"++cabalMacrosHeader, "src" ] hspec $ describe "DeepSeq instances work properly for" $ do it "License" $ mapM_ hitsBottom [Known undefined, Unknown (Just undefined)] it "Meta" $ mapM_ hitsBottom [ nullMeta & homepage .~ undefined , nullMeta & description .~ undefined , nullMeta & license .~ undefined , nullMeta & platforms .~ undefined , nullMeta & maintainers .~ undefined , nullMeta & broken .~ undefined ] hitsBottom :: NFData a => a -> Expectation hitsBottom x = evaluate (rnf x) `shouldThrow` anyErrorCall