[kotlin] Do not use kotlin test framework templates in K1

Create test intention uses j2k under the hood, that's why it has to use java templates

#KTIJ-9787

GitOrigin-RevId: c09bce66dad527e94a5ce19d415beb703bf96ab4
This commit is contained in:
Vladimir Dolzhenko
2024-10-12 20:30:38 +02:00
committed by intellij-monorepo-bot
parent 50632c5985
commit 87e1ebdb33
9 changed files with 110 additions and 22 deletions

View File

@@ -1,3 +1,4 @@
public void tearDown() throws Exception {
super.tearDown();
${BODY}
}

View File

@@ -58,5 +58,6 @@
<orderEntry type="module" module-name="kotlin.refactorings.common" />
<orderEntry type="module" module-name="intellij.platform.core.ui" />
<orderEntry type="module" module-name="kotlin.base.facet" />
<orderEntry type="module" module-name="kotlin.base.plugin" />
</component>
</module>

View File

@@ -2,6 +2,7 @@
package org.jetbrains.kotlin.idea.codeinsights.impl.base.testIntegration
import com.intellij.ide.highlighter.JavaFileType
import com.intellij.openapi.module.Module
import com.intellij.openapi.project.Project
import com.intellij.psi.PsiClass
@@ -10,6 +11,7 @@ import com.intellij.refactoring.util.RefactoringMessageUtil
import com.intellij.testIntegration.createTest.CreateTestDialog
import org.jetbrains.annotations.Nls
import org.jetbrains.kotlin.idea.KotlinFileType
import org.jetbrains.kotlin.idea.base.plugin.KotlinPluginModeProvider
class KotlinCreateTestDialog(
project: Project,
@@ -23,5 +25,13 @@ class KotlinCreateTestDialog(
override fun getClassName(): String = explicitClassName ?: super.className
override fun checkCanCreateClass(): String? =
RefactoringMessageUtil.checkCanCreateClass(myTargetDirectory, getClassName(), KotlinFileType.INSTANCE)
RefactoringMessageUtil.checkCanCreateClass(
myTargetDirectory,
getClassName(),
if (KotlinPluginModeProvider.isK1Mode()) {
JavaFileType.INSTANCE
} else {
KotlinFileType.INSTANCE
}
)
}

View File

@@ -157,7 +157,13 @@ abstract class KotlinGenerateTestSupportActionBase(
project.executeWriteCommand(commandName) {
PsiDocumentManager.getInstance(project).commitAllDocuments()
var function = KtPsiFactory(project).createFunction(templateText)
val factory = PsiElementFactory.getInstance(project)
val psiMethod = factory.createMethodFromText(templateText, null)
psiMethod.throwsList.referenceElements.forEach { it.delete() }
var function = psiMethod.j2k(settings = publicByDefault) as? KtNamedFunction ?: run {
errorHint = KotlinBundle.message("action.generate.test.support.error.cant.convert.java.template")
return@executeWriteCommand
}
name?.let {
function = substituteNewName(function, it)
}

View File

@@ -2,9 +2,8 @@
package org.jetbrains.kotlin.idea.testIntegration
import com.intellij.codeInsight.navigation.activateFileWithPsiElement
import com.intellij.ide.highlighter.JavaFileType
import com.intellij.lang.java.JavaLanguage
import com.intellij.openapi.application.runWriteAction
import com.intellij.openapi.fileTypes.FileType
import com.intellij.openapi.module.Module
import com.intellij.openapi.options.advanced.AdvancedSettings
import com.intellij.openapi.project.Project
@@ -38,7 +37,7 @@ class KotlinCreateTestIntention: AbstractKotlinCreateTestIntention() {
generatedFile: PsiFile,
srcModule: Module
) {
if (generatedFile !is PsiJavaFile || generatedClass.language != JavaFileType.INSTANCE) return
if (generatedFile !is PsiJavaFile || generatedClass.language != JavaLanguage.INSTANCE) return
project.executeCommand<Unit>(
KotlinBundle.message("convert.class.0.to.kotlin", generatedClass.name.toString()),

View File

@@ -21,6 +21,7 @@ import com.intellij.util.ThreeState
import com.intellij.util.ThreeState.*
import org.jetbrains.kotlin.asJava.elements.KtLightElement
import org.jetbrains.kotlin.idea.KotlinLanguage
import org.jetbrains.kotlin.idea.base.plugin.KotlinPluginModeProvider
import org.jetbrains.kotlin.idea.stubindex.KotlinClassShortNameIndex
import org.jetbrains.kotlin.idea.testIntegration.framework.AbstractKotlinPsiBasedTestFramework
import org.jetbrains.kotlin.idea.testIntegration.framework.KotlinPsiBasedTestFramework
@@ -234,16 +235,32 @@ class KotlinJUnit3Framework: JUnit3Framework(), KotlinPsiBasedTestFramework {
psiBasedDelegate.isIgnoredMethod(declaration)
override fun getSetUpMethodFileTemplateDescriptor(): FileTemplateDescriptor? =
FileTemplateDescriptor("Kotlin JUnit3 SetUp Function.kt")
if (KotlinPluginModeProvider.isK1Mode()) {
super.getSetUpMethodFileTemplateDescriptor()
} else {
FileTemplateDescriptor("Kotlin JUnit3 SetUp Function.kt")
}
override fun getTearDownMethodFileTemplateDescriptor(): FileTemplateDescriptor? =
FileTemplateDescriptor("Kotlin JUnit3 TearDown Function.kt")
if (KotlinPluginModeProvider.isK1Mode()) {
super.getTearDownMethodFileTemplateDescriptor()
} else {
FileTemplateDescriptor("Kotlin JUnit3 TearDown Function.kt")
}
override fun getTestMethodFileTemplateDescriptor(): FileTemplateDescriptor =
FileTemplateDescriptor("Kotlin JUnit3 Test Function.kt")
if (KotlinPluginModeProvider.isK1Mode()) {
super.getTestMethodFileTemplateDescriptor()
} else {
FileTemplateDescriptor("Kotlin JUnit3 Test Function.kt")
}
override fun getTestClassFileTemplateDescriptor(): FileTemplateDescriptor? =
FileTemplateDescriptor("Kotlin JUnit3 Test Class.kt")
if (KotlinPluginModeProvider.isK1Mode()) {
super.getTestClassFileTemplateDescriptor()
} else {
FileTemplateDescriptor("Kotlin JUnit3 Test Class.kt")
}
}
private val TEST_CLASS_FQN = setOf(JUnitUtil.TEST_CASE_CLASS)

View File

@@ -15,6 +15,7 @@ import com.intellij.util.ThreeState.*
import com.siyeh.ig.junit.JUnitCommonClassNames
import org.jetbrains.kotlin.asJava.elements.KtLightElement
import org.jetbrains.kotlin.idea.KotlinLanguage
import org.jetbrains.kotlin.idea.base.plugin.KotlinPluginModeProvider
import org.jetbrains.kotlin.idea.testIntegration.framework.AbstractKotlinPsiBasedTestFramework
import org.jetbrains.kotlin.idea.testIntegration.framework.KotlinPsiBasedTestFramework
import org.jetbrains.kotlin.idea.testIntegration.framework.KotlinPsiBasedTestFramework.Companion.asKtClassOrObject
@@ -171,23 +172,43 @@ class KotlinJUnit4Framework: JUnit4Framework(), KotlinPsiBasedTestFramework {
psiBasedDelegate.isIgnoredMethod(declaration)
override fun getSetUpMethodFileTemplateDescriptor(): FileTemplateDescriptor? {
return FileTemplateDescriptor("Kotlin JUnit4 SetUp Function.kt")
return if (KotlinPluginModeProvider.isK1Mode()) {
super.getSetUpMethodFileTemplateDescriptor()
} else {
FileTemplateDescriptor("Kotlin JUnit4 SetUp Function.kt")
}
}
override fun getTearDownMethodFileTemplateDescriptor(): FileTemplateDescriptor? {
return FileTemplateDescriptor("Kotlin JUnit4 TearDown Function.kt")
return if (KotlinPluginModeProvider.isK1Mode()) {
super.getTearDownMethodFileTemplateDescriptor()
} else {
FileTemplateDescriptor("Kotlin JUnit4 TearDown Function.kt")
}
}
override fun getTestMethodFileTemplateDescriptor(): FileTemplateDescriptor {
return FileTemplateDescriptor("Kotlin JUnit4 Test Function.kt")
return if (KotlinPluginModeProvider.isK1Mode()) {
super.getTestMethodFileTemplateDescriptor()
} else {
FileTemplateDescriptor("Kotlin JUnit4 Test Function.kt")
}
}
override fun getParametersMethodFileTemplateDescriptor(): FileTemplateDescriptor? {
return FileTemplateDescriptor("Kotlin JUnit4 Parameters Function.kt")
return if (KotlinPluginModeProvider.isK1Mode()) {
super.getParametersMethodFileTemplateDescriptor()
} else {
FileTemplateDescriptor("Kotlin JUnit4 Parameters Function.kt")
}
}
override fun getTestClassFileTemplateDescriptor(): FileTemplateDescriptor? =
FileTemplateDescriptor("Kotlin JUnit4 Test Class.kt")
if (KotlinPluginModeProvider.isK1Mode()) {
super.getTestClassFileTemplateDescriptor()
} else {
FileTemplateDescriptor("Kotlin JUnit4 Test Class.kt")
}
override fun isFrameworkAvailable(clazz: PsiElement): Boolean {
return super.isFrameworkAvailable(clazz) || clazz is KtClass && psiBasedDelegate.isFrameworkAvailable(clazz)

View File

@@ -15,6 +15,7 @@ import com.intellij.util.ThreeState.*
import com.siyeh.ig.junit.JUnitCommonClassNames
import org.jetbrains.kotlin.asJava.elements.KtLightElement
import org.jetbrains.kotlin.idea.KotlinLanguage
import org.jetbrains.kotlin.idea.base.plugin.KotlinPluginModeProvider
import org.jetbrains.kotlin.idea.testIntegration.framework.AbstractKotlinPsiBasedTestFramework
import org.jetbrains.kotlin.idea.testIntegration.framework.KotlinPsiBasedTestFramework
import org.jetbrains.kotlin.idea.testIntegration.framework.KotlinPsiBasedTestFramework.Companion.asKtClassOrObject
@@ -153,19 +154,35 @@ class KotlinJUnit5Framework: JUnit5Framework(), KotlinPsiBasedTestFramework {
psiBasedDelegate.isIgnoredMethod(declaration)
override fun getSetUpMethodFileTemplateDescriptor(): FileTemplateDescriptor? {
return FileTemplateDescriptor("Kotlin JUnit5 SetUp Function.kt")
return if (KotlinPluginModeProvider.isK1Mode()) {
super.getSetUpMethodFileTemplateDescriptor()
} else {
FileTemplateDescriptor("Kotlin JUnit5 SetUp Function.kt")
}
}
override fun getTearDownMethodFileTemplateDescriptor(): FileTemplateDescriptor? {
return FileTemplateDescriptor("Kotlin JUnit5 TearDown Function.kt")
return if (KotlinPluginModeProvider.isK1Mode()) {
super.getTearDownMethodFileTemplateDescriptor()
} else {
FileTemplateDescriptor("Kotlin JUnit5 TearDown Function.kt")
}
}
override fun getTestMethodFileTemplateDescriptor(): FileTemplateDescriptor {
return FileTemplateDescriptor("Kotlin JUnit5 Test Function.kt")
return if (KotlinPluginModeProvider.isK1Mode()) {
super.getTestMethodFileTemplateDescriptor()
} else {
FileTemplateDescriptor("Kotlin JUnit5 Test Function.kt")
}
}
override fun getTestClassFileTemplateDescriptor(): FileTemplateDescriptor? =
FileTemplateDescriptor("Kotlin JUnit5 Test Class.kt")
if (KotlinPluginModeProvider.isK1Mode()) {
super.getTestClassFileTemplateDescriptor()
} else {
FileTemplateDescriptor("Kotlin JUnit5 Test Class.kt")
}
}
private val METHOD_ANNOTATION_FQN = setOf(

View File

@@ -174,15 +174,27 @@ class KotlinTestNGFramework: TestNGFramework(), KotlinPsiBasedTestFramework {
psiBasedDelegate.isIgnoredMethod(declaration)
override fun getSetUpMethodFileTemplateDescriptor(): FileTemplateDescriptor? {
return FileTemplateDescriptor("Kotlin TestNG SetUp Function.kt")
return if (KotlinPluginModeProvider.isK1Mode()) {
super.getSetUpMethodFileTemplateDescriptor()
} else {
FileTemplateDescriptor("Kotlin TestNG SetUp Function.kt")
}
}
override fun getTearDownMethodFileTemplateDescriptor(): FileTemplateDescriptor? {
return FileTemplateDescriptor("Kotlin TestNG TearDown Function.kt")
return if (KotlinPluginModeProvider.isK1Mode()) {
super.getTearDownMethodFileTemplateDescriptor()
} else {
FileTemplateDescriptor("Kotlin TestNG TearDown Function.kt")
}
}
override fun getTestMethodFileTemplateDescriptor(): FileTemplateDescriptor {
return FileTemplateDescriptor("Kotlin TestNG Test Function.kt")
return if (KotlinPluginModeProvider.isK1Mode()) {
super.getTestMethodFileTemplateDescriptor()
} else {
FileTemplateDescriptor("Kotlin TestNG Test Function.kt")
}
}
override fun getTestClassFileTemplateDescriptor(): FileTemplateDescriptor? =
@@ -193,7 +205,11 @@ class KotlinTestNGFramework: TestNGFramework(), KotlinPsiBasedTestFramework {
}
override fun getParametersMethodFileTemplateDescriptor(): FileTemplateDescriptor? {
return FileTemplateDescriptor("Kotlin TestNG Parameters Function.kt")
return if (KotlinPluginModeProvider.isK1Mode()) {
super.getParametersMethodFileTemplateDescriptor()
} else {
FileTemplateDescriptor("Kotlin TestNG Parameters Function.kt")
}
}
}