package octez-libs
Testable
collects Alcotest.testable
definitions for OCaml base types.
include module type of struct include Alcotest end
include Alcotest_engine.V1.Cli.S with type return = unit
The return type of each test case run by Alcotest. For the standard Alcotest
module, return = unit
. The concurrent backends Alcotest_lwt
and Alcotest_async
set return = unit Lwt.t
and return = Async_kernel.Deferred.t
respectively.
Speed level of a test. Tests marked as `Quick
are always run. Tests marked as `Slow
are skipped when the `-q` flag is passed.
type 'a test_case = string * speed_level * ('a -> return)
A test case is a UTF-8 encoded documentation string, a speed level and a function to execute. Typically, the testing function calls the helper functions provided below (such as check
and fail
).
The exception return by run
in case of errors.
val test_case : string -> speed_level -> ('a -> return) -> 'a test_case
test_case n s f
is the test case n
running at speed s
using the function f
.
type 'a test = string * 'a test_case list
A test is a UTF-8 encoded name and a list of test cases. The name can be used for filtering which tests to run on the CLI.
type 'a with_options =
?stdout:Alcotest_engine.Formatters.stdout ->
?stderr:Alcotest_engine.Formatters.stderr ->
?and_exit:bool ->
?verbose:bool ->
?compact:bool ->
?tail_errors:[ `Unlimited | `Limit of int ] ->
?quick_only:bool ->
?show_errors:bool ->
?json:bool ->
?filter:(name:string -> index:int -> [ `Run | `Skip ]) ->
?log_dir:string ->
?bail:bool ->
?record_backtrace:bool ->
?ci:[ `Github_actions | `Unknown | `Disabled ] ->
'a
The various options taken by the tests runners run
and run_with_args
:
stdout
(default toFmt.stdout
). The formatter used to print on the standard output.stderr
(default toFmt.stderr
). The formatter used to print ont the standard error output.and_exit
(defaulttrue
). Once the tests have completed, exit with return code0
if all tests passed, otherwise1
.verbose
(defaultfalse
). Display the test std.out and std.err (rather than redirecting to a log file).compact
(defaultfalse
). Compact the output of the tests.tail_errors
(default unlimited). Show only the last N lines of output of failed tests.quick_only
(defaultfalse
). Don't run tests with the`Slow
speed level.show_errors
(defaultfalse
). Display the test errors.json
(defaultfalse
). Print test results in a JSON-compatible format.filter
. Filter tests according to~name
, the name of the test, and~index
, the number of the test case.log_dir
(default"$PWD/_build/_tests/"
). The directory in which to log the output of the tests (ifverbose
is not set).bail
(defaultfalse
). If true, stop running the tests after the first failure.record_backtrace
(defaulttrue
). Enable backtrace recording before beginning testing.ci
(default auto-detected). Whether to enable specific logging for a CI system.
val run :
(?argv:string array -> string -> unit test list -> return) with_options
run n t
runs the test suite t
. n
is the name of the tested library.
The optional argument and_exit
controls what happens when the function ends. By default, and_exit
is set, which makes the function exit with 0
if everything is fine or 1
if there is an issue. If and_exit
is false
, then the function raises Test_error
on error.
The optional argument argv
specifies command line arguments sent to alcotest like "--json"
, "--verbose"
, etc. Note that this array will be treated like a regular Sys.argv
, so the array must have at least one element, and the first element will be treated as if it was the command name and thus ignored for the purposes of option processing. So ~argv:[||]
is an error, ~argv:[| "--verbose" |]
will have no effect, and ~argv:[| "ignored"; "--verbose" |]
will successfully pass the verbose option.
val run_with_args :
(?argv:string array ->
string ->
'a Cmdliner.Term.t ->
'a test list ->
return)
with_options
run_with_args n a t
Similar to run a t
but take an extra argument a
. Every test function will receive as argument the evaluation of the Cmdliner
term a
: this is useful to configure the test behaviors using the CLI.
Testable values
The following combinators represent types that can be used with the check
functions below.
module type TESTABLE = Alcotest.TESTABLE
TESTABLE
provides an abstract description for testable values.
testable pp eq
is a new testable
with the pretty-printer pp
and equality eq
.
val equal : 'a testable -> 'a -> 'a -> bool
equal t
is t
's equality.
val bool : bool testable
bool
tests booleans.
val int : int testable
int
tests integers.
val int32 : int32 testable
int32
tests 32-bit integers.
val int64 : int64 testable
int64
tests 64-bit integers.
val float : float -> float testable
float
tests floats with specified absolute error.
val char : char testable
char
tests characters.
val string : string testable
string
tests OCaml strings.
val bytes : bytes testable
bytes
tests OCaml bytes.
val unit : unit testable
unit
tests unit values (useful for functions with side-effects).
slist t comp
tests sorted lists of t
s. The list are sorted using comp
.
result t e
tests t
s on success and e
s on failure.
triple a b c
tests triples of a
s, b
s and c
s.
of_pp pp
tests values which can be printed using pp
and compared using Stdlib.compare
val pass : 'a testable
pass
tests values of any type and always succeeds.
val reject : 'a testable
reject
tests values of any type and always fails.
neg t
is t
's negation: it is true
when t
is false
and it is false
when t
is true
.
Assertion functions
Functions for asserting various properties within unit-tests. A failing assertion will cause the testcase to fail immediately.
module Source_code_position = Alcotest.Source_code_position
type 'a extra_info =
?here:Source_code_position.here ->
?pos:Source_code_position.pos ->
'a
The assertion functions optionally take information about the location at which they are called in the source code. This is used for giving more descriptive error messages in the case of failure.
val check : ('a testable -> string -> 'a -> 'a -> unit) extra_info
check testable msg expected actual
checks that two values are equal.
msg
is printed if the check fails.
If check
isn't in a tail-call position, Alcotest may guess the location of the check. Otherwise, use extra_info
to report the location.
val check' :
('a testable -> msg:string -> expected:'a -> actual:'a -> unit) extra_info
Check that two values are equal (labeled variant of check
).
val fail : (string -> 'a) extra_info
Simply fail.
val failf : (('a, Format.formatter, unit, 'b) format4 -> 'a) extra_info
Simply fail with a formatted message.
val check_raises : (string -> exn -> (unit -> unit) -> unit) extra_info
Check that an exception is raised.
val match_raises :
(string -> (exn -> bool) -> (unit -> unit) -> unit) extra_info
Check that an exception is raised.
Versioned APIs
module V1 = Alcotest.V1
An alias of the above API that provides a stability guarantees over major version changes.
Unix-specific engine constructors
The Alcotest_engine
package provides the most general form of the Alcotest API, parameterised over the thread implementation and the platform. This package provides the Unix
platform implementation.
module Unix_platform = Alcotest.Unix_platform
val exn : exn testable