Allow different diagnostics in Javac tests - workaround for IDEA-184289
This commit is contained in:
Vendored
+47
@@ -0,0 +1,47 @@
|
||||
// !DIAGNOSTICS: -UNUSED_PARAMETER
|
||||
// FILE: a/a.java
|
||||
package a;
|
||||
|
||||
public class a {}
|
||||
|
||||
// FILE: a/b.java
|
||||
package a;
|
||||
|
||||
public class b {
|
||||
public void a_b() {}
|
||||
}
|
||||
|
||||
// FILE: test/a.java
|
||||
package test;
|
||||
|
||||
public class a {}
|
||||
|
||||
// FILE: test/d.java
|
||||
package test;
|
||||
|
||||
public class d {
|
||||
public a.b getB() { return null; }
|
||||
}
|
||||
|
||||
// FILE: b.kt
|
||||
package test
|
||||
|
||||
val x = d().getB()
|
||||
|
||||
// FILE: test/c.java
|
||||
package test;
|
||||
|
||||
import a.a;
|
||||
|
||||
public class c {
|
||||
public static a getA() { return null; }
|
||||
}
|
||||
|
||||
// FILE: c.kt
|
||||
package test
|
||||
|
||||
fun foo() {
|
||||
val a = c.getA()
|
||||
a.<!UNRESOLVED_REFERENCE!>a<!>
|
||||
a.<!UNRESOLVED_REFERENCE!>a<!>()
|
||||
}
|
||||
+22
-12
@@ -141,18 +141,8 @@ abstract class AbstractDiagnosticsTest : BaseDiagnosticsTest() {
|
||||
}
|
||||
|
||||
var exceptionFromDescriptorValidation: Throwable? = null
|
||||
val originalTestFile = testDataFile.readText()
|
||||
try {
|
||||
val postfix = when {
|
||||
InTextDirectivesUtils.isDirectiveDefined(originalTestFile, "// JAVAC_EXPECTED_FILE") &&
|
||||
environment.configuration.getBoolean(JVMConfigurationKeys.USE_JAVAC) -> ".javac.txt"
|
||||
|
||||
InTextDirectivesUtils.isDirectiveDefined(originalTestFile, "// NI_EXPECTED_FILE") &&
|
||||
files.any { it.newInferenceEnabled } && !USE_OLD_INFERENCE_DIAGNOSTICS_FOR_NI -> ".ni.txt"
|
||||
|
||||
else -> ".txt"
|
||||
}
|
||||
val expectedFile = File(FileUtil.getNameWithoutExtension(testDataFile.absolutePath) + postfix)
|
||||
val expectedFile = getExpectedDescriptorFile(testDataFile, files)
|
||||
validateAndCompareDescriptorWithFile(expectedFile, files, modules)
|
||||
}
|
||||
catch (e: Throwable) {
|
||||
@@ -190,7 +180,7 @@ abstract class AbstractDiagnosticsTest : BaseDiagnosticsTest() {
|
||||
exceptionFromDynamicCallDescriptorsValidation = e
|
||||
}
|
||||
|
||||
KotlinTestUtils.assertEqualsToFile(testDataFile, actualText.toString())
|
||||
KotlinTestUtils.assertEqualsToFile(getExpectedDiagnosticsFile(testDataFile), actualText.toString())
|
||||
|
||||
assertTrue("Diagnostics mismatch. See the output above", ok)
|
||||
|
||||
@@ -202,6 +192,26 @@ abstract class AbstractDiagnosticsTest : BaseDiagnosticsTest() {
|
||||
performAdditionalChecksAfterDiagnostics(testDataFile, files, groupedByModule, modules, moduleBindings)
|
||||
}
|
||||
|
||||
protected open fun getExpectedDiagnosticsFile(testDataFile: File): File {
|
||||
return testDataFile
|
||||
}
|
||||
|
||||
protected open fun getExpectedDescriptorFile(testDataFile: File, files: List<TestFile>): File {
|
||||
val originalTestFileText = testDataFile.readText()
|
||||
|
||||
val postfix = when {
|
||||
InTextDirectivesUtils.isDirectiveDefined(originalTestFileText, "// JAVAC_EXPECTED_FILE") &&
|
||||
environment.configuration.getBoolean(JVMConfigurationKeys.USE_JAVAC) -> ".javac.txt"
|
||||
|
||||
InTextDirectivesUtils.isDirectiveDefined(originalTestFileText, "// NI_EXPECTED_FILE") &&
|
||||
files.any { it.newInferenceEnabled } && !USE_OLD_INFERENCE_DIAGNOSTICS_FOR_NI -> ".ni.txt"
|
||||
|
||||
else -> ".txt"
|
||||
}
|
||||
|
||||
return File(FileUtil.getNameWithoutExtension(testDataFile.absolutePath) + postfix)
|
||||
}
|
||||
|
||||
protected open fun performAdditionalChecksAfterDiagnostics(
|
||||
testDataFile: File,
|
||||
testFiles: List<TestFile>,
|
||||
|
||||
+15
@@ -18,6 +18,7 @@ package org.jetbrains.kotlin.checkers.javac
|
||||
|
||||
import org.jetbrains.kotlin.checkers.AbstractDiagnosticsTest
|
||||
import org.jetbrains.kotlin.config.JVMConfigurationKeys
|
||||
import org.jetbrains.kotlin.test.KotlinTestUtils
|
||||
import java.io.File
|
||||
|
||||
abstract class AbstractJavacDiagnosticsTest : AbstractDiagnosticsTest() {
|
||||
@@ -39,5 +40,19 @@ abstract class AbstractJavacDiagnosticsTest : AbstractDiagnosticsTest() {
|
||||
super.doTest(path)
|
||||
}
|
||||
|
||||
override fun getExpectedDiagnosticsFile(testDataFile: File): File {
|
||||
val suffix = if (useJavac) ".WithJavac.txt" else ".WithoutJavac.txt"
|
||||
val specialFile = File(testDataFile.parent, testDataFile.name + suffix)
|
||||
return specialFile.takeIf { it.exists() } ?: super.getExpectedDiagnosticsFile(testDataFile)
|
||||
}
|
||||
|
||||
override fun createTestFiles(file: File, expectedText: String, modules: MutableMap<String, ModuleAndDependencies>?): List<TestFile> {
|
||||
val specialFile = getExpectedDiagnosticsFile(file)
|
||||
if (file.path == specialFile.path) {
|
||||
return super.createTestFiles(file, expectedText, modules)
|
||||
}
|
||||
|
||||
return super.createTestFiles(specialFile, KotlinTestUtils.doLoadFile(specialFile), modules)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user