35 lines
1.0 KiB
Haskell
35 lines
1.0 KiB
Haskell
|
{-# LANGUAGE QuasiQuotes #-}
|
||
|
|
||
|
module ConfigTest where
|
||
|
|
||
|
import Test.Tasty
|
||
|
import Test.Tasty.HUnit
|
||
|
import GHCup.OptParse
|
||
|
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 [uri|https://raw.githubusercontent.com/haskell/ghcup-metadata/master/ghcup-prereleases-0.0.7.yaml|]
|
||
|
)
|
||
|
, ("config set cache true", SetConfig "cache" (Just "true"))
|
||
|
]
|
||
|
|
||
|
configParseWith :: [String] -> IO ConfigCommand
|
||
|
configParseWith args = do
|
||
|
Config a <- parseWith args
|
||
|
pure a
|