Truncate very long objects in test failure messages #1646
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
Truncate object representations in test failure output messages that would cause the message to be too long to scan.
This is a different approach than that in #1559. I feel this is more appropriate because is it safer. The other approach has the potential to allocate excessive memory and to print excessive output to the console.
Changes
truncatingFormat
function to truncate potentially long objects in assertions which format expected/actual values in full.truncatingFormat
.truncatingFormat
by almost half to support failure messages showing both long expected and long actual values on the same line.NotSubset
from%q
to%#v
to match that ofSubset
.Motivation
So that people don't see no output in the failure message when making assertions (such as
Len
) against very long objects.Related issues
Closes #1525