testing
There are many test points already defined in language/src/tests/scala using ScalaTest. In general, any change in language should be done in TDD style with tests cases written before code to make that test case pass. This is how the parser and validator were created. That tradition needs to continue.
In language/src/test/input
there are a variety of tests with .check
files
that have the same basename as the .riddl
file. The .check
files have
the error output that is expected from validating the correctly parsing . riddl
file. This way we can identify changes in error and messages. These
tests are performed by the CheckMessagesTest.scala
test suite which will
read all the riddl files in test/input/check and check them for validity and
compare the output messages to what’s in the .check
file. If there is no
corresponding .check
file then the .riddl
file is expected to validate
cleanly with no errors and no warnings.
This is where most regression tests should be added. The input should be whittled down to the smallest set of definitions that cause a problem to occur, and then it should succeed after the regression is fixed.
In examples/src/test/scala
there is a CheckExamplesSpec.scala
which runs
the parser and validator on the examples in examples/src/riddl
. Each
sub-directory there is a separate example. They are expected to parse and
validate cleanly without issue