1{-# LANGUAGE FlexibleContexts #-} 2{-# LANGUAGE NoImplicitPrelude #-} 3{-# LANGUAGE OverloadedStrings #-} 4module Pantry.GlobalHintsSpec (spec) where 5 6import Distribution.Types.PackageName (mkPackageName) 7import Distribution.Version (mkVersion) 8import RIO 9import Pantry (loadGlobalHints, WantedCompiler (..), runPantryAppClean) 10import Pantry.Internal 11import Test.Hspec 12import qualified RIO.Map as Map 13import Path (toFilePath) 14 15spec :: Spec 16spec = do 17 let it' name inner = it name $ example $ runPantryAppClean $ do 18 file <- getGlobalHintsFile 19 writeFileBinary (toFilePath file) "this should be ignored" 20 inner 21 it' "unknown compiler" $ do 22 mmap <- loadGlobalHints $ WCGhc (mkVersion [0, 0, 0, 0, 0, 0, 0]) 23 liftIO $ mmap `shouldBe` Nothing 24 it' "known compiler" $ do 25 mmap <- loadGlobalHints $ WCGhc (mkVersion [8, 4, 3]) 26 case mmap of 27 Nothing -> error "not found" 28 Just m -> liftIO $ do 29 Map.lookup (mkPackageName "ghc") m `shouldBe` Just (mkVersion [8, 4, 3]) 30 Map.lookup (mkPackageName "base") m `shouldBe` Just (mkVersion [4, 11, 1, 0]) 31 Map.lookup (mkPackageName "bytestring") m `shouldBe` Just (mkVersion [0, 10, 8, 2]) 32 Map.lookup (mkPackageName "acme-missiles") m `shouldBe` Nothing 33 it' "older known compiler" $ do 34 mmap <- loadGlobalHints $ WCGhc (mkVersion [7, 8, 4]) 35 case mmap of 36 Nothing -> error "not found" 37 Just m -> liftIO $ do 38 Map.lookup (mkPackageName "ghc") m `shouldBe` Just (mkVersion [7, 8, 4]) 39 Map.lookup (mkPackageName "base") m `shouldBe` Just (mkVersion [4, 7, 0, 2]) 40 Map.lookup (mkPackageName "Cabal") m `shouldBe` Just (mkVersion [1, 18, 1, 5]) 41 Map.lookup (mkPackageName "acme-missiles") m `shouldBe` Nothing 42