ghcup-0.2.1.0: test/optparse-test/WhereisTest.hs
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE TemplateHaskell #-}
module WhereisTest where
import Test.Tasty
import GHCup.OptParse
import Utils
import GHCup.Types
import Data.Versions (versionQ)
whereisTests :: TestTree
whereisTests = buildTestTree whereisParseWith ("whereis", whereisCheckList)
whereisCheckList :: [(String, (WhereisOptions, WhereisCommand))]
whereisCheckList = concatMap mk
[ ("whereis ghc", WhereisTool ghc Nothing)
, ("whereis ghc 9.2.8", WhereisTool ghc (Just $ GHCVersion $ toTargetVersionReq'' $(versionQ "9.2.8")))
, ("whereis ghc latest", WhereisTool ghc (Just $ ToolTag Latest))
, ("whereis cabal", WhereisTool cabal Nothing)
, ("whereis hls", WhereisTool hls Nothing)
, ("whereis stack", WhereisTool stack Nothing)
, ("whereis ghcup", WhereisTool ghcup Nothing)
, ("whereis basedir", WhereisBaseDir)
, ("whereis bindir", WhereisBinDir)
, ("whereis cachedir", WhereisCacheDir)
, ("whereis logsdir", WhereisLogsDir)
, ("whereis confdir", WhereisConfDir)
]
where
mk :: (String, WhereisCommand) -> [(String, (WhereisOptions, WhereisCommand))]
mk (cmd', res) =
[ (cmd', (WhereisOptions False, res))
, (cmd' <> " -d", (WhereisOptions True, res))
, (cmd' <> " --directory", (WhereisOptions True, res))
]
whereisParseWith :: [String] -> IO (WhereisOptions, WhereisCommand)
whereisParseWith args = do
Whereis a b <- parseWith args
pure (a, b)