Add withFiles support to TestCompiler

Update `TestCompiler` so that `withFiles` can be used to quickly
configure the compiler with `InMemoryGeneratedFiles`.

See gh-28414
This commit is contained in:
Phillip Webb 2022-04-26 21:42:35 -07:00
parent 99173fbd4f
commit 9c12833e16
1 changed files with 20 additions and 0 deletions

View File

@ -17,6 +17,7 @@
package org.springframework.aot.test.generator.compile;
import java.io.PrintStream;
import java.util.ArrayList;
import java.util.List;
import java.util.Locale;
import java.util.function.Consumer;
@ -29,6 +30,8 @@ import javax.tools.JavaFileObject;
import javax.tools.StandardJavaFileManager;
import javax.tools.ToolProvider;
import org.springframework.aot.generate.GeneratedFiles.Kind;
import org.springframework.aot.generate.InMemoryGeneratedFiles;
import org.springframework.aot.test.generator.file.ResourceFile;
import org.springframework.aot.test.generator.file.ResourceFiles;
import org.springframework.aot.test.generator.file.SourceFile;
@ -83,6 +86,23 @@ public final class TestCompiler {
ResourceFiles.none());
}
/**
* Return a new {@link TestCompiler} instance with additional generated
* source and resource files.
* @param generatedFiles the generated files to add
* @return a new {@link TestCompiler} instance
*/
public TestCompiler withFiles(InMemoryGeneratedFiles generatedFiles) {
List<SourceFile> sourceFiles = new ArrayList<>();
generatedFiles.getGeneratedFiles(Kind.SOURCE).forEach((path,
inputStreamSource) -> sourceFiles.add(SourceFile.of(inputStreamSource)));
List<ResourceFile> resourceFiles = new ArrayList<>();
generatedFiles.getGeneratedFiles(Kind.RESOURCE)
.forEach((path, inputStreamSource) -> resourceFiles
.add(ResourceFile.of(path, inputStreamSource)));
return withSources(sourceFiles).withResources(resourceFiles);
}
/**
* Return a new {@link TestCompiler} instance with addition source files.
* @param sourceFiles the additional source files