ghcup-0.2.1.0: test/optparse-test/ConfigTest.hs
{-# LANGUAGE QuasiQuotes #-}
module ConfigTest where
import Test.Tasty
import Test.Tasty.HUnit
import GHCup.OptParse
import GHCup.Types (NewURLSource(..), ChannelAlias(..))
import Utils
import Control.Monad.IO.Class
import URI.ByteString.QQ
configTests :: TestTree
configTests = testGroup "config" $ map (uncurry check) checkList
where
check :: String -> ConfigCommand -> TestTree
check args expected = testCase args $ do
res <- configParseWith (words args)
liftIO $ res @?= expected
checkList :: [(String, ConfigCommand)]
checkList =
[ ("config", ShowConfig)
, ("config init", InitConfig)
, ("config show", ShowConfig)
, ("config add-release-channel https://raw.githubusercontent.com/haskell/ghcup-metadata/master/ghcup-prereleases-0.0.7.yaml"
, AddReleaseChannel False (NewURI [uri|https://raw.githubusercontent.com/haskell/ghcup-metadata/master/ghcup-prereleases-0.0.7.yaml|])
)
, ("config add-release-channel GHCupURL"
, AddReleaseChannel False NewGHCupURL
)
, ("config add-release-channel StackSetupURL"
, AddReleaseChannel False NewStackSetupURL
)
, ("config add-release-channel default"
, AddReleaseChannel False (NewChannelAlias DefaultChannel)
)
, ("config add-release-channel stack"
, AddReleaseChannel False (NewChannelAlias StackChannel)
)
, ("config add-release-channel cross"
, AddReleaseChannel False (NewChannelAlias CrossChannel)
)
, ("config add-release-channel prereleases"
, AddReleaseChannel False (NewChannelAlias PrereleasesChannel)
)
, ("config add-release-channel vanilla"
, AddReleaseChannel False (NewChannelAlias VanillaChannel)
)
, ("config set cache true", SetConfig "cache" (Just "true"))
, ("config reset all", ResetConfig ResetAll)
, ("config reset keys cache downloader", ResetConfig (ResetKeys ["cache", "downloader"]))
, ("config reset keys cache", ResetConfig (ResetKeys ["cache"]))
, ("config reset keys meta-cache", ResetConfig (ResetKeys ["meta-cache"]))
, ("config reset keys meta-mode", ResetConfig (ResetKeys ["meta-mode"]))
, ("config reset keys no-verify", ResetConfig (ResetKeys ["no-verify"]))
, ("config reset keys verbose", ResetConfig (ResetKeys ["verbose"]))
, ("config reset keys keep-dirs", ResetConfig (ResetKeys ["keep-dirs"]))
, ("config reset keys downloader", ResetConfig (ResetKeys ["downloader"]))
, ("config reset keys key-bindings", ResetConfig (ResetKeys ["key-bindings"]))
, ("config reset keys url-source", ResetConfig (ResetKeys ["url-source"]))
, ("config reset keys no-network", ResetConfig (ResetKeys ["no-network"]))
, ("config reset keys gpg-setting", ResetConfig (ResetKeys ["gpg-setting"]))
, ("config reset keys platform-override", ResetConfig (ResetKeys ["platform-override"]))
, ("config reset keys mirrors", ResetConfig (ResetKeys ["mirrors"]))
, ("config reset keys def-ghc-conf-options", ResetConfig (ResetKeys ["def-ghc-conf-options"]))
, ("config reset keys pager", ResetConfig (ResetKeys ["pager"]))
, ("config reset keys guess-version", ResetConfig (ResetKeys ["guess-version"]))
]
configParseWith :: [String] -> IO ConfigCommand
configParseWith args = do
Config a <- parseWith args
pure a