Skip to content

Commit 8fb8d8f

Browse files
Merge pull request #512 from goblint/better_interaticve_tests
Describe incremental tests in developer docs
2 parents 3a6491a + 97f4a55 commit 8fb8d8f

File tree

1 file changed

+22
-0
lines changed

1 file changed

+22
-0
lines changed

docs/developer-guide/testing.md

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,28 @@ gobopt='--set exp.privatization write+lock' ./scripts/update_suite.rb
2727
* Add parameters to a regression test in the first line: `// PARAM: --set dbg.debug true`
2828
* Annotate lines inside the regression test with comments: `arr[9] = 10; // WARN`
2929

30+
## Incremental tests
31+
The incremental tests are regression tests that are first run with the option `incremental.save` and then again
32+
incrementally (activating the option `incremental.load`) with some changes to the program or refinements in the
33+
configuration. The respective `asserts` and expected results are checked in both runs.
34+
35+
### Running
36+
The incremental tests can be run with `./scripts/update_suite.rb -i`.
37+
38+
### Writing
39+
An incremental test case consists of three files with the same file name: the `.c` file with the initial program, a
40+
`.json` file for the initial configuration and a `.patch` file with the changes for the incremental run. Asserts and
41+
expected results are encoded in the program as for other regression tests.
42+
43+
The patch file can contain changes to multiple files. This allows for modifications of code, asserts or expected results
44+
in the program file as well as refinements in the configuration for the incremental run. A suitable patch can be created
45+
with:
46+
```
47+
git diff --no-prefix relative/path/to/test.c relative/path/to/test.json > relative/path/to/test.patch
48+
```
49+
50+
The comparison input and the metadata in the patch headers are not necessary and can be removed.
51+
3052
## Domain tests
3153
Property-based testing (a la QuickCheck) is used to test some domains (`Lattice.S` implementations) for their lattice properties.
3254
On integer domains the integer operations are also tested for being a valid abstraction of sets of integers.

0 commit comments

Comments
 (0)