Skip to content

Override QuickCheck Args on a per-test basis (Lighthouse #6) #45

@hokster7

Description

@hokster7

Reported by Oren Ben-Kiki | August 15th, 2012 @ 09:58 AM

I added something like this:

    quickCheckWithNewArgs :: QC.Testable prop => (Args -> Args)-> prop-> IO ()
    quickCheckWithNewArgs modifyArgs test = do
      result <- quickCheckWithResult (modifyArgs $ stdArgs { chatty = False }) test
      case result of
        Success {} ->
          return ()
        Failure {} ->
          assertFailure $ "QuickCheck failed\n" ++ extra result
        GaveUp {} ->
          assertFailure $ "QuickCheck gave up after: " ++ (show $ numTests result) ++ " tests\n" ++ extra result
        NoExpectedFailure {} ->
          assertFailure $ "QuickCheck failed to trigger expected failure\n" ++ extra result
      where
        extra result =
          output result ++ (concatMap showLabelFrequency $ labels result)
        showLabelFrequency (label, frequency) =
          "\nSeen label: " ++ label ++ " with frequency: " ++ show frequency

    quickCheckRepeatTests :: QC.Testable prop => Int-> prop -> IO ()
    quickCheckRepeatTests number test = do
      quickCheckWithNewArgs setTestsNumber test
      where
        setTestsNumber number args =
          args { maxSuccess = number }

It seems like something along these lines should be a part of test-framework-quickcheck2.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions