Legend:
Page
Library
Module
Module type
Parameter
Class
Class type
Source
Page
Library
Module
Module type
Parameter
Class
Class type
Source
core_intf.ml
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98
(* * Copyright (c) 2013-2016 Thomas Gazagnaire <thomas@gazagnaire.org> * Copyright (c) 2021 Craig Ferguson <craig@tarides.com> * * Permission to use, copy, modify, and distribute this software for any * purpose with or without fee is hereby granted, provided that the above * copyright notice and this permission notice appear in all copies. * * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. *) module type S = sig type return (** 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. *) type speed_level = [ `Quick | `Slow ] (** 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]). *) exception Test_error (** 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. *) val list_tests : 'a test list -> return (** Print all of the test cases in a human-readable form *) type 'a with_options = ?and_exit:bool -> ?verbose:bool -> ?compact:bool -> ?tail_errors:[ `Unlimited | `Limit of int ] -> ?quick_only:bool -> ?show_errors:bool -> ?json:bool -> ?filter:Re.re option * int list option -> ?log_dir:string -> ?bail:bool -> 'a (** The various options taken by the tests runners {!run} and {!run_with_args}: - [and_exit] (default [true]). Once the tests have completed, exit with return code [0] if all tests passed, otherwise [1]. - [verbose] (default [false]). Display the test std.out and std.err (rather than redirecting to a log file). - [compact] (default [false]). Compact the output of the tests. - [tail_errors] (default unlimited). Show only the last N lines of output of failed tests. - [quick_only] (default [false]). Don't run tests with the {{!Core.speed_level} [`Slow] speed level}. - [show_errors] (default [false]). Display the test errors. - [json] (default [false]). Print test results in a JSON-compatible format. - [log_dir] (default ["$PWD/_build/_tests/"]). The directory in which to log the output of the tests (if [verbose] is not set). - [bail] (default [false]). If true, stop running the tests after the first failure. *) val run : (string -> unit test list -> return) with_options val run_with_args : (string -> 'a -> 'a test list -> return) with_options end module type MAKER = functor (P : Platform.MAKER) (M : Monad.S) -> S with type return = unit M.t module type Core = sig module type S = S module type MAKER = MAKER exception Check_error of unit Fmt.t module Make : MAKER (** Functor for building a tester that sequences tests of type [('a -> unit M.t)] within a given concurrency monad [M.t]. The [run] and [run_with_args] functions must be scheduled in a global event loop. Intended for use by the {!Alcotest_lwt} and {!Alcotest_async} backends. *) end