Qcheck Versions Save

QuickCheck inspired property-based testing for OCaml.

v0.21.3

5 months ago
  • Drop the dependency on base-bytes as it is provided in all supported versions of the OCaml compiler

v0.21.2

8 months ago
  • Reintroduce the Shrink.list_spine fix by catching Invalid_argument and falling back on an address comparison.
  • Fix #273 by lowering ppx_deriving_qcheck's qcheck dependency to qcheck-core

v0.21.1

11 months ago

This is a bugfix release to fix a regression:

  • Roll back the Shrink.list_spine fix, as it was utilizing polymorphic equality that can raise an exception on function comparison.

v0.21

11 months ago

This release offers better negative test integration and furthermore fixes a couple of bugs in QCheck.Shrink and in ppx_deriving_qcheck:

  • make Test.check_result, Test.check_cell_exn, and Test.check_exn honor test polarity by raising Test_unexpected_success when a negative test (expected to have a counter example), unexpectedly succeeds.
  • fix issue with ppx_deriving_qcheck deriving a generator with unbound gen for recursive types #269 and a related issue when deriving a generator for a record type
  • fix #241 causing QCheck.Shrink.int* to emit duplicates, also affecting QCheck.Shrink.{char,string}
  • fix a cornercase where Shrink.list_spine would emit duplicates

v0.20

1 year ago

This release comes with a few new features and bug fixes, along with several new bytes and string combinators in an attempt to stream-line their names

  • add several new bytes combinators:
    • {QCheck,QCheck2}.Gen.{bytes_size,bytes,bytes_of,bytes_printable,bytes_small,bytes_small_of}
    • QCheck.{Print,Shrink,Observable}.bytes
    • QCheck2.{Print,Shrink}.bytes
    • QCheck.{bytes_gen_of_size,bytes_of,bytes,bytes_small,bytes_small_of,bytes_of_size,bytes_printable}
  • add new string combinators and aliases:
    • {QCheck,QCheck2}.Gen.{string_small,string_small_of}
    • QCheck.{string_small,string_small_of,string_of,string_printable,string_printable_of_size,string_small_printable,string_numeral,string_numeral_of_size}
  • add an optional argument with conservative default to Shrink.string
  • fix shrinkers in QCheck.{printable_string,printable_string_of_size,small_printable_string,numeral_string,numeral_string_of_size} #257
  • add QCheck2.Gen.set_shrink to modify the generator's shrinker
  • add QCheck2.Gen.no_shrink to build a generator with no shrinking
  • add an environment variable QCHECK_MSG_INTERVAL to control QCheck_base_runner.time_between_msg
  • fix unknown option error message referring to qtest

v0.19.1

1 year ago

Bugfix release:

  • fix: allow ~count in Test.make to be 0
  • fix: allow ~long_factor in Test.make to be 0

v0.19

1 year ago

This release brings a range of new features and improvements, detailed below.

  • new features and feature extensions

    • add optional debug_shrink parameters in alcotest interface and expose default debug_shrinking_choices in test runners
    • add missing ?handler parameter to Test.check_cell_exn
    • add an option retries parameter to Test.make et al. for checking a property repeatedly while shrinking. This can be useful when testing non-deterministic code. #212
    • add tup2 to tup9 for generators
    • add Test.make_neg for negative property-based tests, that are expected not to satisfy the tested property.
    • add environment variable QCHECK_LONG_FACTOR similar to QCHECK_COUNT #220
    • rename Gen.opt to Gen.option but keep the old binding for compatibility.
    • shrinker changes
      • recursive list shrinker with better complexity
      • string shrinker reuses improved list shrinker and adds char shrinking
      • function shrinker now shrinks default entry first and benefits from list shrinker improvements
      • replacing the linear-time char shrinker with a faster one reusing the bisecting int shrinker algorithm
      • add Shrink.char_numeral and Shrink.char_printable
      • add shrinking for char arbitrarys char, printable_char, and numeral_char
  • bug fixes

    • fix function generation affecting reproducability #236
    • fix distribution of QCheck2.printable which would omit certain characters
    • use Float.equal for comparing floats in the Observable module underlying function generators.
  • documentation updates:

    • clarify upper bound inclusion in Gen.int_bound and Gen.int_range
    • clarify printable_char and Gen.printable distributions
    • add missing string_gen_of_size and small_printable_string documentation
    • document QCheck_alcotest.to_alcotest
    • fix documented size distribution for arbitrary generators string_gen, string, printable_string, numeral_string, list, and array
    • fix exception documentation for check_result, check_cell_exn, and check_exn
    • fix documentation for the distribution of Gen.printable and printable_char
    • fix documentation for the shrinking behaviour of QCheck2.printable
  • internal and test suite changes

    • add additional expect and unit tests and refactor expect test suite
    • add a shrinker performance benchmark #177
    • remove --no-buffer option on dune runtest to avoid garbling the test output
    • make test suite run on 32-bit architectures

v0.18.1

2 years ago

bugfix release.

  • fix Gen.{nat,pos}_split{2,}
  • fix stack overflow in #156

v0.18

2 years ago

This releases marks the addition of QCheck2, a module where generation and shrinking are better integrated. See #109 and #116.

This API is still experimental. The normal QCheck module is still there and hasn't changed much.

deprecations and breakges:

  • make QCheck.Test_result.t abstract and add missing getters
  • deprecate QCheck.oneof
  • deprecate Gen.string_readable in favor of Gen.(string_of char) or the new Gen.string_printable
  • require at least OCaml 4.08

other changes:

  • unsigned int32 and int64
  • rename small_int_corners
  • add ?ratio to opt, to modify random distribution of options

0.17

3 years ago

many bugfixes, and addition of Gen.delay.