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.
What I did
Exception handling seems to be failing in a few cases with Ganache 7, which is now the latest stable version.
This seems a bit hacky overall but does seem to do the job for our fairly large test suite, so hopefully, it should be better than nothing. It should also not introduce any regression since most of the additions only occur if the logic already in place failed to handle the exception.
How I did it
ValueError
when a contracts revert so we manually create aVirtualMachineError
in Brownie when the receipt status is0
otherwise, we have an attribute error in Brownie because the exception isNone
. This works for almost everything but we lose the PC and a few other nice-to-have features. I think that the longer-term fix would be either in Ganache (keep a backward-compatible format) or in web3py (support new Ganache response format)VirtualMachineError
to throw aValueError
, breakingbrownie.reverts
. When this is the case, we try to see if we can still find the program counter andrevert_type
before throwing aValueError
How to verify it
A simple script running on ganache v7 should do the trick.
This fails with the current version of Brownie but works with this patch.
Checklist