mock: avoid data races in Arguments.Diff #1598
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.
Fixes a concurrency issue that would lead to testify mocks producing data races detected by go test -race. These data races would occur whenever a mock pointer argument was concurrently modified. The reason being that
Arguments.Diff
uses the%v
format specifier to get a presentable string for the argument. This also traverses the pointed-to data structure, which would lead to the data race.It should be noted that it is heavily inspired by #1229, but since that PR hasn't seen any updates in over a year I decided to start fresh.
Summary
Avoids testify mocks causing data races for (concurrently accessed) pointer arguments when running
go test -race
.Changes
Arguments.Diff
now uses%p
to produce a "presentable string" for pointers rather than%v
, since the latter traverses the pointed to data structure.Motivation
We need to test our code for race conditions with go test -race, and we cannot have testify be the offender of data races.
Related issues
#1597