package tezt

All checked builds pass
  1. Overview
  2. Docs
Test framework for unit tests, integration tests, and regression tests

Install

dune-project
 Dependency

Authors

Maintainers

Sources

tezt-4.3.0.tar.bz2
md5=15abf8d74a268d18dd42e539f894fbe8
sha512=fb30fc561a1e77f037a4ce7eb022345ef0620fa1ac3e16bd83b7f867ef3d0c0ff676255a967d3122e7ef25b22f4b0dc01fba9fe90fe1b486e68b268ba1e9a9c9

Description

Added to opam-repository:

README

Tezt

Tezt (pronounced "tezty", as in "tasty" with a "z") is a test framework for OCaml. It is well suited for writing and executing unit, integration and regression tests. It integrates well with continuous integration (CI).

Documentation

The documentation contains:

  • the API, which includes an introduction to Tezt as well as documentation for all modules;
  • the default --help, which includes how to select tests from the command-line.

Getting Started

Install

Install with opam:

opam install tezt

Write a Test

Create a file such as test/main.ml:

(* [Tezt] and its submodule [Base] are designed to be opened.
   [Tezt] is the main module of the library and it only contains submodules,
   such as [Test] which is used below.
   [Tezt.Base] contains values such as [unit] which is used below. *)
open Tezt
open Tezt.Base

(* Register as many tests as you want like this. *)
let () =
  Test.register
    (* [~__FILE__] contains the name of the file in which the test is defined.
       It allows to select tests to run based on their filename. *)
    ~__FILE__
    (* Titles uniquely identify tests so that they can be individually selected. *)
    ~title: "demo"
    (* Tags are another way to group tests together to select them. *)
    ~tags: [ "math"; "addition" ]
  @@ fun () ->
  (* Here is the actual test. *)
  if 1 + 1 <> 2 then Test.fail "expected 1 + 1 = 2, got %d" (1 + 1);
  (* Here is another way to write the same test. *)
  Check.((1 + 1 = 2) int) ~error_msg: "expected 1 + 1 = %R, got %L";
  Log.info "Math is safe today.";
  (* [unit] is [Lwt.return ()]. *)
  unit

(* Call the main function of Tezt so that it actually runs your tests. *)
let () = Test.run ()

Then create a test/dune file:

(test (name main) (libraries tezt))

You can now run your test with dune runtest. However dune runtest is limited because you cannot pass command-line arguments. Usually, you would instead run something like:

dune exec test/main.exe -- -i

This should show you:

[09:04:06.395] Math is safe today.
[09:04:06.395] [SUCCESS] (1/1) demo

The -i flag is a short-hand for --info and sets the log level so that you can see the result of the call to Log.info.

To see the list of command-line options, in particular how to select tests from the command-line, how to run them in parallel and how to produce reports, run:

dune exec test/main.exe -- --help

or just look them up in the documentation.

Dependencies (7)

  1. clap >= "0.3.0"
  2. ezjsonm >= "1.1.0"
  3. base-unix
  4. lwt >= "5.6.0" & < "6.0.0"
  5. re >= "1.7.2"
  6. ocaml >= "4.13"
  7. dune >= "3.19.1"

Dev Dependencies (4)

  1. ocamlformat with-test & = "0.27.0"
  2. js_of_ocaml-lwt with-test
  3. js_of_ocaml with-test
  4. conf-npm with-test

Optional Dependencies (2)

  1. js_of_ocaml-lwt
  2. js_of_ocaml

Conflicts (4)

  1. lwt = "6.0.0~beta01"
  2. lwt = "6.0.0~alpha00"
  3. js_of_ocaml-lwt < "4.0.0"
  4. js_of_ocaml < "4.0.0"

Build status

Results of building tezt with each compiler on check.ci.ocaml.org, run of against opam-repository 7cdc698. All results for this package.

Each result links to its build log. To keep crawlers from overloading the site, build logs require a GitHub sign-in (see ocurrent/opam-health-check). On your first log, GitHub asks you to “Authorize opam-health-check”, the OCurrent app that runs these checks; it sees only your public profile, not your repositories. The sign-in lasts 30 days.

Version OCaml 4.11 OCaml 4.14 OCaml 5.2 OCaml 5.4 OCaml 5.5
4.3.0 (this version) n/a good good good good
  • good Package successfully built
  • partial One of the dependencies failed to build
  • bad Package failed to build
  • n/a Package is not available in this environment
  • internal Internal failure