Skip to content

Commit

Permalink
Relax test that used to rely on localized message
Browse files Browse the repository at this point in the history
This reverts commit 93206c3 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
  • Loading branch information
snicoll committed Nov 1, 2023
1 parent a5841fe commit 1d38d64
Show file tree
Hide file tree
Showing 2 changed files with 31 additions and 58 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -53,8 +53,6 @@ public final class TestCompiler {

private final JavaCompiler compiler;

private final Locale locale;

private final SourceFiles sourceFiles;

private final ResourceFiles resourceFiles;
Expand All @@ -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;
Expand All @@ -95,9 +92,8 @@ public static TestCompiler forSystem() {
* @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());
}

/**
Expand All @@ -109,26 +105,13 @@ public TestCompiler with(UnaryOperator<TestCompiler> customizer) {
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);
}
Expand All @@ -139,7 +122,7 @@ public TestCompiler withSources(SourceFile... sourceFiles) {
* @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);
}
Expand All @@ -150,7 +133,7 @@ public TestCompiler withSources(Iterable<SourceFile> sourceFiles) {
* @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);
}
Expand All @@ -161,9 +144,9 @@ public TestCompiler withSources(SourceFiles sourceFiles) {
* @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);
}

/**
Expand All @@ -172,9 +155,9 @@ public TestCompiler withResources(ResourceFile... resourceFiles) {
* @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);
}

/**
Expand All @@ -183,9 +166,9 @@ public TestCompiler withResources(Iterable<ResourceFile> resourceFiles) {
* @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);
}

/**
Expand All @@ -194,9 +177,9 @@ public TestCompiler withResources(ResourceFiles resourceFiles) {
* @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);
}

/**
Expand All @@ -207,9 +190,8 @@ public TestCompiler withClasses(Iterable<ClassFile> classFiles) {
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);
}

/**
Expand All @@ -220,9 +202,8 @@ public TestCompiler withProcessors(Processor... processors) {
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);
}

/**
Expand All @@ -234,9 +215,8 @@ public TestCompiler withProcessors(Iterable<Processor> processors) {
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);
}

/**
Expand Down Expand Up @@ -328,7 +308,7 @@ private DynamicClassLoader compile() {
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()) {
Expand Down Expand Up @@ -369,19 +349,13 @@ public TestCompiler printFiles(PrintStream printStream) {
*/
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());
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,6 @@
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;

Expand Down Expand Up @@ -171,9 +170,9 @@ public static void main(String[] args) {
}
""");
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
Expand Down

0 comments on commit 1d38d64

Please sign in to comment.