feat: Scrub/ignore by predicate function #1356
Open
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.
I'm trying to introduce Verify to our large existing code base and one area of friction is that we have thousands upon thousands of dynamic properties (auto-generated IDs) that we want to ignore or scrub, which all follow a similar pattern, they all end in
ID
. While it's possible to use reflection at startup to find all those properties and Scrub/Ignore them one by one, it's a bit wasteful as only a small subset of them will ever pass through a call toVerify
, we have to pre-emptively ignore them ahead of time. For this, I think the ability to provide a callback function that gets called at the same point the normal "is property ignore/scrub dictionary" is a good approach. The callback can be based on either the string name of the property (or anything that's not a property like a dictionary key) or on theMemberInfo
of the property if you need more information to determine if the property should be ignored or not.I did not include benchmarks as I hope from the implementation it should be clear that there shouldn't be any performance impact from this, especially not if you don't opt-in to this feature, but let me know if you must have them.
Todo:
This is based on the discussion here:
https://github.com/orgs/VerifyTests/discussions/1345