good first issue
Description
We found recently a failing job in CI which isn't reproducible if the job is retried. If we could collect the .bfq files of tests which fail in CI, we might have a better chance to reproduce them either locally or in CI.
.bfq files aren't the most portable but are the fastest to write, and at the moment are the only files guaranteed to be accepted as inputs to LF. We would have to see how much of an impact in test time they produce.
There are at least two possible solutions:
- I think the ideal would be to dump the
.bfqfiles only when there is a verification error, and only if some flag (to be implemented) is enabled. When tests are expected to fail, we would need to provide a reversed flag, that only produces.bfqfiles if verification succeeds. - The next best would be to produce only
.bfqfiles on all tests, no matter if they failed or not. LH has a--saveflag, but it produces a few other files besides.bfq. One task here would be to add a new flag to LH and LF to only produce.bfqs.
https://github.com/ucsd-progsys/liquidhaskell/issues/2020: Implements --save-bfq-on-error in liquid-fixpoint
Other pieces necessary for this issue are:
- similar flag for liquid haskell.
- simliar flag for liquid fixpoint and liquid haskell that produces bfq files on success (to use for negative tests).
- using the flags in CI in the liquid haskell repo.