dune/test
Jérémie Dimino d7222ae1a6
Fix detection of dynamic cycles (#988)
Signed-off-by: Jeremie Dimino <jeremie@dimino.org>
2018-07-10 12:14:40 +01:00
..
blackbox-tests Fix detection of dynamic cycles (#988) 2018-07-10 12:14:40 +01:00
common Remove most useless parentheses from the syntax (#915) 2018-06-27 16:38:05 +01:00
unit-tests Get rid of uses of %{first-dep} 2018-07-10 01:32:26 +07:00
README.md Reorganize tests 2017-08-11 11:36:33 +01:00
bulk-update.sh Make the default build profile be dev 2018-06-28 11:23:10 +01:00
dune Rename %{@} to %{targets} 2018-07-06 18:45:43 +07:00

README.md

This file describe how the jbuilder test suite is organized.

Unit testing

The unit-tests directory contains unit tests, written in expectation style. The test logic is implemented in unit-tests/expect_test.mll and the various tests are in .mlt files.

The way they work is quite simple; each .mlt file is a succession of toplevel phrases followed by the output reported by the OCaml toplevel enclosed in an [%%expect] extension point. For instance:

6 * 7;;
[%%expect{|
- : int = 42
|}]

Blackbox testing

The blackbox-tests contains blackbox tests. I.e. we are testing the fully built jbuilder executable on various example projects.

The tests are written in cram style. The logic is implemented in blackbox-tests/cram.mll. It only implements a minimal subset of cram testing. In particular the shell environment is currently not preserved between commands, so you cannot define a variable and use it.

Test cases are in blackbox-tests/test-cases. Each sub-directory is a full blown jbuilder project. Each sub-directory contains a run.t file, which represent a few invokation of jbuilder along with the expected output.

Here is a sample .t file:

This is a comment

  $ echo 'Hello, world!'
  Hello, world!

  $ cat plop
  cat: plop: No such file or directory
  [1]

The [1] represent the exit code of the command. It is printed when it
is non-zero