Browse Source

Relax test that used to rely on localized message

This reverts commit 93206c3f6e 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
pull/31537/head
Stéphane Nicoll 11 months ago
parent
commit
1d38d649fa
  1. 82
      spring-core-test/src/main/java/org/springframework/core/test/tools/TestCompiler.java
  2. 7
      spring-core-test/src/test/java/org/springframework/core/test/tools/TestCompilerTests.java

82
spring-core-test/src/main/java/org/springframework/core/test/tools/TestCompiler.java

@ -53,8 +53,6 @@ public final class TestCompiler { @@ -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 { @@ -66,13 +64,12 @@ public final class TestCompiler {
private final List<String> compilerOptions;
private TestCompiler(@Nullable ClassLoader classLoader, JavaCompiler compiler, Locale locale,
SourceFiles sourceFiles, ResourceFiles resourceFiles, ClassFiles classFiles, List<Processor> processors,
List<String> compilerOptions) {
private TestCompiler(@Nullable ClassLoader classLoader, JavaCompiler compiler,
SourceFiles sourceFiles, ResourceFiles resourceFiles, ClassFiles classFiles,
List<Processor> processors, List<String> 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 { @@ -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 { @@ -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 { @@ -139,7 +122,7 @@ public final class TestCompiler {
* @return a new {@code TestCompiler} instance
*/
public TestCompiler withSources(Iterable<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);
}
@ -150,7 +133,7 @@ public final class TestCompiler { @@ -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 { @@ -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 { @@ -172,9 +155,9 @@ public final class TestCompiler {
* @return a new {@code TestCompiler} instance
*/
public TestCompiler withResources(Iterable<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);
}
/**
@ -183,9 +166,9 @@ public final class TestCompiler { @@ -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 { @@ -194,9 +177,9 @@ public final class TestCompiler {
* @return a new {@code TestCompiler} instance
*/
public TestCompiler withClasses(Iterable<ClassFile> 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 { @@ -207,9 +190,8 @@ public final class TestCompiler {
public TestCompiler withProcessors(Processor... processors) {
List<Processor> 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 { @@ -220,9 +202,8 @@ public final class TestCompiler {
public TestCompiler withProcessors(Iterable<Processor> processors) {
List<Processor> 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 { @@ -234,9 +215,8 @@ public final class TestCompiler {
public TestCompiler withCompilerOptions(String... options) {
List<String> 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 { @@ -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 { @@ -369,19 +349,13 @@ public final class TestCompiler {
*/
static class Errors implements DiagnosticListener<JavaFileObject> {
private final Locale locale;
private final StringBuilder message = new StringBuilder();
Errors(Locale locale) {
this.locale = locale;
}
@Override
public void report(Diagnostic<? extends JavaFileObject> 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());

7
spring-core-test/src/test/java/org/springframework/core/test/tools/TestCompilerTests.java

@ -19,7 +19,6 @@ package org.springframework.core.test.tools; @@ -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 { @@ -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

Loading…
Cancel
Save