81 lines
2.6 KiB
Haskell
81 lines
2.6 KiB
Haskell
{-# LANGUAGE OverloadedStrings #-}
|
|
|
|
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 (mkVersion $ (Digits 9 :| []) :| [Digits 2 :| [], Digits 8 :| []]))
|
|
, ("rm ghc-9.2.8", GHCTargetVersion (Just "ghc") (mkVersion $ (Digits 9 :| []) :| [Digits 2 :| [], Digits 8 :| []]))
|
|
]
|
|
|
|
rmGhcCheckList :: [(String, Either RmCommand RmOptions)]
|
|
rmGhcCheckList = mapSecond (Left . RmGHC . RmOptions)
|
|
[ -- failed with ("rm ghc", xxx)
|
|
("rm ghc 9.2.8", mkTVer (mkVersion $ (Digits 9 :| []) :| [Digits 2 :| [], Digits 8 :| []]))
|
|
, ("rm ghc ghc-9.2.8", GHCTargetVersion (Just "ghc") (mkVersion $ (Digits 9 :| []) :| [Digits 2 :| [], Digits 8 :| []]))
|
|
]
|
|
|
|
rmCabalCheckList :: [(String, Either RmCommand RmOptions)]
|
|
rmCabalCheckList = mapSecond (Left . RmCabal)
|
|
[ -- failed with ("rm cabal", xxx)
|
|
("rm cabal 3.10", mkVersion $ (Digits 3 :| []) :| [Digits 10 :| []])
|
|
, ("rm cabal cabal-3.10", Version
|
|
{ _vEpoch = Nothing
|
|
, _vChunks = (Str "cabal" :| []) :| []
|
|
, _vRel = [Digits 3 :| [], Digits 10 :| []]
|
|
, _vMeta = Nothing
|
|
}
|
|
)
|
|
]
|
|
|
|
rmHlsCheckList :: [(String, Either RmCommand RmOptions)]
|
|
rmHlsCheckList = mapSecond (Left . RmHLS)
|
|
[ -- failed with ("rm hls", xxx)
|
|
("rm hls 2.0", mkVersion $ (Digits 2 :| []) :| [Digits 0 :| []])
|
|
, ("rm hls hls-2.0", Version
|
|
{ _vEpoch = Nothing
|
|
, _vChunks = (Str "hls" :| []) :| []
|
|
, _vRel = [Digits 2 :| [], Digits 0 :| []]
|
|
, _vMeta = Nothing
|
|
}
|
|
)
|
|
]
|
|
|
|
rmStackCheckList :: [(String, Either RmCommand RmOptions)]
|
|
rmStackCheckList = mapSecond (Left . RmStack)
|
|
[ -- failed with ("rm stack", xxx)
|
|
("rm stack 2.9.1", mkVersion $ (Digits 2 :| []) :| [Digits 9 :| [], Digits 1 :| []])
|
|
, ("rm stack stack-2.9.1", Version
|
|
{ _vEpoch = Nothing
|
|
, _vChunks = (Str "stack" :| []) :| []
|
|
, _vRel = [Digits 2 :| [], Digits 9 :| [], Digits 1 :| []]
|
|
, _vMeta = Nothing
|
|
}
|
|
)
|
|
]
|
|
|
|
rmParseWith :: [String] -> IO (Either RmCommand RmOptions)
|
|
rmParseWith args = do
|
|
Rm a <- parseWith args
|
|
pure a
|