pantry-0.5.7: test/Pantry/GlobalHintsSpec.hs
{-# LANGUAGE FlexibleContexts #-}
{-# LANGUAGE NoImplicitPrelude #-}
{-# LANGUAGE OverloadedStrings #-}
module Pantry.GlobalHintsSpec (spec) where
import Distribution.Types.PackageName (mkPackageName)
import Distribution.Version (mkVersion)
import RIO
import Pantry (loadGlobalHints, WantedCompiler (..), runPantryAppClean)
import Pantry.Internal
import Test.Hspec
import qualified RIO.Map as Map
import Path (toFilePath)
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