Description
Problems with the current solution (update_suite.rb):
- setup: dependency on ruby and
gem install parallel
- another programming language for beginners
- the code is hard to understand
- argument parsing is very manual, only fixed order works
- regtest.sh (which allows passing extra arguments for debugging individual cases) should be combined
- it's not very fast
- with
dune runtest
it could only re-run only things that changed (also it could keep preprocessed input, syntax-highlighted source etc.)
- with
- it's not very flexible
- if we do checks in goblint, we could better handle precision changes
- we use comments to check results:
analyzer/scripts/update_suite.rb
Lines 385 to 386 in 6ebe816
Original comment for this issue was regarding the last point.
@jerhard and I were tossing this back and forth over lunch and something we discussed at some point was using something along the lines of __goblint_check(a == 42, __GOBLINT_UNKNOWN)
or __goblint_check(x ==17, __GOBLINT_SUCCESS)
in the regression tests instead of having an assert(...) //UNKNOWN
.
Then, the expected result is immediately obvious to Goblint itself, and Goblint can either output things for all asserts or only those where something failed without having to somehow do a regex on the comments.
Also, once could use the syntactic search to identify those places where __goblint_check(...)
is called that are unreachable and then also warn there that the assert is unreachable. (These are the cases where warnings are missing in ./regtest.sh
vs the ruby script).
The question that is still open is how to integrate warnings different from asserts into this setting.
Opinions?
Originally posted by @michael-schwarz in #286 (comment)