You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Echidna should find a call sequence that falsifies `echidna_sometimesfalse` and should be unable to find a falsifying input for `echidna_alwaystrue`.
56
56
57
+
### Testing modes
58
+
59
+
The example above uses the default **property** mode, but Echidna supports several testing modes, configured via `testMode` in the config file or `--test-mode` on the CLI:
60
+
61
+
***`property`** (default): Test `echidna_`-prefixed functions that return `bool`.
62
+
***`assertion`**: Detect assertion failures from `assert()` and Foundry's `assertX` helpers (`assertTrue`, `assertEq`, etc.).
63
+
***`foundry`**: Run Foundry-style `test`-prefixed unit tests and `invariant_`-prefixed stateful invariants.
***`optimization`**: Maximize the return value of `echidna_`-prefixed functions that return `int256` (uses the same configurable prefix as property mode).
66
+
***`exploration`**: Collect coverage without checking properties.
67
+
57
68
### Collecting and visualizing coverage
58
69
59
70
After finishing a campaign, Echidna can save a coverage maximizing **corpus** in a special directory specified with the `corpusDir` config option. This directory will contain two entries: (1) a directory named `coverage` with JSON files that can be replayed by Echidna and (2) a plain-text file named `covered.txt`, a copy of the source code with coverage annotations.
@@ -143,8 +154,8 @@ Transaction = {
143
154
144
155
`Coverage` is a dict describing certain coverage-increasing calls. These interfaces are
145
156
subject to change to be slightly more user-friendly at a later date. `testType`
146
-
will either be `property` or `assertion`, and `status` always takes on either
147
-
`fuzzing`, `shrinking`, `solved`, `passed`, or `error`.
157
+
will be one of `property`, `assertion`, `optimization`, `exploration`, or `call`,
158
+
and `status` always takes on either `fuzzing`, `shrinking`, `solved`, `passed`, or `error`.
0 commit comments