64 lines
1.8 KiB
Haskell
64 lines
1.8 KiB
Haskell
{-# LANGUAGE OverloadedStrings #-}
|
|
{-# LANGUAGE TemplateHaskell #-}
|
|
|
|
module RmTest where
|
|
|
|
import Test.Tasty
|
|
import GHCup.OptParse
|
|
import Utils
|
|
import GHCup.Types
|
|
import Data.List.NonEmpty (NonEmpty ((:|)))
|
|
import Data.Versions
|
|
|
|
|
|
rmTests :: TestTree
|
|
rmTests =
|
|
testGroup "rm"
|
|
$ map (buildTestTree rmParseWith)
|
|
[ ("old-style", oldStyleCheckList)
|
|
, ("ghc", rmGhcCheckList)
|
|
, ("cabal", rmCabalCheckList)
|
|
, ("hls", rmHlsCheckList)
|
|
, ("stack", rmStackCheckList)
|
|
]
|
|
|
|
oldStyleCheckList :: [(String, Either RmCommand RmOptions)]
|
|
oldStyleCheckList = mapSecond (Right . RmOptions)
|
|
[ -- failed with ("rm", xxx)
|
|
("rm 9.2.8", mkTVer $(verQ "9.2.8"))
|
|
, ("rm ghc-9.2.8", GHCTargetVersion (Just "ghc") $(verQ "9.2.8"))
|
|
]
|
|
|
|
rmGhcCheckList :: [(String, Either RmCommand RmOptions)]
|
|
rmGhcCheckList = mapSecond (Left . RmGHC . RmOptions)
|
|
[ -- failed with ("rm ghc", xxx)
|
|
("rm ghc 9.2.8", mkTVer $(verQ "9.2.8"))
|
|
, ("rm ghc ghc-9.2.8", GHCTargetVersion (Just "ghc") $(verQ "9.2.8"))
|
|
]
|
|
|
|
rmCabalCheckList :: [(String, Either RmCommand RmOptions)]
|
|
rmCabalCheckList = mapSecond (Left . RmCabal)
|
|
[ -- failed with ("rm cabal", xxx)
|
|
("rm cabal 3.10", $(verQ "3.10"))
|
|
, ("rm cabal cabal-3.10", $(verQ "cabal-3.10"))
|
|
]
|
|
|
|
rmHlsCheckList :: [(String, Either RmCommand RmOptions)]
|
|
rmHlsCheckList = mapSecond (Left . RmHLS)
|
|
[ -- failed with ("rm hls", xxx)
|
|
("rm hls 2.0", $(verQ "2.0"))
|
|
, ("rm hls hls-2.0", $(verQ "hls-2.0"))
|
|
]
|
|
|
|
rmStackCheckList :: [(String, Either RmCommand RmOptions)]
|
|
rmStackCheckList = mapSecond (Left . RmStack)
|
|
[ -- failed with ("rm stack", xxx)
|
|
("rm stack 2.9.1", $(verQ "2.9.1"))
|
|
, ("rm stack stack-2.9.1", $(verQ "stack-2.9.1"))
|
|
]
|
|
|
|
rmParseWith :: [String] -> IO (Either RmCommand RmOptions)
|
|
rmParseWith args = do
|
|
Rm a <- parseWith args
|
|
pure a
|