After downloading the source code, I did 1) dune upgrade, 2) replaced ~cmp by ~compare in one place, 3) removed quick from test/dune because of deprecated: Gen.recursive.
Then, dune runtest did not generate any files or errors. I modified values inside “[%expect {| … |}]”, it did not raise any error either. Here is test/dune:
This is a rather old way to make dune run expect tests. I would delete the executable and alias stanzas, and add the following line to the library stanza:
(inline_tests)
Perhaps (library_flags -linkall) is also no longer necessary, but I’m not sure.
Wow, that’s bizarre. I tried to reproduce and was able to do so. Using dune runtest --display=verbose, I even got proof that the tests were running but they passed for some reason:
Ah, no, I found it. sexpr.ml calls let () = Ppx_inline_test_lib.Runtime.exit () at the end, which I think it should not do. It was causing the test runner to exit prematurely. Remove that line and the expect tests work fine for me.