You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Merge bitcoin/bitcoin#30906: refactor: prohibit direct flags access in CCoinsCacheEntry and remove invalid tests
50cce20 test, refactor: Compact ccoins_access and ccoins_spend (Lőrinc)
0a159f0 test, refactor: Remove remaining unbounded flags from coins_tests (Lőrinc)
c0b4b2c test: Validate error messages on fail (Lőrinc)
d5f8d60 test: Group values and states in tests into CoinEntry wrappers (Lőrinc)
ca74aa7 test, refactor: Migrate GetCoinsMapEntry to return MaybeCoin (Lőrinc)
15aaa81 coins, refactor: Remove direct GetFlags access (Lőrinc)
6b73369 coins, refactor: Assume state after SetClean in AddFlags to prevent dangling pointers (Lőrinc)
fc8c282 coins, refactor: Make AddFlags, SetDirty, SetFresh static (Lőrinc)
cd0498e coins, refactor: Split up AddFlags to remove invalid states (Lőrinc)
Pull request description:
Similarly to bitcoin/bitcoin#30849, this cleanup is intended to de-risk bitcoin/bitcoin#30673 (comment) by simplifying the coin cache public interface.
`CCoinsCacheEntry` provided general access to its internal flags state, even though, in reality, it could only be `clean`, `fresh`, `dirty`, or `fresh|dirty` (in the follow-up, we will remove `fresh` without `dirty`).
Once it was marked as `dirty`, we couldn’t set the state back to clean with `AddFlags(0)`—tests explicitly checked against that.
This PR refines the public interface to make this distinction clearer and to make invalid behavior impossible, rather than just checked by tests. We don't need extensive access to the internals of `CCoinsCacheEntry`, as many tests were simply validating invalid combinations in this way.
The last few commits contain significant test refactorings to make `coins_tests` easier to change in follow-ups.
ACKs for top commit:
andrewtoth:
Code Review ACK 50cce20
laanwj:
Code review ACK 50cce20
ryanofsky:
Code review ACK 50cce20. Looks good! Thanks for the followups.
Tree-SHA512: c0d65f1c7680b4bb9cd368422b218f2473c2ec75a32c7350a6e11e8a1601c81d3c0ae651b9f1dae08400fb4e5d43431d9e4ccca305a718183f9a936fe47c1a6c
0 commit comments