Skip to content

Commit 1404e6d

Browse files
TestInstance: escape control characters in test description. Fail running tests if multiple tests have the same description
1 parent caaf409 commit 1404e6d

File tree

2 files changed

+26
-6
lines changed

2 files changed

+26
-6
lines changed

test/jdk/tools/jpackage/helpers/jdk/jpackage/test/Main.java

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,10 @@
2323

2424
package jdk.jpackage.test;
2525

26+
import static java.util.stream.Collectors.toCollection;
27+
import static java.util.stream.Collectors.toMap;
28+
import static jdk.jpackage.test.TestBuilder.CMDLINE_ARG_PREFIX;
29+
2630
import java.nio.file.Files;
2731
import java.nio.file.Path;
2832
import java.util.ArrayDeque;
@@ -32,9 +36,7 @@
3236
import java.util.List;
3337
import java.util.function.Function;
3438
import java.util.function.Predicate;
35-
import static java.util.stream.Collectors.toCollection;
3639
import java.util.stream.Stream;
37-
import static jdk.jpackage.test.TestBuilder.CMDLINE_ARG_PREFIX;
3840

3941

4042
public final class Main {
@@ -88,9 +90,7 @@ public static void main(TestBuilder.Builder builder, String args[]) throws Throw
8890
TKit.unbox(throwable);
8991
} finally {
9092
if (!success) {
91-
TKit.log(
92-
String.format("Error processing parameter=[%s]",
93-
arg));
93+
TKit.log(String.format("Error processing parameter=[%s]", arg));
9494
}
9595
}
9696
}
@@ -104,6 +104,13 @@ public static void main(TestBuilder.Builder builder, String args[]) throws Throw
104104
// Just list the tests
105105
orderedTests.forEach(test -> System.out.println(String.format(
106106
"%s; workDir=[%s]", test.fullName(), test.workDir())));
107+
}
108+
109+
orderedTests.stream().collect(toMap(TestInstance::fullName, x -> x, (x, y) -> {
110+
throw new IllegalArgumentException(String.format("Multiple tests with the same description: [%s]", x.fullName()));
111+
}));
112+
113+
if (listTests) {
107114
return;
108115
}
109116

test/jdk/tools/jpackage/helpers/jdk/jpackage/test/TestInstance.java

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@
3131
import java.util.Arrays;
3232
import java.util.Collections;
3333
import java.util.HashSet;
34+
import java.util.HexFormat;
3435
import java.util.List;
3536
import java.util.Map;
3637
import java.util.Objects;
@@ -119,12 +120,24 @@ private static String formatArgs(List<Object> values) {
119120
return String.format("%s(length=%d)", asString, Array.getLength(v));
120121
}
121122
return String.format("%s", v);
122-
}).collect(Collectors.joining(", "));
123+
}).collect(Collectors.joining(", ")).transform(str -> {
124+
final var sb = new StringBuilder();
125+
for (var chr : str.toCharArray()) {
126+
if (chr != ' ' && (Character.isWhitespace(chr) || Character.isISOControl(chr))) {
127+
sb.append("\\u").append(ARGS_CHAR_FORMATTER.toHexDigits(chr));
128+
} else {
129+
sb.append(chr);
130+
}
131+
}
132+
return sb.toString();
133+
});
123134
}
124135

125136
private List<Object> ctorArgs;
126137
private List<Object> methodArgs;
127138
private Method method;
139+
140+
private final static HexFormat ARGS_CHAR_FORMATTER = HexFormat.of().withUpperCase();
128141
}
129142

130143
static TestDesc create(Method m, Object... args) {

0 commit comments

Comments
 (0)