From 2726e832355ea0074b8df84dbad4c56915bb0ad1 Mon Sep 17 00:00:00 2001 From: Lei Zhu Date: Fri, 28 Jul 2023 23:00:15 +0800 Subject: [PATCH] whereis test --- app/ghcup/GHCup/OptParse/Whereis.hs | 3 ++- ghcup.cabal | 1 + test/optparse-test/Main.hs | 2 ++ test/optparse-test/WhereisTest.hs | 40 +++++++++++++++++++++++++++++ 4 files changed, 45 insertions(+), 1 deletion(-) create mode 100644 test/optparse-test/WhereisTest.hs diff --git a/app/ghcup/GHCup/OptParse/Whereis.hs b/app/ghcup/GHCup/OptParse/Whereis.hs index 497520a..d6b269f 100644 --- a/app/ghcup/GHCup/OptParse/Whereis.hs +++ b/app/ghcup/GHCup/OptParse/Whereis.hs @@ -54,6 +54,7 @@ data WhereisCommand = WhereisTool Tool (Maybe ToolVersion) | WhereisCacheDir | WhereisLogsDir | WhereisConfDir + deriving (Eq, Show) @@ -66,7 +67,7 @@ data WhereisCommand = WhereisTool Tool (Maybe ToolVersion) data WhereisOptions = WhereisOptions { directory :: Bool -} +} deriving (Eq, Show) diff --git a/ghcup.cabal b/ghcup.cabal index 3dd02c7..26bee16 100644 --- a/ghcup.cabal +++ b/ghcup.cabal @@ -427,6 +427,7 @@ test-suite ghcup-optparse-test ListTest UpgradeTest CompileTest + WhereisTest default-language: Haskell2010 ghc-options: -Wall build-depends: base, ghcup, ghcup-optparse, tasty, tasty-hunit, optparse-applicative, versions, text, uri-bytestring diff --git a/test/optparse-test/Main.hs b/test/optparse-test/Main.hs index be1776a..1091c84 100644 --- a/test/optparse-test/Main.hs +++ b/test/optparse-test/Main.hs @@ -11,6 +11,7 @@ import qualified RmTest import qualified ListTest import qualified UpgradeTest import qualified CompileTest +import qualified WhereisTest main :: IO () main = defaultMain $ testGroup "ghcup" @@ -24,4 +25,5 @@ main = defaultMain $ testGroup "ghcup" , ListTest.listTests , UpgradeTest.upgradeTests , CompileTest.compileTests + , WhereisTest.whereisTests ] diff --git a/test/optparse-test/WhereisTest.hs b/test/optparse-test/WhereisTest.hs new file mode 100644 index 0000000..92fe79f --- /dev/null +++ b/test/optparse-test/WhereisTest.hs @@ -0,0 +1,40 @@ +{-# LANGUAGE OverloadedStrings #-} + +module WhereisTest where + +import Test.Tasty +import GHCup.OptParse +import Utils +import GHCup.Types + +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 $ mkTVer $ mkVersion' "9.2.8")) + , ("whereis ghc ghc-9.2.8", WhereisTool GHC (Just $ GHCVersion $ GHCTargetVersion (Just "ghc") (mkVersion' "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)