Skip to content

Commit 6c02c06

Browse files
committed
Polish contribution
See #3264
1 parent e575ea3 commit 6c02c06

File tree

4 files changed

+20
-17
lines changed

4 files changed

+20
-17
lines changed

documentation/src/docs/asciidoc/release-notes/release-notes-5.10.0-M1.adoc

+6-3
Original file line numberDiff line numberDiff line change
@@ -52,9 +52,12 @@ repository on GitHub.
5252

5353
==== Bug Fixes
5454

55-
* The `{displayName}` placeholder of `@ParameterizedTest` is no longer parsed during the
56-
evaluation of the `MessageFormat`, now `@DisplayName` and Kotlin method names can contain
57-
single apostrophes and `MessageFormat` elements, such as `{data}`.
55+
* The `{displayName}` placeholder for `@ParameterizedTest` invocation names is no longer
56+
parsed using `java.text.MessageFormat`. Consequently, any text in the display name of
57+
the `@ParameterizedTest` method will be included unmodified in the invocation display
58+
name. For example, Kotlin method names and custom display names configured via
59+
`@DisplayName` can now contain apostrophes (`'`) as well as text resembling
60+
`MessageFormat` elements such as `{0}` or `{data}`.
5861

5962
==== Deprecations and Breaking Changes
6063

junit-jupiter-params/src/main/java/org/junit/jupiter/params/ParameterizedTestNameFormatter.java

+3-3
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@
3131
class ParameterizedTestNameFormatter {
3232

3333
private static final char ELLIPSIS = '\u2026';
34-
private static final String DISPLAY_NAME_TEMPORARY_PLACEHOLDER = "__DISPLAY_NAME__";
34+
private static final String TEMPORARY_DISPLAY_NAME_PLACEHOLDER = "~~~JUNIT_DISPLAY_NAME~~~";
3535

3636
private final String pattern;
3737
private final String displayName;
@@ -63,7 +63,7 @@ private String formatSafely(int invocationIndex, Object[] arguments) {
6363
MessageFormat format = new MessageFormat(pattern);
6464
Object[] humanReadableArguments = makeReadable(format, namedArguments);
6565
String formatted = format.format(humanReadableArguments);
66-
return formatted.replace(DISPLAY_NAME_TEMPORARY_PLACEHOLDER, this.displayName);
66+
return formatted.replace(TEMPORARY_DISPLAY_NAME_PLACEHOLDER, this.displayName);
6767
}
6868

6969
private Object[] extractNamedArguments(Object[] arguments) {
@@ -74,7 +74,7 @@ private Object[] extractNamedArguments(Object[] arguments) {
7474

7575
private String prepareMessageFormatPattern(int invocationIndex, Object[] arguments) {
7676
String result = pattern//
77-
.replace(DISPLAY_NAME_PLACEHOLDER, DISPLAY_NAME_TEMPORARY_PLACEHOLDER)//
77+
.replace(DISPLAY_NAME_PLACEHOLDER, TEMPORARY_DISPLAY_NAME_PLACEHOLDER)//
7878
.replace(INDEX_PLACEHOLDER, String.valueOf(invocationIndex));
7979

8080
if (result.contains(ARGUMENTS_WITH_NAMES_PLACEHOLDER)) {

junit-jupiter-params/src/test/java/org/junit/jupiter/params/ParameterizedTestNameFormatterTests.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,7 @@ void formatsDisplayName() {
6161
}
6262

6363
@Test
64-
void formatsDisplayNameWithApostrophe() {
64+
void formatsDisplayNameContainingApostrophe() {
6565
String displayName = "display'Zero";
6666
var formatter = formatter(DISPLAY_NAME_PLACEHOLDER, "display'Zero");
6767

junit-jupiter-params/src/test/kotlin/ParameterizedTestNameFormatterIntegrationTests.kt

+10-10
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ class ParameterizedTestNameFormatterIntegrationTests {
1616

1717
@ValueSource(strings = ["foo", "bar"])
1818
@ParameterizedTest
19-
fun `implicit'Name`(param: String, info: TestInfo) {
19+
fun defaultDisplayName(param: String, info: TestInfo) {
2020
if (param.equals("foo")) {
2121
assertEquals("[1] foo", info.displayName)
2222
} else {
@@ -26,7 +26,7 @@ class ParameterizedTestNameFormatterIntegrationTests {
2626

2727
@ValueSource(strings = ["foo", "bar"])
2828
@ParameterizedTest(name = "{0}")
29-
fun `zero'Only`(param: String, info: TestInfo) {
29+
fun `1st argument`(param: String, info: TestInfo) {
3030
if (param.equals("foo")) {
3131
assertEquals("foo", info.displayName)
3232
} else {
@@ -36,27 +36,27 @@ class ParameterizedTestNameFormatterIntegrationTests {
3636

3737
@ValueSource(strings = ["foo", "bar"])
3838
@ParameterizedTest(name = "{displayName}")
39-
fun `displayName'Only`(param: String, info: TestInfo) {
40-
assertEquals("displayName'Only(String, TestInfo)", info.displayName)
39+
fun `it's an {enigma} '{0}'`(@Suppress("UNUSED_PARAMETER") param: String, info: TestInfo) {
40+
assertEquals("it's an {enigma} '{0}'(String, TestInfo)", info.displayName)
4141
}
4242

4343
@ValueSource(strings = ["foo", "bar"])
4444
@ParameterizedTest(name = "{displayName} - {0}")
45-
fun `displayName'Zero`(param: String, info: TestInfo) {
45+
fun `displayName and 1st 'argument'`(param: String, info: TestInfo) {
4646
if (param.equals("foo")) {
47-
assertEquals("displayName'Zero(String, TestInfo) - foo", info.displayName)
47+
assertEquals("displayName and 1st 'argument'(String, TestInfo) - foo", info.displayName)
4848
} else {
49-
assertEquals("displayName'Zero(String, TestInfo) - bar", info.displayName)
49+
assertEquals("displayName and 1st 'argument'(String, TestInfo) - bar", info.displayName)
5050
}
5151
}
5252

5353
@ValueSource(strings = ["foo", "bar"])
5454
@ParameterizedTest(name = "{0} - {displayName}")
55-
fun `zero'DisplayName`(param: String, info: TestInfo) {
55+
fun `1st 'argument' and displayName`(param: String, info: TestInfo) {
5656
if (param.equals("foo")) {
57-
assertEquals("foo - zero'DisplayName(String, TestInfo)", info.displayName)
57+
assertEquals("foo - 1st 'argument' and displayName(String, TestInfo)", info.displayName)
5858
} else {
59-
assertEquals("bar - zero'DisplayName(String, TestInfo)", info.displayName)
59+
assertEquals("bar - 1st 'argument' and displayName(String, TestInfo)", info.displayName)
6060
}
6161
}
6262
}

0 commit comments

Comments
 (0)