hackport-0.8.0.0: cabal/Cabal-tests/tests/UnitTests/Distribution/Simple/Command.hs
module UnitTests.Distribution.Simple.Command
( tests
) where
import Distribution.Simple.Command
import qualified Distribution.Simple.Flag as Flag
import Distribution.Simple.Setup (optionVerbosity)
import qualified Distribution.Verbosity as Verbosity
import Test.Tasty
import Test.Tasty.HUnit
argumentTests :: [TestTree]
argumentTests =
[ testCase "parses verbosity successfully" $ do
let p = commandParseArgs cmdUI isGlobal ["-v2"]
assertEqual "expected verbose" (Right verbose) $ evalParse p
, testCase "handles argument parse error gracefully" $ do
let p = commandParseArgs cmdUI isGlobal ["-v=2"]
assertEqual "expected error" (Left "errors") $ evalParse p
]
where
-- evaluate command parse result, to force possible exceptions in 'f'
evalParse p = case p of
CommandErrors _ -> Left "errors"
CommandHelp _ -> Left "help"
CommandList _ -> Left "list"
CommandReadyToGo (f, _) -> Right $ f Flag.NoFlag
verbose = Flag.Flag Verbosity.verbose
isGlobal = True
cmdUI = CommandUI
{ commandName = "cmd"
, commandSynopsis = "the command"
, commandUsage = \name -> name ++ " cmd -v[N]"
, commandDescription = Nothing
, commandNotes = Nothing
, commandDefaultFlags = Flag.NoFlag
, commandOptions = const [ optField ]
}
optField = optionVerbosity id const
tests :: [TestTree]
tests =
[ testGroup "option argument tests" argumentTests
]