pantry-0.9.0: test/Pantry/GlobalHintsSpec.hs
{-# LANGUAGE NoImplicitPrelude #-}
{-# LANGUAGE FlexibleContexts #-}
{-# LANGUAGE OverloadedStrings #-}
module Pantry.GlobalHintsSpec
( spec
) where
import Distribution.Types.PackageName ( mkPackageName )
import Distribution.Version ( mkVersion )
import Pantry ( WantedCompiler (..), loadGlobalHints, runPantryAppClean )
import Pantry.Types ( getGlobalHintsFile )
import Path ( toFilePath )
import RIO
import qualified RIO.Map as Map
import Test.Hspec
spec :: Spec
spec = do
let it' name inner = it name $ example $ runPantryAppClean $ do
file <- getGlobalHintsFile
writeFileBinary (toFilePath file) "this should be ignored"
inner
it' "unknown compiler" $ do
mmap <- loadGlobalHints $ WCGhc (mkVersion [0, 0, 0, 0, 0, 0, 0])
liftIO $ mmap `shouldBe` Nothing
it' "known compiler" $ do
mmap <- loadGlobalHints $ WCGhc (mkVersion [8, 4, 3])
case mmap of
Nothing -> error "not found"
Just m -> liftIO $ do
Map.lookup (mkPackageName "ghc") m `shouldBe` Just (mkVersion [8, 4, 3])
Map.lookup (mkPackageName "base") m `shouldBe` Just (mkVersion [4, 11, 1, 0])
Map.lookup (mkPackageName "bytestring") m `shouldBe` Just (mkVersion [0, 10, 8, 2])
Map.lookup (mkPackageName "acme-missiles") m `shouldBe` Nothing
it' "older known compiler" $ do
mmap <- loadGlobalHints $ WCGhc (mkVersion [7, 8, 4])
case mmap of
Nothing -> error "not found"
Just m -> liftIO $ do
Map.lookup (mkPackageName "ghc") m `shouldBe` Just (mkVersion [7, 8, 4])
Map.lookup (mkPackageName "base") m `shouldBe` Just (mkVersion [4, 7, 0, 2])
Map.lookup (mkPackageName "Cabal") m `shouldBe` Just (mkVersion [1, 18, 1, 5])
Map.lookup (mkPackageName "acme-missiles") m `shouldBe` Nothing