Fix compileJavaAgainstKotlin tests
- Use another API to get file name out of a javac diagnostic (.getSource().getName()'s behavior changed in JDK 8) - Delete .txt files for those tests which check that javac reported a compilation error; the order and content of declarations in those files is undefined
This commit is contained in:
committed by
Dmitry Jemerov
parent
4edfd0d960
commit
3c96099f7c
@@ -552,7 +552,7 @@ public class KotlinTestUtils {
|
||||
}
|
||||
}
|
||||
|
||||
public static void compileKotlinWithJava(
|
||||
public static boolean compileKotlinWithJava(
|
||||
@NotNull List<File> javaFiles,
|
||||
@NotNull List<File> ktFiles,
|
||||
@NotNull File outDir,
|
||||
@@ -567,12 +567,12 @@ public class KotlinTestUtils {
|
||||
boolean mkdirs = outDir.mkdirs();
|
||||
assert mkdirs : "Not created: " + outDir;
|
||||
}
|
||||
if (!javaFiles.isEmpty()) {
|
||||
compileJavaFiles(javaFiles, Arrays.asList(
|
||||
"-classpath", outDir.getPath() + File.pathSeparator + ForTestCompileRuntime.runtimeJarForTests(),
|
||||
"-d", outDir.getPath()
|
||||
), javaErrorFile);
|
||||
}
|
||||
if (javaFiles.isEmpty()) return true;
|
||||
|
||||
return compileJavaFiles(javaFiles, Arrays.asList(
|
||||
"-classpath", outDir.getPath() + File.pathSeparator + ForTestCompileRuntime.runtimeJarForTests(),
|
||||
"-d", outDir.getPath()
|
||||
), javaErrorFile);
|
||||
}
|
||||
|
||||
public interface TestFileFactory<M, F> {
|
||||
@@ -802,11 +802,11 @@ public class KotlinTestUtils {
|
||||
return comments;
|
||||
}
|
||||
|
||||
public static void compileJavaFiles(@NotNull Collection<File> files, List<String> options) throws IOException {
|
||||
compileJavaFiles(files, options, null);
|
||||
public static boolean compileJavaFiles(@NotNull Collection<File> files, List<String> options) throws IOException {
|
||||
return compileJavaFiles(files, options, null);
|
||||
}
|
||||
|
||||
public static void compileJavaFiles(@NotNull Collection<File> files, List<String> options, @Nullable File javaErrorFile) throws IOException {
|
||||
private static boolean compileJavaFiles(@NotNull Collection<File> files, List<String> options, @Nullable File javaErrorFile) throws IOException {
|
||||
JavaCompiler javaCompiler = ToolProvider.getSystemJavaCompiler();
|
||||
DiagnosticCollector<JavaFileObject> diagnosticCollector = new DiagnosticCollector<JavaFileObject>();
|
||||
StandardJavaFileManager fileManager = javaCompiler.getStandardFileManager(diagnosticCollector, Locale.ENGLISH, Charset.forName("utf-8"));
|
||||
@@ -828,13 +828,14 @@ public class KotlinTestUtils {
|
||||
else {
|
||||
assertEqualsToFile(javaErrorFile, errorsToString(diagnosticCollector, false));
|
||||
}
|
||||
return success;
|
||||
} finally {
|
||||
fileManager.close();
|
||||
}
|
||||
}
|
||||
|
||||
@NotNull
|
||||
private static String errorsToString(@NotNull DiagnosticCollector<JavaFileObject> diagnosticCollector, boolean humanReadable) {
|
||||
private static String errorsToString(@NotNull DiagnosticCollector<JavaFileObject> diagnosticCollector, boolean humanReadable) {
|
||||
StringBuilder builder = new StringBuilder();
|
||||
for (javax.tools.Diagnostic<? extends JavaFileObject> diagnostic : diagnosticCollector.getDiagnostics()) {
|
||||
if (diagnostic.getKind() != javax.tools.Diagnostic.Kind.ERROR) continue;
|
||||
@@ -843,7 +844,7 @@ public class KotlinTestUtils {
|
||||
builder.append(diagnostic).append("\n");
|
||||
}
|
||||
else {
|
||||
builder.append(diagnostic.getSource().getName()).append(":")
|
||||
builder.append(new File(diagnostic.getSource().toUri()).getName()).append(":")
|
||||
.append(diagnostic.getLineNumber()).append(":")
|
||||
.append(diagnostic.getColumnNumber()).append(":")
|
||||
.append(diagnostic.getCode()).append("\n");
|
||||
|
||||
Reference in New Issue
Block a user