{-# LANGUAGE OverloadedStrings #-} {-# LANGUAGE TemplateHaskell #-} module RmTest where import Test.Tasty import GHCup.OptParse import Utils import GHCup.Types 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 $(versionQ "9.2.8")) , ("rm ghc-9.2.8", GHCTargetVersion (Just "ghc") $(versionQ "9.2.8")) ] rmGhcCheckList :: [(String, Either RmCommand RmOptions)] rmGhcCheckList = mapSecond (Left . RmGHC . RmOptions) [ -- failed with ("rm ghc", xxx) ("rm ghc 9.2.8", mkTVer $(versionQ "9.2.8")) , ("rm ghc ghc-9.2.8", GHCTargetVersion (Just "ghc") $(versionQ "9.2.8")) ] rmCabalCheckList :: [(String, Either RmCommand RmOptions)] rmCabalCheckList = mapSecond (Left . RmCabal) [ -- failed with ("rm cabal", xxx) ("rm cabal 3.10", $(versionQ "3.10")) , ("rm cabal cabal-3.10", $(versionQ "cabal-3.10")) ] rmHlsCheckList :: [(String, Either RmCommand RmOptions)] rmHlsCheckList = mapSecond (Left . RmHLS) [ -- failed with ("rm hls", xxx) ("rm hls 2.0", $(versionQ "2.0")) , ("rm hls hls-2.0", $(versionQ "hls-2.0")) ] rmStackCheckList :: [(String, Either RmCommand RmOptions)] rmStackCheckList = mapSecond (Left . RmStack) [ -- failed with ("rm stack", xxx) ("rm stack 2.9.1", $(versionQ "2.9.1")) , ("rm stack stack-2.9.1", $(versionQ "stack-2.9.1")) ] rmParseWith :: [String] -> IO (Either RmCommand RmOptions) rmParseWith args = do Rm a <- parseWith args pure a