feat: Make smock work with the EDR-powered version of Hardhat #195
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.
We are going to release a new version of Hardhat this week that significantly changes its internals. Since Smock relies on several internal APIs, it will stop working with it. This PR makes the necessary changes for it to work.
This version of Smock won't work with previous versions of Hardhat. We've updated the peer dependency accordingly. Adding this change in a way that supported both new and old versions of Hardhat was possible, but too complex for the time we had to work on this.
The main change here is that, instead of taking a rxjs stream of call results and modifying their values, this version uses a callback that is executed for each call response. The callback can return
undefined
to leave the answer as is, or return a modified version of it. The sandbox uses the information about the call (the recipient address and the calldata) to figure out which mocked function to "ask" for the mocked answer.