upgrade test
This commit is contained in:
38
test/optparse-test/UpgradeTest.hs
Normal file
38
test/optparse-test/UpgradeTest.hs
Normal file
@@ -0,0 +1,38 @@
|
||||
{-# LANGUAGE TupleSections #-}
|
||||
|
||||
module UpgradeTest where
|
||||
|
||||
import Test.Tasty
|
||||
import GHCup.OptParse
|
||||
import Utils
|
||||
|
||||
|
||||
upgradeTests :: TestTree
|
||||
upgradeTests = buildTestTree upgradeParseWith ("upgrade", upgradeCheckList)
|
||||
|
||||
type FullUpgradeOpts =
|
||||
( UpgradeOpts
|
||||
, Bool -- ^Force update
|
||||
, Bool -- ^Fails after upgrading if the upgraded ghcup binary is shadowed by something else in PATH (useful for CI)
|
||||
)
|
||||
|
||||
mkDefaultOptions :: UpgradeOpts -> FullUpgradeOpts
|
||||
mkDefaultOptions = (, False, False)
|
||||
|
||||
upgradeCheckList :: [(String, FullUpgradeOpts)]
|
||||
upgradeCheckList =
|
||||
[ ("upgrade", mkDefaultOptions UpgradeGHCupDir)
|
||||
, ("upgrade -f", (UpgradeGHCupDir, True, False))
|
||||
, ("upgrade --force", (UpgradeGHCupDir, True, False))
|
||||
, ("upgrade --fail-if-shadowed", (UpgradeGHCupDir, False, True))
|
||||
, ("upgrade -i", mkDefaultOptions UpgradeInplace)
|
||||
, ("upgrade --inplace", mkDefaultOptions UpgradeInplace)
|
||||
, ("upgrade -t ~", mkDefaultOptions $ UpgradeAt "~")
|
||||
, ("upgrade --target ~", mkDefaultOptions $ UpgradeAt "~")
|
||||
, ("upgrade -t ~ -f", (UpgradeAt "~", True, False))
|
||||
]
|
||||
|
||||
upgradeParseWith :: [String] -> IO FullUpgradeOpts
|
||||
upgradeParseWith args = do
|
||||
Upgrade a b c <- parseWith args
|
||||
pure (a, b, c)
|
||||
Reference in New Issue
Block a user