config test
This commit is contained in:
34
test/optparse-test/ConfigTest.hs
Normal file
34
test/optparse-test/ConfigTest.hs
Normal file
@@ -0,0 +1,34 @@
|
||||
{-# 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
|
||||
@@ -1,12 +1,15 @@
|
||||
module Main where
|
||||
|
||||
import Test.Tasty
|
||||
import qualified SetTest
|
||||
import qualified OtherCommandTest
|
||||
import qualified ChangeLogTest
|
||||
import qualified ConfigTest
|
||||
|
||||
main :: IO ()
|
||||
main = defaultMain $ testGroup "ghcup"
|
||||
[ SetTest.setTests
|
||||
, OtherCommandTest.otherCommandTests
|
||||
, ChangeLogTest.changeLogTests
|
||||
, ConfigTest.configTests
|
||||
]
|
||||
|
||||
Reference in New Issue
Block a user