diff --git a/junit-jupiter-params/src/main/java/org/junit/jupiter/params/provider/CsvFileSource.java b/junit-jupiter-params/src/main/java/org/junit/jupiter/params/provider/CsvFileSource.java index b51f27b61637..28a1bf469c77 100644 --- a/junit-jupiter-params/src/main/java/org/junit/jupiter/params/provider/CsvFileSource.java +++ b/junit-jupiter-params/src/main/java/org/junit/jupiter/params/provider/CsvFileSource.java @@ -225,6 +225,9 @@ * Controls whether leading and trailing whitespace characters of unquoted * CSV columns should be ignored. * + *
Whitespace refers to characters with Unicode code points less than + * or equal to {@code U+0020}, as defined by {@link String#trim()}. + * *
Defaults to {@code true}. * * @since 5.8 diff --git a/junit-jupiter-params/src/main/java/org/junit/jupiter/params/provider/CsvReaderFactory.java b/junit-jupiter-params/src/main/java/org/junit/jupiter/params/provider/CsvReaderFactory.java index 24420b9eef51..004982e7ab02 100644 --- a/junit-jupiter-params/src/main/java/org/junit/jupiter/params/provider/CsvReaderFactory.java +++ b/junit-jupiter-params/src/main/java/org/junit/jupiter/params/provider/CsvReaderFactory.java @@ -165,7 +165,7 @@ public String modify(long unusedStartingLineNumber, int unusedFieldIdx, boolean if (!quoted && field.isBlank()) { return NULL_MARKER; } - String modifiedField = (!quoted && ignoreLeadingAndTrailingWhitespaces) ? field.strip() : field; + String modifiedField = (!quoted && ignoreLeadingAndTrailingWhitespaces) ? field.trim() : field; if (nullValues.contains(modifiedField)) { return NULL_MARKER; } diff --git a/junit-jupiter-params/src/main/java/org/junit/jupiter/params/provider/CsvSource.java b/junit-jupiter-params/src/main/java/org/junit/jupiter/params/provider/CsvSource.java index 295add81b394..b8dd46cd5b61 100644 --- a/junit-jupiter-params/src/main/java/org/junit/jupiter/params/provider/CsvSource.java +++ b/junit-jupiter-params/src/main/java/org/junit/jupiter/params/provider/CsvSource.java @@ -286,6 +286,9 @@ * Controls whether leading and trailing whitespace characters of unquoted * CSV columns should be ignored. * + *
Whitespace refers to characters with Unicode code points less than + * or equal to {@code U+0020}, as defined by {@link String#trim()}. + * *
Defaults to {@code true}. * * @since 5.8 diff --git a/jupiter-tests/src/test/java/org/junit/jupiter/params/provider/CsvArgumentsProviderTests.java b/jupiter-tests/src/test/java/org/junit/jupiter/params/provider/CsvArgumentsProviderTests.java index 4e6eab77eec9..7fb60bc08063 100644 --- a/jupiter-tests/src/test/java/org/junit/jupiter/params/provider/CsvArgumentsProviderTests.java +++ b/jupiter-tests/src/test/java/org/junit/jupiter/params/provider/CsvArgumentsProviderTests.java @@ -126,6 +126,17 @@ void trimsTrailingSpaces() { assertThat(arguments).containsExactly(new Object[][] { { "1", "" }, { "2", "" }, { "3", "" }, { "4", "" } }); } + @Test + void trimsSpacesUsingStringTrim() { + // \u0000 (null) removed by trim(), preserved by strip() + // \u00A0 (non-breaking space) preserved by trim(), removed by strip() + var annotation = csvSource().lines("\u0000foo,\u00A0bar", "\u0000' foo',\u00A0' bar'").build(); + + var arguments = provideArguments(annotation); + + assertThat(arguments).containsExactly(array("foo", "\u00A0bar"), array(" foo", "\u00A0' bar'")); + } + @Test void ignoresLeadingAndTrailingSpaces() { var annotation = csvSource().lines("1,a", "2, b", "3,c ", "4, d ") //