dune/test
François Bobot 7f09979853 Adds support for findlib.dynload
which allows to easily dynlink packages and their dependencies.
     Dune is needed for putting in the binary the list of package
     statically linked.

Signed-off-by: François Bobot <francois.bobot@cea.fr>
2018-08-28 18:10:14 +01:00
..
blackbox-tests Adds support for findlib.dynload 2018-08-28 18:10:14 +01:00
common Remove most useless parentheses from the syntax (#915) 2018-06-27 16:38:05 +01:00
unit-tests Add ~loc to of_string_exn 2018-08-28 13:30:40 +03:00
README.md Fix typos in source code 2018-07-10 13:05:58 +01:00
bulk-update.sh Make the default build profile be dev 2018-06-28 11:23:10 +01:00
dune Rename private libraries and add a test to make sure we don't publicize too much (#1111) 2018-08-09 10:03:06 +01: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 represents a few invocations 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