ghcup-0.2.1.0: test/optparse-test/ListTest.hs
module ListTest where
import Test.Tasty
import GHCup.OptParse
import Utils
import GHCup.Command.List
import GHCup.Types
listTests :: TestTree
listTests = buildTestTree listParseWith ("list", listCheckList)
defaultOptions :: ListOptions
defaultOptions = ListOptions Nothing [] Nothing Nothing False False False ShowUpdates
listCheckList :: [(String, ListOptions)]
listCheckList =
[ ("list", defaultOptions)
, ("list -t ghc", defaultOptions{loTool = Just [ghc]})
, ("list -t cabal", defaultOptions{loTool = Just [cabal]})
, ("list -t hls", defaultOptions{loTool = Just [hls]})
, ("list -t stack", defaultOptions{loTool = Just [stack]})
, ("list -c installed", defaultOptions{lCriteria = [ListInstalled True]})
, ("list -c +installed", defaultOptions{lCriteria = [ListInstalled True]})
, ("list -c -installed", defaultOptions{lCriteria = [ListInstalled False]})
, ("list -c set", defaultOptions{lCriteria = [ListSet True]})
, ("list -c +set", defaultOptions{lCriteria = [ListSet True]})
, ("list -c -set", defaultOptions{lCriteria = [ListSet False]})
, ("list -c available", defaultOptions{lCriteria = [ListAvailable True]})
, ("list -c +available", defaultOptions{lCriteria = [ListAvailable True]})
, ("list -c -available", defaultOptions{lCriteria = [ListAvailable False]})
, ("list -s 2023-07-22", defaultOptions{lFrom = Just $ read "2023-07-22"})
, ("list -u 2023-07-22", defaultOptions{lTo = Just $ read "2023-07-22"})
, ("list --since 2023-07-22 --until 2023-07-22",
defaultOptions{lFrom = Just $ read "2023-07-22", lTo = Just $ read "2023-07-22"})
, ("list -o", defaultOptions{lHideOld = True})
, ("list --hide-old", defaultOptions{lHideOld = True})
, ("list -n", defaultOptions{lShowNightly = True})
, ("list --show-nightly", defaultOptions{lShowNightly = True})
, ("list -r", defaultOptions{lRawFormat = True})
, ("list --raw-format", defaultOptions{lRawFormat = True})
]
listParseWith :: [String] -> IO ListOptions
listParseWith args = do
List a <- parseWith args
pure a