fix(cheatcodes): clarify vm.expectRevert error message #8463
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Motivation
One of my tests which called
vm.expectRevert()
was failing withFAIL. Reason: call did not revert as expected
, even though it was still reverting (with the expected reason) when I removed the call tovm.expectRevert()
; for a while, I couldn't figure out why.It took me a bit of time before realizing that the docs specify that
vm.expectRevert()
must be placed immediately before the call that is expected to revert. Part of my confusion was that I had another test that had a call tovm.expectRevert()
followed byvm.prank()
, and calls to other cheatcodes are ignored (so because that test was working, I thought I could just putvm.expectRevert()
at the top of the test).https://book.getfoundry.sh/cheatcodes/expect-revert
Solution
I updated the error message in the
vm.expectRevert()
cheatcode implementation to specify that failures are because the next call did not revert as expected. This wording also more closely matches the emphasis in the Foundry book docs.