Skip to content

semgrep/testo

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Testo(caml) CircleCI badge

Quick start

$ opam update
$ opam install testo
$ git clone https://github.com/semgrep/testo-template.git
$ cd testo-template
$ dune build
$ ./test

Copy the template and adapt it as needed.

Documentation: testocaml.net

Contributing

Testo is maintained by the OCaml community for the OCaml community. If you see anything you like or dislike, let us know!

See our contribution guidelines.

Features

Testo is a test framework for OCaml that takes inspiration from its predecessor Alcotest and from pytest. Features include:

  • support for explicit XFAIL tests i.e. tests that are expected to fail, indicating that they should be fixed eventually;
  • support for test snapshots i.e. persistent storage of captured stdout, stderr, or output files;
  • reviewing and approving tests without re-running them;
  • nested test suites;
  • various ways to select tests;
  • parallel execution (using multiprocessing);
  • supports OCaml >= 4.08.

A test executable is generated from a list of tests written in OCaml. The function to interpret the command line and run things is Testo.interpret_argv. The core subcommands supported by a test executable are:

  • run: run tests
  • status: check the status of the tests without re-running them
  • approve: approve test output and make it the new reference

A test is fundamentally a name and test function of type unit -> unit. A test is considered successful if the test function returns normally and is considered failed if it raises an exception. A test is created with Testo.create which takes a variety of options in addition to the name and the test function.

For example, checking that some test result res equals an expected value of 42 is written as:

Testo.(check int) 42 res;

This raises an exception that is turned into a nice error message.

About

Test framework for OCaml

Resources

License

Contributing

Stars

Watchers

Forks

Packages

No packages published

Contributors 6

Languages