catala/compiler/surface
Louis Gesbert 45b0feaf20
Generate tests reports from 'clerk test'
This is a proper replacement for the previous shell-based placeholder hack.

Here is a summary:

- `clerk runtest` (normally run by ninja) is much extended:
  * besides generating the test@out file, it checks individual tests for success
    and can write a report file containing their status, and the positions for
    their (expected/current) outputs (this uses `Marshal`)
  * it now handles out-tests directly in addition to inline-tests, for which
    it generates the separate output file ; they are included in the report

- ninja is now tasked with building all the test reports (which shouldn't fail);
  for directories, individual reports are concatenated (as before).
  Removing intermediate report rules, and out-test rules means that the ninja
  file is much simplified.

- then, clerk takes back control, reads the final reports and formats them in a
  user-friendly way. Printing the reports may imply running `diff` internally.
  In particular, the commands to easily reproduce each test are provided.
  Resetting the test results if required is also done directly by clerk, at this
  stage.

A few switches are available to customise the output, but I am waiting for some
feedback before deciding what to make available from the CLI.

The `clerk report` command is available to manually explore test reports, but
normally the processing is done directly at the end of `clerk test` (i.e. ninja
will no longer call that command)
2024-06-19 16:10:26 +02:00
..
.ocamlformat-ignore Workaround some ocamlformat crashes 2022-05-11 16:21:07 +02:00
ast.ml Pass the "external module" info along passes 2024-05-28 11:43:50 +02:00
dune Remove direct dependency towards dates_calc from the compiler 2024-05-02 16:30:46 +02:00
fill_error_tokens.py Big renaming and dir reorg 2021-06-21 11:39:06 +02:00
fill_positions.ml Simplify visitors ppx annotations 2023-08-04 11:43:16 +02:00
fill_positions.mli Big reformatting 2022-03-08 15:03:14 +01:00
lexer_common.ml Fix lexing of verbatim blocks 2024-05-16 15:46:39 +02:00
lexer_common.mli Fix lexing of verbatim blocks 2024-05-16 15:46:39 +02:00
lexer_en.cppo.ml Support for structure updates 2024-04-12 17:17:48 +02:00
lexer_en.mli Big reformatting 2022-03-08 15:03:14 +01:00
lexer_fr.cppo.ml Support for structure updates 2024-04-12 17:17:48 +02:00
lexer_fr.mli Big reformatting 2022-03-08 15:03:14 +01:00
lexer_pl.cppo.ml Support for structure updates 2024-04-12 17:17:48 +02:00
lexer_pl.mli Big reformatting 2022-03-08 15:03:14 +01:00
lexer.cppo.ml Fix lexing of verbatim blocks 2024-05-16 15:46:39 +02:00
parser_driver.ml Generate tests reports from 'clerk test' 2024-06-19 16:10:26 +02:00
parser_driver.mli Generate tests reports from 'clerk test' 2024-06-19 16:10:26 +02:00
parser_errors.mli Big reformatting 2022-03-08 15:03:14 +01:00
parser.messages Support for direct tuple member access 2024-04-13 09:37:03 +02:00
parser.mly More precise positions for operators throughout 2024-04-30 16:35:08 +02:00
print.ml Rework and normalise the Marked interface 2023-05-17 17:37:00 +02:00
print.mli Big reformatting 2022-03-08 15:03:14 +01:00
surface.mld Fix most doc errors 2023-06-02 17:17:45 +02:00
tokens.mly Support for structure updates 2024-04-12 17:17:48 +02:00