catala/tests
2022-02-04 14:41:22 +01:00
..
test_arithmetic/bad Test folders, nice doc and messages 2022-01-11 12:51:34 +01:00
test_array Test folders, nice doc and messages 2022-01-11 12:51:34 +01:00
test_bool Propagate visibility down, missing handling in scope_to_dcalc 2022-02-04 14:41:22 +01:00
test_date Test folders, nice doc and messages 2022-01-11 12:51:34 +01:00
test_dec/good Working prototype of clerk, the new build system for Catala 2022-01-10 17:57:58 +01:00
test_default/bad Test folders, nice doc and messages 2022-01-11 12:51:34 +01:00
test_enum Test folders, nice doc and messages 2022-01-11 12:51:34 +01:00
test_exception Test folders, nice doc and messages 2022-01-11 12:51:34 +01:00
test_func Test folders, nice doc and messages 2022-01-11 12:51:34 +01:00
test_literate/good Working prototype of clerk, the new build system for Catala 2022-01-10 17:57:58 +01:00
test_metadata/good Working prototype of clerk, the new build system for Catala 2022-01-10 17:57:58 +01:00
test_money Test folders, nice doc and messages 2022-01-11 12:51:34 +01:00
test_name_resolution/good Working prototype of clerk, the new build system for Catala 2022-01-10 17:57:58 +01:00
test_proof [skip ci] reorganized desugared to scope encoding, broke some invariants 2022-01-28 17:31:31 +01:00
test_scope Fixed last bug around rule refactoring 2022-01-31 13:55:25 +01:00
test_struct Test folders, nice doc and messages 2022-01-11 12:51:34 +01:00
Makefile Fix Makefiles and relative paths [skip ci] 2022-01-12 15:00:53 +01:00
README.md Test folders, nice doc and messages 2022-01-11 12:51:34 +01:00

Catala test suite

This folder contains Catala source files designed to test the features of the language.

Expected outputs are stored using the convention <name_of_test>.catala_<language>.<name_of_scope>.Interpret in the corresponding test output folder.

For both workflows: use CATALA_OPTS="..." make ... to pass in Catala compiler options when debugging.

Workflow for adding new tests

  1. Create a new test file in foo/{good,bad}/bar.catala_<language> (pick the right directory and an informative name for your test)
  2. Write your test, and pick a toplevel scope A to run.
  3. From this directory, create mkdir -p foo/{good,bad}/output and the empty expected output file touch foo/{good,bad}/output/bar.catala_<language>.A.Interpret.
  4. From the root of the Catala repository, Run make -C tests foo/{good,bad}/bar.catala_<language> to get the output of your test (compared with the empty file). The failing test will give you the command to use to reproduce the fail from the tests directory.
  5. When you're happy with the output, launch CLERK_OPTS=--reset make -C tests foo/{good,bad}/bar.catala_<language> from the root of the Catala repository. This will record the content of the output of your test into a file.
  6. Check that your test pass with make -C tests foo/{good,bad}/bar.catala_<language> from the root of the Catala repository.
  7. That's it, you've added a new test for the Catala language!

Workflow for fixing regressions

  1. Run make test_suite from the root of the Catala repository, if a test fails you should see something like [ERROR] Test failed: foo/{good,bad}/output/bar.catala_<language>.A.Interpret].
  2. Compare the computed and expected output with make -C tests foo/{good,bad}/bar.catala_<language> from the root of the Catala repository.
  3. Debug the compiler and/or the test, running make -C tests foo/{good,bad}/bar.catala_<language> from the root of the Catala repository periodically to check the output of Catala on the test case.
  4. When you're finished debugging, record the new test output with CLERK_OPTS=--reset make foo/{good,bad}/bar.catala_<language>.
  5. Re-run make test_suite from the root of the Catala repository to check that everything passes.
  6. That's it, you've fixed the Catala test suite to adapt for changes in the language.

If a compiler change causes a lot of regressions (error message formatting changes for instance), you can mass-reset the expected the outputs with CLERK_OPTS=--reset make test_suite. Caution: use at your own risk, regressions should be fixed one by one in general.