[kotlin] J2K tests: load dependency files only if needed

Most tests don't need them.

GitOrigin-RevId: 0060a4d1be0b2beb5cdb08d7ec477625edd2455a
This commit is contained in:
Alexey Belkov
2024-03-16 19:13:43 +04:00
committed by intellij-monorepo-bot
parent 3a64261060
commit bd3a0b4684
51 changed files with 69 additions and 25 deletions
@@ -18,6 +18,10 @@ import java.util.regex.Pattern
private val testHeaderPattern: Pattern = Pattern.compile("//(expression|statement|method)\n")
private const val JPA_ANNOTATIONS_DIRECTIVE = "ADD_JPA_ANNOTATIONS"
private const val KOTLIN_API_DIRECTIVE = "ADD_KOTLIN_API"
private const val JAVA_API_DIRECTIVE = "ADD_JAVA_API"
abstract class AbstractJavaToKotlinConverterSingleFileTest : AbstractJavaToKotlinConverterTest() {
override fun setUp() {
super.setUp()
@@ -43,10 +47,12 @@ abstract class AbstractJavaToKotlinConverterSingleFileTest : AbstractJavaToKotli
}
private fun doTest(javaFile: File, fileContents: String) {
addExternalFiles(javaFile)
val (prefix, javaCode) = getPrefixAndJavaCode(fileContents)
val directives = KotlinTestUtils.parseDirectives(javaCode)
addExternalFiles(javaFile)
addDependencies(directives)
val settings = configureSettings(directives)
val convertedText = convertJavaToKotlin(prefix, javaCode, settings)
val expectedFile = File(javaFile.path.replace(".java", ".kt"))
@@ -62,6 +68,12 @@ abstract class AbstractJavaToKotlinConverterSingleFileTest : AbstractJavaToKotli
KotlinTestUtils.assertEqualsToFile(expectedFile, actualText)
}
private fun addDependencies(directives: Directives) {
if (directives.contains(JPA_ANNOTATIONS_DIRECTIVE)) addJpaColumnAnnotations()
if (directives.contains(KOTLIN_API_DIRECTIVE)) addFile("KotlinApi.kt", "kotlinApi")
if (directives.contains(JAVA_API_DIRECTIVE)) addFile("JavaApi.java", "javaApi")
}
private fun addExternalFiles(javaFile: File) {
val externalFileName = "${javaFile.nameWithoutExtension}.external"
val externalFiles = javaFile.parentFile.listFiles { _, name ->
@@ -19,15 +19,7 @@ private val ignoreDirectives: Set<String> = setOf(IGNORE_K1, IGNORE_K2)
abstract class AbstractJavaToKotlinConverterTest : KotlinLightCodeInsightFixtureTestCase() {
override fun getProjectDescriptor(): LightProjectDescriptor = J2K_PROJECT_DESCRIPTOR
override fun setUp() {
super.setUp()
addFile("KotlinApi.kt", "kotlinApi")
addFile("JavaApi.java", "javaApi")
addJavaLangRecordClass()
addJpaColumnAnnotations()
}
private fun addFile(fileName: String, dirName: String? = null) {
protected fun addFile(fileName: String, dirName: String? = null) {
addFile(File(KotlinRoot.DIR, "j2k/shared/tests/testData/$fileName"), dirName)
}
@@ -56,18 +48,7 @@ abstract class AbstractJavaToKotlinConverterTest : KotlinLightCodeInsightFixture
protected fun KtFile.getFileTextWithErrors(): String =
if (isFirPlugin) getK2FileTextWithErrors(this) else dumpTextWithErrors()
// Needed to make the Kotlin compiler think it is running on JDK 16+
// see org.jetbrains.kotlin.resolve.jvm.checkers.JvmRecordApplicabilityChecker
private fun addJavaLangRecordClass() {
myFixture.addClass(
"""
package java.lang;
public abstract class Record {}
""".trimIndent()
)
}
private fun addJpaColumnAnnotations() {
protected fun addJpaColumnAnnotations() {
myFixture.addClass(
"""
package javax.persistence;
@@ -1,3 +1,5 @@
import Anon.E
internal annotation class Anon(val value: String) {
enum class E {
A, B
@@ -11,6 +13,6 @@ internal annotation class Anon(val value: String) {
@Anon("a")
internal interface I {
companion object {
val e: Anon.E = Anon.field
val e: E = Anon.field
}
}
@@ -1,4 +1,5 @@
// IGNORE_K2
// !ADD_JAVA_API
import javaApi.*;
@Anon1(value = {"a"}, stringArray = {"b"}, intArray = {1, 2}, string = "x")
@@ -1,3 +1,4 @@
// !ADD_JAVA_API
import javaApi.SpecialExternal;
//Annotation class:
@@ -1,4 +1,5 @@
// IGNORE_K2
// !ADD_JAVA_API
import javaApi.Anon5;
import javaApi.TypeUseAnon1;
import javaApi.TypeUseAnon2;
@@ -1,4 +1,5 @@
// IGNORE_K2
// !ADD_JAVA_API
package test;
import javaApi.*;
@@ -1,3 +1,4 @@
// !ADD_JAVA_API
package test
import javaApi.Listener
@@ -1,4 +1,5 @@
// IGNORE_K2
// !ADD_JAVA_API
import javaApi.Anon5;
class A {
@@ -1,4 +1,5 @@
// IGNORE_K2
// !ADD_KOTLIN_API
package test;
import kotlinApi.*;
@@ -1,3 +1,4 @@
// !ADD_KOTLIN_API
package test
import kotlinApi.KotlinClassAbstractProperty
@@ -1,4 +1,6 @@
// IGNORE_K2
// !ADD_KOTLIN_API
// !ADD_JAVA_API
import kotlinApi.KotlinClassWithProperties;
import javaApi.JavaClassWithProperties;
import javaApi.JavaClassDerivedFromKotlinClassWithProperties;
@@ -1,4 +1,5 @@
// IGNORE_K2
// !ADD_JAVA_API
package test;
import javaApi.*;
@@ -1,3 +1,4 @@
// !ADD_JAVA_API
package test
import javaApi.JFunction0
@@ -1,3 +1,4 @@
// IGNORE_K2
public class TestNestedClassesHierarchy {
public static class Base {}
public static class Derived extends Base {}
@@ -1,4 +1,4 @@
// !ADD_KOTLIN_API
import kotlinApi.KotlinClass;
class C {
@@ -1,4 +1,5 @@
// IGNORE_K2
// !ADD_KOTLIN_API
import kotlinApi.*
class A {
@@ -1,4 +1,5 @@
// IGNORE_K2
// !ADD_KOTLIN_API
import kotlinApi.*;
class A {
@@ -1,4 +1,5 @@
// IGNORE_K2
// !ADD_KOTLIN_API
import kotlinApi.KotlinApiKt;
class C {
@@ -1,3 +1,4 @@
// !ADD_KOTLIN_API
import kotlinApi.KotlinApiKt;
class C {
@@ -1,4 +1,5 @@
// IGNORE_K2
// !ADD_KOTLIN_API
import kotlinApi.KotlinApiKt;
class C {
@@ -1,4 +1,5 @@
// IGNORE_K2
// !ADD_KOTLIN_API
import kotlinApi.KotlinApiKt;
class C {
@@ -1,3 +1,4 @@
// !ADD_KOTLIN_API
import kotlinApi.KotlinApiKt;
class C {
@@ -1,3 +1,4 @@
// !ADD_KOTLIN_API
import kotlinApi.KotlinApiKt;
class C {
@@ -1,4 +1,5 @@
// IGNORE_K2
// !ADD_KOTLIN_API
import kotlinApi.*
class C extends KotlinClass {
@@ -1,4 +1,5 @@
// IGNORE_K2
// !ADD_KOTLIN_API
import kotlinApi.KotlinObject;
class C {
@@ -1,4 +1,5 @@
// IGNORE_K2
// !ADD_KOTLIN_API
import kotlinApi.*
class C {
@@ -1,4 +1,5 @@
// IGNORE_K2
// !ADD_KOTLIN_API
import kotlinApi.*
class C {
@@ -1,3 +1,4 @@
// !ADD_KOTLIN_API
import static kotlinApi.KotlinApiKt.*;
class C {
@@ -1,3 +1,4 @@
// !ADD_KOTLIN_API
import static kotlinApi.KotlinObject.*;
class C {
@@ -1,4 +1,5 @@
// IGNORE_K2
// !ADD_KOTLIN_API
import static kotlinApi.KotlinClass.CONST;
public class C {
@@ -1,4 +1,5 @@
// IGNORE_K2
// !ADD_KOTLIN_API
import static kotlinApi.KotlinClass.*;
public class C {
@@ -1,3 +1,4 @@
// !ADD_KOTLIN_API
import static kotlinApi.KotlinClass.getStaticProperty;
class C {
@@ -1,3 +1,4 @@
// !ADD_KOTLIN_API
import static kotlinApi.KotlinApiKt.extensionFunction;
import static kotlinApi.KotlinApiKt.getExtensionProperty;
import static kotlinApi.KotlinApiKt.setExtensionProperty;
@@ -1,3 +1,4 @@
// !ADD_KOTLIN_API
public class J {
public static void adjust(String name, int maxLen) {
String.valueOf(1 + 1);
@@ -1,5 +1,6 @@
import kotlinApi.extensionFunction
// !ADD_KOTLIN_API
object J {
fun adjust(name: String?, maxLen: Int) {
(1 + 1).toString()
@@ -1,4 +1,5 @@
// IGNORE_K2
// !ADD_JAVA_API
import javaApi.WithVarargConstructor;
import java.lang.String;
@@ -1,4 +1,5 @@
// IGNORE_K2
// !ADD_KOTLIN_API
package javaApi;
import kotlinApi.KotlinClass;
@@ -1,3 +1,4 @@
// !ADD_KOTLIN_API
package javaApi
import kotlinApi.KotlinClass
@@ -1,4 +1,5 @@
// IGNORE_K2
// !ADD_KOTLIN_API
import kotlinApi.KotlinInterface;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
@@ -1,4 +1,5 @@
// IGNORE_K2
// !ADD_JAVA_API
// JVM_TARGET: 17
import javaApi.Anon5;
import javaApi.TypeUseAnon1;
@@ -1,4 +1,5 @@
// IGNORE_K2
// !ADD_JAVA_API
class C extends javaApi.Derived {
public String foo(String s) { return s; }
}
@@ -1,5 +1,6 @@
import javaApi.Derived
// !ADD_JAVA_API
internal class C : Derived() {
override fun foo(s: String?): String? {
return s
@@ -1,4 +1,6 @@
// IGNORE_K2
// !ADD_KOTLIN_API
// !ADD_JAVA_API
import java.util.HashMap;
import kotlinApi.KotlinClass;
import javaApi.JavaClass;
@@ -1,3 +1,4 @@
// IGNORE_K2
public class TestInnerClasses {
public class Base {}
public class Derived extends Base {}
@@ -1,4 +1,5 @@
// IGNORE_K2
// !ADD_JAVA_API
import javaApi.Base;
class C extends Base {
@@ -1,3 +1,4 @@
// !ADD_JPA_ANNOTATIONS
public class J {
@javax.persistence.Column
private String title;
@@ -1,5 +1,6 @@
import javax.persistence.Column
// !ADD_JPA_ANNOTATIONS
class J {
@Column
private var title: String? = null
@@ -1,4 +1,5 @@
// IGNORE_K2
// !ADD_JAVA_API
import java.util.*;
import javaApi.T;
@@ -1,4 +1,5 @@
// IGNORE_K2
// !ADD_JAVA_API
package test;
import javaApi.*;
@@ -1,3 +1,4 @@
// !ADD_JAVA_API
package test
import javaApi.MethodReferenceHelperClass