Tests¶
The test/ directory contains all the tests for Dune itself. Additionally,
the tests for our Libraries are stored in otherlibs/ next to the
library itself.
We have 3 kind of tests:
Unit tests, in
test/unit-tests(we have very few of these, usually preferring other kinds)Expect tests, in
test/expect-tests(usingppx_expect)Cram tests, in
test/blackbox-tests/. This is our preferred way of testing.
The actual Cram tests are in test/expect-tests/test-cases. There is a
mix of file tests and directory tests. For regression tests, the pattern
githubNUMBER.t is used.
The dune file at test/expect-tests/test-cases/dune sets up some
metadata for the tests. For example, if a test has an external dependency like
strace, a dependency on %{bin:strace} will prevent the test from even
trying to start. Some tests are also disabled on some configurations using
(enabled_if).
Finally, some programs available in the Cram tests are defined in
test/expect-tests/blackbox-tests/utils. For example, we have a
dune_cmd program
that contains reimplementations of common utilities like stat, which do not
have the same output on the different systems we use to test Dune.
See also