mirror of
https://github.com/CatalaLang/catala.git
synced 2024-11-14 03:14:55 +03:00
.. | ||
test_arithmetic/bad | ||
test_array | ||
test_bool | ||
test_date | ||
test_dec/good | ||
test_default/bad | ||
test_enum | ||
test_exception | ||
test_func | ||
test_literate/good | ||
test_metadata/good | ||
test_money | ||
test_name_resolution/good | ||
test_scope | ||
test_struct | ||
Makefile | ||
README.md |
Catala test suite
This folder contains Catala source files designed to test the features of the language.
It uses make pass_tests
to launch tests and compare the test terminal output
with an expected output.
Expected outputs are stored using the convention
<name_of_test>.catala_<language>.<name_of_scope>.out
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
- Create a new test file in
foo/{good,bad}/bar.catala_<language>
(pick the right directory and an informative name for your test) - Write your test, and pick a toplevel scope
A
to run. - From this directory, launch
make foo/{good,bad}/bar.catala_<language>.A.run
to get the output of your test. - When you're happy with the output, launch
make foo/{good,bad}/bar.catala_<language>.A.in
. This will record the content of the output of your test into a file. - Check that your test pass with
make foo/{good,bad}/output/bar.catala_<language>.A.out
. - That's it, you've added a new test for the Catala language!
Workflow for fixing regressions
- Run
make
, if a test fails you should see something like[FAIL foo/{good,bad}/output/bar.catala_<language>.A]
. - Compare the computed and expected output with
make foo/{good,bad}/output/bar.catala_<language>.A.out
. - Debug the compiler and/or the test, running
make foo/{good,bad}/bar.catala_<language>.A.run
periodically to check the output of Catala on the test case. - When you're finished debugging, record the new test output with
make foo/{good,bad}/bar.catala_<language>.A.in
. - Re-run
make
to check that everything passes. - 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 make reset_tests
.
Caution: use at your own risk, regressions should be fixed one by one in
general.