diff --git a/plugins/kotlin/j2k/shared/tests/test/org/jetbrains/kotlin/j2k/AbstractJavaToKotlinConverterMultiFileTest.kt b/plugins/kotlin/j2k/shared/tests/test/org/jetbrains/kotlin/j2k/AbstractJavaToKotlinConverterMultiFileTest.kt index f94923198124..8e5fef7b5935 100644 --- a/plugins/kotlin/j2k/shared/tests/test/org/jetbrains/kotlin/j2k/AbstractJavaToKotlinConverterMultiFileTest.kt +++ b/plugins/kotlin/j2k/shared/tests/test/org/jetbrains/kotlin/j2k/AbstractJavaToKotlinConverterMultiFileTest.kt @@ -83,7 +83,16 @@ abstract class AbstractJavaToKotlinConverterMultiFileTest : AbstractJavaToKotlin } for ((i, kotlinFile) in resultFiles.withIndex()) { - KotlinTestUtils.assertEqualsToFile(expectedResultFile(i), kotlinFile.getFileTextWithErrors()) + val expectedFile = expectedResultFile(i) + val shouldCheckForErrors = expectedFile.readText().contains(ERROR_HEADER) + val actualText = if (shouldCheckForErrors) { + // Optimization: K2 `getFileTextWithErrors` is expensive + kotlinFile.getFileTextWithErrors() + } else { + kotlinFile.text + } + + KotlinTestUtils.assertEqualsToFile(expectedFile, actualText) } for ((externalFile, externalPsiFile) in externalFiles.zip(externalPsiFiles)) { diff --git a/plugins/kotlin/j2k/shared/tests/test/org/jetbrains/kotlin/j2k/AbstractJavaToKotlinConverterSingleFileTest.kt b/plugins/kotlin/j2k/shared/tests/test/org/jetbrains/kotlin/j2k/AbstractJavaToKotlinConverterSingleFileTest.kt index 28dee1ec98c2..a4c1c8e276f5 100644 --- a/plugins/kotlin/j2k/shared/tests/test/org/jetbrains/kotlin/j2k/AbstractJavaToKotlinConverterSingleFileTest.kt +++ b/plugins/kotlin/j2k/shared/tests/test/org/jetbrains/kotlin/j2k/AbstractJavaToKotlinConverterSingleFileTest.kt @@ -49,13 +49,16 @@ abstract class AbstractJavaToKotlinConverterSingleFileTest : AbstractJavaToKotli val directives = KotlinTestUtils.parseDirectives(javaCode) val settings = configureSettings(directives) val convertedText = convertJavaToKotlin(prefix, javaCode, settings) + val expectedFile = File(javaFile.path.replace(".java", ".kt")) + val shouldCheckForErrors = expectedFile.readText().contains(ERROR_HEADER) - val actualText = if (prefix == "file") { + val actualText = if (prefix == "file" && shouldCheckForErrors) { + // Optimization: K2 `getFileTextWithErrors` is expensive createKotlinFile(convertedText).getFileTextWithErrors() } else { convertedText } - val expectedFile = File(javaFile.path.replace(".java", ".kt")) + KotlinTestUtils.assertEqualsToFile(expectedFile, actualText) } diff --git a/plugins/kotlin/j2k/shared/tests/test/org/jetbrains/kotlin/j2k/testUtils.kt b/plugins/kotlin/j2k/shared/tests/test/org/jetbrains/kotlin/j2k/testUtils.kt index b69001bcf288..dd6bd0216d4d 100644 --- a/plugins/kotlin/j2k/shared/tests/test/org/jetbrains/kotlin/j2k/testUtils.kt +++ b/plugins/kotlin/j2k/shared/tests/test/org/jetbrains/kotlin/j2k/testUtils.kt @@ -17,9 +17,11 @@ val J2K_PROJECT_DESCRIPTOR: KotlinWithJdkAndRuntimeLightProjectDescriptor = override fun getSdk(): Sdk = IdeaTestUtil.getMockJdk21() } -val J2K_FULL_JDK_PROJECT_DESCRIPTOR: KotlinWithJdkAndRuntimeLightProjectDescriptor = +internal val J2K_FULL_JDK_PROJECT_DESCRIPTOR: KotlinWithJdkAndRuntimeLightProjectDescriptor = KotlinWithJdkAndRuntimeLightProjectDescriptor.getInstanceFullJdk() +internal const val ERROR_HEADER: String = "// ERROR" + // TODO: adapted from `org.jetbrains.kotlin.idea.test.TestUtilsKt.dumpTextWithErrors` @OptIn(KtAllowAnalysisOnEdt::class) internal fun getK2FileTextWithErrors(file: KtFile): String {