include module type of struct include QCheck_base_runner end
Runners for Tests
Once you have built tests using QCheck.Test.make
or QCheck2.Test.make
, you need to run them. This module contains several runners, which are designed to run every test and report the result.
By default, you can use run_tests
in a test program as follows:
let testsuite = [
Test.make ...;
Test.make ...;
]
let () =
let errcode = QCheck_base_runner.run_tests ~verbose:true testsuite in
exit errcode
which will run the tests, and exit the program. The error code will be 0 if all tests pass, 1 otherwise.
run_tests_main
can be used as a shortcut for that, also featuring command-line parsing (using Arg
) to activate verbose mode and others.
State
Access the current random state
Sourceval verbose : unit -> bool
Is the default mode verbose or quiet?
Sourceval long_tests : unit -> bool
Is the default mode to run long tests or nor?
Sourceval set_seed : int -> unit
Change the random_state
by creating a new one, initialized with the given seed.
Sourceval set_verbose : bool -> unit
Change the value of verbose ()
Sourceval set_long_tests : bool -> unit
Change the value of long_tests ()
Console message printing
In verbose mode, by default QCheck_base_runner
prints frequent sub-second messages suitable for an interactive console test run. This behaviour can be changed by the environment variable QCHECK_MSG_INTERVAL
. Intervals are given in seconds and can also be decimal numbers. For example, setting
QCHECK_MSG_INTERVAL=7.5
will only print a console message every 7.5 seconds. This feature can be useful in a CI context, where updates are printed on consecutive lines and one may want to avoid overflowing the CI log files with too many lines.
Note: The start and finishing message for each test is printed eagerly in verbose mode regardless of the specified message interval.
Sourceval get_time_between_msg : unit -> float
Get the minimum time (in seconds) to wait between printing messages.
Sourceval set_time_between_msg : float -> unit
Set the minimum time (in seconds) between messages.
Event handlers
Sourcetype counter = private QCheck_base_runner.counter = {
start : float;
expected : int;
mutable gen : int;
mutable passed : int;
mutable failed : int;
mutable errored : int;
}
The type of counter used to keep tracks of the events received for a given test cell.
A type to represent polymorphic-enough handlers for test cells.
An alias type to a generator of handlers for test cells.
The default handler used.
The function used by the default handler to debug shrinking choices. This can be useful to outside users trying to reproduce some of the base-runner behavior.
Run a Suite of Tests and Get Results
Run a suite of tests, and print its results. This is an heritage from the "qcheck" library.
Sourceval run_tests_main : ?argv:string array -> QCheck2.Test.t list -> 'a
Can be used as the main function of a test file. Exits with a non-0 code if the tests fail. It refers to run_tests
for actually running tests after CLI options have been parsed.
The available options are:
- "--verbose" (or "-v") for activating verbose tests
- "--seed <n>" (or "-s <n>") for repeating a previous run by setting the random seed
- "--long" for running the long versions of the tests
Below is an example of the output of the run_tests
and run_tests_main
function:
random seed: 438308050
generated error; fail; pass / total - time -- test name
[✓] (1000) 0 ; 0 ; 1000 / 1000 -- 0.5s -- list_rev_is_involutive
[✗] ( 1) 0 ; 1 ; 0 / 10 -- 0.0s -- should_fail_sort_id
[✗] ( 1) 1 ; 0 ; 0 / 10 -- 0.0s -- should_error_raise_exn
[✓] (1000) 0 ; 0 ; 1000 / 1000 -- 0.0s -- collect_results
--- Failure --------------------------------------------------------------------
Test should_fail_sort_id failed (11 shrink steps):
[1; 0]
=== Error ======================================================================
Test should_error_raise_exn errored on (62 shrink steps):
0
exception QCheck_runner_test.Error
Raised at file "example/QCheck_runner_test.ml", line 20, characters 20-25
Called from file "src/QCheck.ml", line 839, characters 13-33
+++ Collect ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Collect results for test collect_results:
4: 207 cases (20.7%)
3: 190 cases (19.0%)
2: 219 cases (21.9%)
1: 196 cases (19.6%)
0: 188 cases (18.8%)
================================================================================
failure (1 tests failed, 1 tests errored, ran 4 tests)