foundry-rs / foundry-rs/forge-std
bug(StdStorage): finds() returns different results in test vs coverage
- Dominant language
- Solidity
- Stars
- 1.1k
- Forks
- 520
- Avg merge
- 3d 13h
- Merged PRs (30d)
- 9
Description
https://github.com/foundry-rs/forge-std/blob/37a37ab73364d6644bfe11edf88a07880f99bd56/src/StdStorage.sol#L50C27-L50C32
I ran into a problem lately regarding to `stdStorage.finds`, where I used a TransparentUpgradeableProxy contract in a project, and then run `finds` on the implementation contract which is the standard procedure, and I found the slot I wanted in my unit test, but what puzzled me was that the `forge coverage` failed because the slot couldn't be found. Then I dug deeper into the source code of `StdStorage`, and I found that during test phase, the lengths of the reads `(bytes32[] memory reads,) = vm.accesses(address(who));` was 1 while the length was 4 during the coverage phase. and all 4 elements in `reads` array during coverage phase are exactly the same. So I'm wondering if the `reads` array should be deduped and if this is a potential bug?
Contributor guide
Assessment
This issue has not been assessed yet.