]> source.dussan.org Git - aspectj.git/commitdiff
Make OutputSpec::getTrimmedLines work for empty lines on Windows
authorAlexander Kriegisch <Alexander@Kriegisch.name>
Sun, 10 Dec 2023 06:28:37 +0000 (13:28 +0700)
committerAlexander Kriegisch <Alexander@Kriegisch.name>
Mon, 11 Dec 2023 02:38:37 +0000 (03:38 +0100)
Improve the regex splitting lines to actually remove CR characters on
Windows.

Signed-off-by: Alexander Kriegisch <Alexander@Kriegisch.name>
testing/src/test/java/org/aspectj/testing/OutputSpec.java

index 14fc3bb621f6ddb215ce5e93760824ce532eb89f..def3990ec5ae6254f68c06b76c58fcc24f60d6c8 100644 (file)
@@ -127,8 +127,11 @@ public class OutputSpec {
        }
 
        private String[] getTrimmedLines(String text) {
-               // Remove leading/trailing empty lines and leading/trailing whitespace from each line
-               String[] trimmedLines = text.trim().split("\\s*\n\\s*");
+               // Remove leading/trailing empty lines and leading/trailing horizontal whitespace from each line.
+               // Regex character class '\h' is horizonal whitespace. We assume that lines are always separated by something
+               // containing a '\n' LF character, e.g. LF (UNIX), CRLF (Windows). For legacy Mac platforms with their CR-only line
+               // separators, this would not work, and it is not supposed to either.
+               String[] trimmedLines = text.trim().split("\\h*\r?\n\\h*");
                return trimmedLines.length == 1 && trimmedLines[0].equals("") ? new String[0] : trimmedLines;
        }
 }