dune/test
Jeremie Dimino 39e74826f4 Simplify the parser
Replace the current generated parser by an ocamllex lexer + a simple
parser.

The new code is:
- much simpler and smaller
- shouldn't cause ocamlopt to stack overflow anymore on BSD systems
- slightly slower but not that much

Signed-off-by: Jeremie Dimino <jdimino@janestreet.com>
2018-06-01 08:42:45 +01:00
..
blackbox-tests Merge branch 'master' into add-classical-ppx-test 2018-05-31 10:43:22 +07:00
common Rename all jbuild files 2018-05-04 12:26:26 +01:00
unit-tests Simplify the parser 2018-06-01 08:42:45 +01:00
README.md Reorganize tests 2017-08-11 11:36:33 +01:00
dune Rename all jbuild files 2018-05-04 12:26:26 +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 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