javac-wrapper: fixes after rebase and review

This commit is contained in:
baratynskiy
2017-08-14 13:28:35 +03:00
committed by Alexander Baratynskiy
parent 2dc0c55e76
commit 67fdd9f76e
39 changed files with 984 additions and 177 deletions
@@ -27,15 +27,22 @@ import java.io.File
abstract class AbstractDiagnosticsUsingJavacTest : AbstractDiagnosticsTest() {
override fun analyzeAndCheck(testDataFile: File, files: List<TestFile>) {
if (InTextDirectivesUtils.isDirectiveDefined(testDataFile.readText(), "// JAVAC_SKIP")) {
val testDataFileText = testDataFile.readText()
if (InTextDirectivesUtils.isDirectiveDefined(testDataFileText, "// JAVAC_SKIP")) {
println("${testDataFile.name} test is skipped")
return
}
val groupedByModule = files.groupBy(TestFile::module)
val allKtFiles = groupedByModule.values.flatMap { getKtFiles(it, true) }
val mockJdk = listOf(File(getHomeDirectory(), "compiler/testData/mockJDK/jre/lib/rt.jar"))
environment.registerJavac(kotlinFiles = allKtFiles, bootClasspath = mockJdk)
if (InTextDirectivesUtils.isDirectiveDefined(testDataFileText, "// FULL_JDK")) {
environment.registerJavac(kotlinFiles = allKtFiles)
}
else {
val mockJdk = listOf(File(getHomeDirectory(), "compiler/testData/mockJDK/jre/lib/rt.jar"))
environment.registerJavac(kotlinFiles = allKtFiles, bootClasspath = mockJdk)
}
environment.configuration.put(JVMConfigurationKeys.USE_JAVAC, true)
super.analyzeAndCheck(testDataFile, files)
}
@@ -256,8 +256,7 @@ public abstract class AbstractLoadJavaTest extends TestCaseWithTmpdir {
Pair<PackageViewDescriptor, BindingContext> javaPackageAndContext = compileJavaAndLoadTestPackageAndBindingContextFromBinary(
srcFiles, compiledDir, ConfigurationKind.ALL
);
checkJavaPackage(getTxtFile(javaFileName), javaPackageAndContext.first, javaPackageAndContext.second, configuration);
checkJavaPackage(getExpectedFile(javaFileName.replaceFirst("\\.java$", ".txt")), javaPackageAndContext.first, javaPackageAndContext.second, configuration);
}
@NotNull
@@ -300,10 +299,10 @@ public abstract class AbstractLoadJavaTest extends TestCaseWithTmpdir {
}
}
private static File getTxtFile(String javaFileName) {
private File getTxtFile(String javaFileName) {
try {
String fileText = FileUtil.loadFile(new File(javaFileName));
if (InTextDirectivesUtils.isDirectiveDefined(fileText, "// JAVAC_EXPECTED_FILE")) {
if (useJavacWrapper() && InTextDirectivesUtils.isDirectiveDefined(fileText, "// JAVAC_EXPECTED_FILE")) {
return new File(javaFileName.replaceFirst("\\.java$", ".javac.txt"));
}
else return new File(javaFileName.replaceFirst("\\.java$", ".txt"));
@@ -313,10 +312,10 @@ public abstract class AbstractLoadJavaTest extends TestCaseWithTmpdir {
}
}
private static File getTxtFileFromKtFile(String ktFileName) {
private File getTxtFileFromKtFile(String ktFileName) {
try {
String fileText = FileUtil.loadFile(new File(ktFileName));
if (InTextDirectivesUtils.isDirectiveDefined(fileText, "// JAVAC_EXPECTED_FILE")) {
if (useJavacWrapper() && InTextDirectivesUtils.isDirectiveDefined(fileText, "// JAVAC_EXPECTED_FILE")) {
return new File(ktFileName.replaceFirst("\\.kt$", ".javac.txt"));
}
else return new File(ktFileName.replaceFirst("\\.kt$", ".txt"));
@@ -19,6 +19,8 @@ package org.jetbrains.kotlin.jvm.compiler.javac
import org.jetbrains.kotlin.cli.jvm.compiler.KotlinCoreEnvironment
import org.jetbrains.kotlin.config.JVMConfigurationKeys
import org.jetbrains.kotlin.jvm.compiler.AbstractLoadJavaTest
import org.jetbrains.kotlin.test.KotlinTestUtils
import java.io.File
abstract class AbstractLoadJavaUsingJavacTest : AbstractLoadJavaTest() {
override fun registerJavacIfNeeded(environment: KotlinCoreEnvironment) {
@@ -28,6 +30,12 @@ abstract class AbstractLoadJavaUsingJavacTest : AbstractLoadJavaTest() {
override fun useJavacWrapper() = true
override fun getExpectedFile(expectedFileName: String): File {
val differentResultFile = KotlinTestUtils.replaceExtension(File(expectedFileName), "javac.txt")
if (differentResultFile.exists()) return differentResultFile
return super.getExpectedFile(expectedFileName)
}
}
object JavacRegistrarForTests {