Skip to content
Snippets Groups Projects
Commit d52d51ab authored by Robert's avatar Robert
Browse files

Add basic unit tests for parsing of command line verbosity flags

The test failed prior to the bug fix:

Unit Tests
  Distribution.Simple.Command
    option argument tests
      parses verbosity successfully:           OK
      handles argument parse error gracefully: FAIL
        message threw an exception: =2
        CallStack (from HasCallStack):
          error, called at src/Distribution/ReadE.hs:42:24 in Cabal-3.7.0.0-inplace:Distribution.ReadE

1 out of 2 tests failed (0.00s)
parent 0e3cefbd
Branches gb/no-reconfigure-test-flags
No related tags found
No related merge requests found
......@@ -31,6 +31,7 @@ test-suite unit-tests
UnitTests.Distribution.Compat.Time
UnitTests.Distribution.Described
UnitTests.Distribution.PkgconfigVersion
UnitTests.Distribution.Simple.Command
UnitTests.Distribution.Simple.Glob
UnitTests.Distribution.Simple.Program.GHC
UnitTests.Distribution.Simple.Program.Internal
......
......@@ -16,6 +16,7 @@ import Distribution.Compat.Time
import qualified UnitTests.Distribution.Compat.CreatePipe
import qualified UnitTests.Distribution.Compat.Time
import qualified UnitTests.Distribution.Compat.Graph
import qualified UnitTests.Distribution.Simple.Command
import qualified UnitTests.Distribution.Simple.Glob
import qualified UnitTests.Distribution.Simple.Program.GHC
import qualified UnitTests.Distribution.Simple.Program.Internal
......@@ -49,6 +50,8 @@ tests mtimeChangeCalibrated =
(UnitTests.Distribution.Compat.Time.tests mtimeChange)
, testGroup "Distribution.Compat.Graph"
UnitTests.Distribution.Compat.Graph.tests
, testGroup "Distribution.Simple.Command"
UnitTests.Distribution.Simple.Command.tests
, testGroup "Distribution.Simple.Glob"
UnitTests.Distribution.Simple.Glob.tests
, UnitTests.Distribution.Simple.Program.GHC.tests
......
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
]
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment