Skip to content

Commit b1cfe21

Browse files
Escape % in when formatting differences.
1 parent bef7120 commit b1cfe21

2 files changed

Lines changed: 34 additions & 3 deletions

File tree

src/main/java/org/assertj/core/error/ShouldBeEqualByComparingFieldByFieldRecursively.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@ public static ErrorMessageFactory shouldBeEqualByComparingFieldByFieldRecursivel
6060
" <%s>%n" +
6161
"when recursively comparing field by field, but found the following " + differencesCount +
6262
"%n" +
63-
differencesDescription + "%n" +
63+
escapePercent(differencesDescription) + "%n" +
6464
"%n"+
6565
"The recursive comparison was performed with this configuration:%n" +
6666
recursiveComparisonConfigurationDescription, // don't use %s to avoid AssertJ formatting String with ""

src/test/java/org/assertj/core/error/ShouldBeEqualByComparingFieldByFieldRecursively_create_Test.java

Lines changed: 33 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -247,8 +247,7 @@ public void should_show_one_difference() {
247247
nullName,
248248
differences,
249249
recursiveComparisonConfiguration,
250-
REPRESENTATION)
251-
.create(new TextDescription("Test"), REPRESENTATION);
250+
REPRESENTATION).create(new TextDescription("Test"), REPRESENTATION);
252251
// @format:on
253252
// THEN
254253
assertThat(message).isEqualTo(format("[Test] %n" +
@@ -266,6 +265,38 @@ public void should_show_one_difference() {
266265
CONFIGURATION_PROVIDER.representation().toStringOf(recursiveComparisonConfiguration)));
267266
}
268267

268+
@Test
269+
public void should_show_difference_with_percentage() {
270+
// GIVEN
271+
final Name actualName = new Name("%%Ma%gi%", "%Johnson");
272+
final Name nullName = new Name(null, "%Johnson");
273+
RecursiveComparisonConfiguration recursiveComparisonConfiguration = new RecursiveComparisonConfiguration();
274+
recursiveComparisonConfiguration.setIgnoreAllActualNullFields(true);
275+
List<ComparisonDifference> differences = computeDifferences(actualName, nullName, recursiveComparisonConfiguration);
276+
// WHEN
277+
// @format:off
278+
String message = shouldBeEqualByComparingFieldByFieldRecursively(actualName,
279+
nullName,
280+
differences,
281+
recursiveComparisonConfiguration,
282+
REPRESENTATION).create(new TextDescription("Test"), REPRESENTATION);
283+
// @format:on
284+
// THEN
285+
assertThat(message).isEqualTo(format("[Test] %n" +
286+
"Expecting:%n" +
287+
" <Name[first='%%%%Ma%%gi%%', last='%%Johnson']>%n" +
288+
"to be equal to:%n" +
289+
" <Name[first='null', last='%%Johnson']>%n" +
290+
"when recursively comparing field by field, but found the following difference:%n" +
291+
"%n" +
292+
"field/property 'first' differ:%n" +
293+
"- actual value : \"%%%%Ma%%gi%%\"%n" +
294+
"- expected value : null%n" +
295+
"%n" +
296+
"The recursive comparison was performed with this configuration:%n%s",
297+
CONFIGURATION_PROVIDER.representation().toStringOf(recursiveComparisonConfiguration)));
298+
}
299+
269300
private List<ComparisonDifference> computeDifferences(Object actual, Object expected,
270301
RecursiveComparisonConfiguration recursiveComparisonConfiguration) {
271302
return new RecursiveComparisonDifferenceCalculator().determineDifferences(actual, expected, recursiveComparisonConfiguration);

0 commit comments

Comments
 (0)