From 1d38d649fa287264fcbcb1b1ad89ab828ebf3e39 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?St=C3=A9phane=20Nicoll?= Date: Wed, 1 Nov 2023 16:23:01 +0100 Subject: [PATCH] Relax test that used to rely on localized message This reverts commit 93206c3f6ec421c56e8261a8f59fae9690991609 and updates the related test to only rely on the fact the compiler fails. Relying on a message will not work and the status code can be implementation independent according to its javadoc. Closes gh-31536 --- .../core/test/tools/TestCompiler.java | 82 +++++++------------ .../core/test/tools/TestCompilerTests.java | 7 +- 2 files changed, 31 insertions(+), 58 deletions(-) diff --git a/spring-core-test/src/main/java/org/springframework/core/test/tools/TestCompiler.java b/spring-core-test/src/main/java/org/springframework/core/test/tools/TestCompiler.java index 14321abb25..9d5b15d1eb 100644 --- a/spring-core-test/src/main/java/org/springframework/core/test/tools/TestCompiler.java +++ b/spring-core-test/src/main/java/org/springframework/core/test/tools/TestCompiler.java @@ -53,8 +53,6 @@ public final class TestCompiler { private final JavaCompiler compiler; - private final Locale locale; - private final SourceFiles sourceFiles; private final ResourceFiles resourceFiles; @@ -66,13 +64,12 @@ public final class TestCompiler { private final List compilerOptions; - private TestCompiler(@Nullable ClassLoader classLoader, JavaCompiler compiler, Locale locale, - SourceFiles sourceFiles, ResourceFiles resourceFiles, ClassFiles classFiles, List processors, - List compilerOptions) { + private TestCompiler(@Nullable ClassLoader classLoader, JavaCompiler compiler, + SourceFiles sourceFiles, ResourceFiles resourceFiles, ClassFiles classFiles, + List processors, List compilerOptions) { this.classLoader = classLoader; this.compiler = compiler; - this.locale = locale; this.sourceFiles = sourceFiles; this.resourceFiles = resourceFiles; this.classFiles = classFiles; @@ -95,9 +92,8 @@ public final class TestCompiler { * @return a new {@code TestCompiler} instance */ public static TestCompiler forCompiler(JavaCompiler javaCompiler) { - return new TestCompiler(null, javaCompiler, Locale.getDefault(), - SourceFiles.none(), ResourceFiles.none(), - ClassFiles.none(), Collections.emptyList(), Collections.emptyList()); + return new TestCompiler(null, javaCompiler, SourceFiles.none(), + ResourceFiles.none(), ClassFiles.none(), Collections.emptyList(), Collections.emptyList()); } /** @@ -109,26 +105,13 @@ public final class TestCompiler { return customizer.apply(this); } - /** - * Create a new {@code TestCompiler} instance that uses the specified {@link Locale} - * to render compiler messages. - * @param locale the locale to use - * @return a new {@code TestCompiler} instance - * @since 6.1 - */ - public TestCompiler withLocale(Locale locale) { - return new TestCompiler(this.classLoader, this.compiler, locale, - this.sourceFiles, this.resourceFiles, - this.classFiles, this.processors, this.compilerOptions); - } - /** * Create a new {@code TestCompiler} instance with additional source files. * @param sourceFiles the additional source files * @return a new {@code TestCompiler} instance */ public TestCompiler withSources(SourceFile... sourceFiles) { - return new TestCompiler(this.classLoader, this.compiler, this.locale, + return new TestCompiler(this.classLoader, this.compiler, this.sourceFiles.and(sourceFiles), this.resourceFiles, this.classFiles, this.processors, this.compilerOptions); } @@ -139,7 +122,7 @@ public final class TestCompiler { * @return a new {@code TestCompiler} instance */ public TestCompiler withSources(Iterable sourceFiles) { - return new TestCompiler(this.classLoader, this.compiler, this.locale, + return new TestCompiler(this.classLoader, this.compiler, this.sourceFiles.and(sourceFiles), this.resourceFiles, this.classFiles, this.processors, this.compilerOptions); } @@ -150,7 +133,7 @@ public final class TestCompiler { * @return a new {@code TestCompiler} instance */ public TestCompiler withSources(SourceFiles sourceFiles) { - return new TestCompiler(this.classLoader, this.compiler, this.locale, + return new TestCompiler(this.classLoader, this.compiler, this.sourceFiles.and(sourceFiles), this.resourceFiles, this.classFiles, this.processors, this.compilerOptions); } @@ -161,9 +144,9 @@ public final class TestCompiler { * @return a new {@code TestCompiler} instance */ public TestCompiler withResources(ResourceFile... resourceFiles) { - return new TestCompiler(this.classLoader, this.compiler, this.locale, - this.sourceFiles, this.resourceFiles.and(resourceFiles), - this.classFiles, this.processors, this.compilerOptions); + return new TestCompiler(this.classLoader, this.compiler, this.sourceFiles, + this.resourceFiles.and(resourceFiles), this.classFiles, this.processors, + this.compilerOptions); } /** @@ -172,9 +155,9 @@ public final class TestCompiler { * @return a new {@code TestCompiler} instance */ public TestCompiler withResources(Iterable resourceFiles) { - return new TestCompiler(this.classLoader, this.compiler, this.locale, - this.sourceFiles, this.resourceFiles.and(resourceFiles), - this.classFiles, this.processors, this.compilerOptions); + return new TestCompiler(this.classLoader, this.compiler, this.sourceFiles, + this.resourceFiles.and(resourceFiles), this.classFiles, this.processors, + this.compilerOptions); } /** @@ -183,9 +166,9 @@ public final class TestCompiler { * @return a new {@code TestCompiler} instance */ public TestCompiler withResources(ResourceFiles resourceFiles) { - return new TestCompiler(this.classLoader, this.compiler, this.locale, - this.sourceFiles, this.resourceFiles.and(resourceFiles), - this.classFiles, this.processors, this.compilerOptions); + return new TestCompiler(this.classLoader, this.compiler, this.sourceFiles, + this.resourceFiles.and(resourceFiles), this.classFiles, this.processors, + this.compilerOptions); } /** @@ -194,9 +177,9 @@ public final class TestCompiler { * @return a new {@code TestCompiler} instance */ public TestCompiler withClasses(Iterable classFiles) { - return new TestCompiler(this.classLoader, this.compiler, this.locale, - this.sourceFiles, this.resourceFiles, this.classFiles.and(classFiles), - this.processors, this.compilerOptions); + return new TestCompiler(this.classLoader, this.compiler, this.sourceFiles, + this.resourceFiles, this.classFiles.and(classFiles), this.processors, + this.compilerOptions); } /** @@ -207,9 +190,8 @@ public final class TestCompiler { public TestCompiler withProcessors(Processor... processors) { List mergedProcessors = new ArrayList<>(this.processors); mergedProcessors.addAll(Arrays.asList(processors)); - return new TestCompiler(this.classLoader, this.compiler, this.locale, - this.sourceFiles, this.resourceFiles, this.classFiles, mergedProcessors, - this.compilerOptions); + return new TestCompiler(this.classLoader, this.compiler, this.sourceFiles, + this.resourceFiles, this.classFiles, mergedProcessors, this.compilerOptions); } /** @@ -220,9 +202,8 @@ public final class TestCompiler { public TestCompiler withProcessors(Iterable processors) { List mergedProcessors = new ArrayList<>(this.processors); processors.forEach(mergedProcessors::add); - return new TestCompiler(this.classLoader, this.compiler, this.locale, - this.sourceFiles, this.resourceFiles, this.classFiles, - mergedProcessors, this.compilerOptions); + return new TestCompiler(this.classLoader, this.compiler, this.sourceFiles, + this.resourceFiles, this.classFiles, mergedProcessors, this.compilerOptions); } /** @@ -234,9 +215,8 @@ public final class TestCompiler { public TestCompiler withCompilerOptions(String... options) { List mergedCompilerOptions = Stream.concat(this.compilerOptions.stream(), Arrays.stream(options)).distinct().toList(); - return new TestCompiler(this.classLoader, this.compiler, this.locale, - this.sourceFiles, this.resourceFiles, this.classFiles, - this.processors, mergedCompilerOptions); + return new TestCompiler(this.classLoader, this.compiler, this.sourceFiles, + this.resourceFiles, this.classFiles, this.processors, mergedCompilerOptions); } /** @@ -328,7 +308,7 @@ public final class TestCompiler { DynamicJavaFileManager fileManager = new DynamicJavaFileManager( standardFileManager, classLoaderToUse, this.classFiles, this.resourceFiles); if (!this.sourceFiles.isEmpty()) { - Errors errors = new Errors(this.locale); + Errors errors = new Errors(); CompilationTask task = this.compiler.getTask(null, fileManager, errors, this.compilerOptions, null, compilationUnits); if (!this.processors.isEmpty()) { @@ -369,19 +349,13 @@ public final class TestCompiler { */ static class Errors implements DiagnosticListener { - private final Locale locale; - private final StringBuilder message = new StringBuilder(); - Errors(Locale locale) { - this.locale = locale; - } - @Override public void report(Diagnostic diagnostic) { if (diagnostic.getKind() == Diagnostic.Kind.ERROR) { this.message.append('\n'); - this.message.append(diagnostic.getMessage(this.locale)); + this.message.append(diagnostic.getMessage(Locale.getDefault())); if (diagnostic.getSource() != null) { this.message.append(' '); this.message.append(diagnostic.getSource().getName()); diff --git a/spring-core-test/src/test/java/org/springframework/core/test/tools/TestCompilerTests.java b/spring-core-test/src/test/java/org/springframework/core/test/tools/TestCompilerTests.java index c91cdcb327..48bd7e8df7 100644 --- a/spring-core-test/src/test/java/org/springframework/core/test/tools/TestCompilerTests.java +++ b/spring-core-test/src/test/java/org/springframework/core/test/tools/TestCompilerTests.java @@ -19,7 +19,6 @@ package org.springframework.core.test.tools; import java.io.InputStream; import java.util.ArrayList; import java.util.List; -import java.util.Locale; import java.util.Set; import java.util.function.Supplier; @@ -171,9 +170,9 @@ class TestCompilerTests { } """); assertThatExceptionOfType(CompilationException.class).isThrownBy( - () -> TestCompiler.forSystem().failOnWarning().withLocale(Locale.ENGLISH) - .withSources(SourceFile.of(HELLO_DEPRECATED), main).compile(compiled -> { - })).withMessageContaining("warnings found and -Werror specified"); + () -> TestCompiler.forSystem().failOnWarning().withSources( + SourceFile.of(HELLO_DEPRECATED), main).compile(compiled -> { + })); } @Test