Fix hardhat_reset (#667) and add unit tests #681
Merged
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.
Co-authored-by: Andres Adjimann [email protected]
Have written a test for #667 but it fails. My expectation is that given a contract with 2 simple functions I can:
... and have 100% line coverage. Instead I see this:
In the hardhat code it looks like the hardhat node is destroyed and recreated on each reset event. For solidity-coverage to re-attach a step listener to its vm it's important that we get a reference to the new node object. Have found this to be impossible so far.
Event listeners attached to the new (or is it old for some reason?) vm never fire.
Note: I've slightly modified the logic in the new PR to use an
env
scoped reference to the network provider but the incorrect behavior exists for #667's approach as well. Have also tried:setTimeout
in various places to make sure I'm not running into an event related race condition.nomiclabsUtils.setupHardhatNetwork(env, api, ui)
in the reset event call back