packages feed

distribution-nixpkgs-1: test/Main.hs

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