EqualExportedValues: Support nested structs and time.Time fields #1373
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.
Summary
Updates the new
EqualExportedValues
function to support comparing nested struct fields andtime.Time
values. The function explicitly no longer supports recursive data structures (see this since removed test case for example).Changes
#1309 introduced
EqualExportedValues
. I was looking to add support for comparing structs containingtime.Time
fields, and this seemed like an ideal function to adjust for that since:time.Time.Equal
is likely more in line with the desired behavior.EqualExportedValues
is not yet in a tagged release, and so this behavior change should not affect many real users.assert.Equal
, but that task was found to be more complicated (for example, see Fix compairsion of struct containing time.Time. #985). Adding this support to onlyEqualExportedValues
is more easily achieved.Motivation
There is currently no good method for comparing structs that contain
time.Time
fields that don't have matching timezones or monotonic clock readings.Example Usage:
Related issues
Potentially closes #984, assuming we're okay with requiring use of
EqualExportedValues
to compare structs withtime.Time
fields and don't expectassert.Equal
to handle that.