Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

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

Merged
merged 1 commit into from
Mar 4, 2024

Conversation

fvictorio
Copy link
Collaborator

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 fvictorio requested a review from a team as a code owner February 27, 2024 08:49
@fvictorio fvictorio changed the title Make smock work with the upcoming version of Hardhat feat: Make smock work with the EDR-powered version of Hardhat Feb 27, 2024
Copy link
Member

@0xOneTony 0xOneTony left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is great, thank you! 🔥 You mentioned this won't work with previous versions of Hardhat, maybe we should also disclose this in the README.

src/logic/programmable-function-logic.ts Outdated Show resolved Hide resolved
src/logic/programmable-function-logic.ts Outdated Show resolved Hide resolved
src/logic/programmable-function-logic.ts Outdated Show resolved Hide resolved
@fvictorio
Copy link
Collaborator Author

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.

0xOneTony
0xOneTony previously approved these changes Mar 4, 2024
Copy link
Member

@0xOneTony 0xOneTony left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM! 🚀

@0xGorilla 0xGorilla merged commit 396fa41 into defi-wonderland:dev Mar 4, 2024
4 checks passed
0xGorilla added a commit that referenced this pull request Mar 5, 2024
feat: make smock work with the EDR-powered version of Hardhat (#195)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants