defi-wonderland / smock

The Solidity mocking library
MIT License
319 stars 40 forks source link

feat: Make smock work with the EDR-powered version of Hardhat #195

Closed fvictorio closed 7 months ago

fvictorio commented 7 months ago

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.

fvictorio commented 7 months ago

Thanks a lot for reviewing this @0xOneTony!

I think I applied all your suggestions, and I also added a note in the readme. Let me know if you'd rather have that in a different place or with a different phrasing.

I also updated typescript because I was getting a weird compilation error, which I think was related to bumping the version of @types/node.