diff --git a/idea/src/META-INF/junit.xml b/idea/src/META-INF/junit.xml index fe8cea18191..099716d030a 100644 --- a/idea/src/META-INF/junit.xml +++ b/idea/src/META-INF/junit.xml @@ -1,5 +1,5 @@ - + diff --git a/idea/src/org/jetbrains/kotlin/idea/run/JetTestNgConfigurationProducer.java b/idea/src/org/jetbrains/kotlin/idea/run/JetTestNgConfigurationProducer.java index 8ee7a4ec3ec..a2662807dc6 100644 --- a/idea/src/org/jetbrains/kotlin/idea/run/JetTestNgConfigurationProducer.java +++ b/idea/src/org/jetbrains/kotlin/idea/run/JetTestNgConfigurationProducer.java @@ -90,7 +90,7 @@ public class JetTestNgConfigurationProducer extends TestNGConfigurationProducer JetClass jetClass = PsiTreeUtil.getParentOfType(leaf, JetClass.class, false); if (jetClass == null) { - jetClass = JetJUnitConfigurationProducer.getClassDeclarationInFile(jetFile); + jetClass = KotlinJUnitRunConfigurationProducer.Companion.getClassDeclarationInFile(jetFile); } if (jetClass == null) { diff --git a/idea/src/org/jetbrains/kotlin/idea/run/KotlinJUnitRunConfigurationProducer.kt b/idea/src/org/jetbrains/kotlin/idea/run/KotlinJUnitRunConfigurationProducer.kt index 480f8c8db3b..dc6d8d021ec 100644 --- a/idea/src/org/jetbrains/kotlin/idea/run/KotlinJUnitRunConfigurationProducer.kt +++ b/idea/src/org/jetbrains/kotlin/idea/run/KotlinJUnitRunConfigurationProducer.kt @@ -14,142 +14,134 @@ * limitations under the License. */ -package org.jetbrains.kotlin.idea.run; +package org.jetbrains.kotlin.idea.run -import com.intellij.execution.JavaRunConfigurationExtensionManager; -import com.intellij.execution.Location; -import com.intellij.execution.PsiLocation; -import com.intellij.execution.RunnerAndConfigurationSettings; -import com.intellij.execution.actions.ConfigurationContext; -import com.intellij.execution.junit.JUnitConfiguration; -import com.intellij.execution.junit.JUnitConfigurationType; -import com.intellij.execution.junit.JUnitUtil; -import com.intellij.execution.junit.RuntimeConfigurationProducer; -import com.intellij.openapi.module.Module; -import com.intellij.openapi.project.DumbService; -import com.intellij.psi.PsiClass; -import com.intellij.psi.PsiElement; -import com.intellij.psi.PsiMethod; -import com.intellij.psi.util.PsiTreeUtil; -import org.jetbrains.annotations.NotNull; -import org.jetbrains.annotations.Nullable; -import org.jetbrains.kotlin.asJava.LightClassUtil; -import org.jetbrains.kotlin.idea.project.ProjectStructureUtil; -import org.jetbrains.kotlin.idea.util.ProjectRootsUtil; -import org.jetbrains.kotlin.psi.*; +import com.intellij.execution.JavaRunConfigurationExtensionManager +import com.intellij.execution.Location +import com.intellij.execution.PsiLocation +import com.intellij.execution.RunnerAndConfigurationSettings +import com.intellij.execution.actions.ConfigurationContext +import com.intellij.execution.junit.JUnitConfiguration +import com.intellij.execution.junit.JUnitConfigurationType +import com.intellij.execution.junit.JUnitUtil +import com.intellij.execution.junit.RuntimeConfigurationProducer +import com.intellij.openapi.module.Module +import com.intellij.openapi.project.DumbService +import com.intellij.psi.PsiClass +import com.intellij.psi.PsiElement +import com.intellij.psi.PsiMethod +import com.intellij.psi.util.PsiTreeUtil +import org.jetbrains.kotlin.asJava.LightClassUtil +import org.jetbrains.kotlin.idea.project.ProjectStructureUtil +import org.jetbrains.kotlin.idea.util.ProjectRootsUtil +import org.jetbrains.kotlin.psi.* -public class JetJUnitConfigurationProducer extends RuntimeConfigurationProducer { - private JetElement myElement; +public class KotlinJUnitRunConfigurationProducer : RuntimeConfigurationProducer(JUnitConfigurationType.getInstance()) { + private var myElement: JetElement? = null - public JetJUnitConfigurationProducer() { - super(JUnitConfigurationType.getInstance()); + override fun getSourceElement(): PsiElement? { + return myElement } - @Override - public PsiElement getSourceElement() { - return myElement; - } + override fun createConfigurationByElement(location: Location<*>, context: ConfigurationContext): RunnerAndConfigurationSettings? { + if (DumbService.getInstance(location.getProject()).isDumb()) return null - @Override - protected RunnerAndConfigurationSettings createConfigurationByElement(Location location, ConfigurationContext context) { - if (DumbService.getInstance(location.getProject()).isDumb()) return null; - - PsiElement leaf = location.getPsiElement(); + val leaf = location.getPsiElement() if (!ProjectRootsUtil.isInProjectOrLibSource(leaf)) { - return null; + return null } - if (!(leaf.getContainingFile() instanceof JetFile)) { - return null; + if (leaf.getContainingFile() !is JetFile) { + return null } - JetFile jetFile = (JetFile) leaf.getContainingFile(); + val jetFile = leaf.getContainingFile() as JetFile if (ProjectStructureUtil.isJsKotlinModule(jetFile)) { - return null; + return null } - JetNamedFunction function = PsiTreeUtil.getParentOfType(leaf, JetNamedFunction.class, false); + val function = PsiTreeUtil.getParentOfType(leaf, javaClass(), false) if (function != null) { - myElement = function; + myElement = function @SuppressWarnings("unchecked") - JetElement owner = PsiTreeUtil.getParentOfType(function, JetFunction.class, JetClass.class); + val owner = PsiTreeUtil.getParentOfType(function, javaClass(), javaClass()) - if (owner instanceof JetClass) { - PsiClass delegate = LightClassUtil.getPsiClass((JetClass) owner); + if (owner is JetClass) { + val delegate = LightClassUtil.getPsiClass(owner) if (delegate != null) { - for (PsiMethod method : delegate.getMethods()) { - if (method.getNavigationElement() == function) { - Location methodLocation = PsiLocation.fromPsiElement(method); + for (method in delegate.getMethods()) { + if (method.getNavigationElement() === function) { + val methodLocation = PsiLocation.fromPsiElement(method) if (JUnitUtil.isTestMethod(methodLocation, false)) { - RunnerAndConfigurationSettings settings = cloneTemplateConfiguration(context.getProject(), context); - JUnitConfiguration configuration = (JUnitConfiguration) settings.getConfiguration(); + val settings = cloneTemplateConfiguration(context.getProject(), context) + val configuration = settings.getConfiguration() as JUnitConfiguration - Module originalModule = configuration.getConfigurationModule().getModule(); - configuration.beMethodConfiguration(methodLocation); - configuration.restoreOriginalModule(originalModule); - JavaRunConfigurationExtensionManager.getInstance().extendCreatedConfiguration(configuration, location); + val originalModule = configuration.getConfigurationModule().getModule() + configuration.beMethodConfiguration(methodLocation) + configuration.restoreOriginalModule(originalModule) + JavaRunConfigurationExtensionManager.getInstance().extendCreatedConfiguration(configuration, location) - return settings; + return settings } - break; + break } } } } } - JetClass jetClass = PsiTreeUtil.getParentOfType(leaf, JetClass.class, false); + var jetClass = PsiTreeUtil.getParentOfType(leaf, javaClass(), false) if (jetClass == null) { - jetClass = getClassDeclarationInFile(jetFile); + jetClass = getClassDeclarationInFile(jetFile) } if (jetClass != null) { - myElement = jetClass; - PsiClass delegate = LightClassUtil.getPsiClass(jetClass); + myElement = jetClass + val delegate = LightClassUtil.getPsiClass(jetClass) if (delegate != null && JUnitUtil.isTestClass(delegate)) { - RunnerAndConfigurationSettings settings = cloneTemplateConfiguration(context.getProject(), context); - JUnitConfiguration configuration = (JUnitConfiguration) settings.getConfiguration(); + val settings = cloneTemplateConfiguration(context.getProject(), context) + val configuration = settings.getConfiguration() as JUnitConfiguration - Module originalModule = configuration.getConfigurationModule().getModule(); - configuration.beClassConfiguration(delegate); - configuration.restoreOriginalModule(originalModule); - JavaRunConfigurationExtensionManager.getInstance().extendCreatedConfiguration(configuration, location); + val originalModule = configuration.getConfigurationModule().getModule() + configuration.beClassConfiguration(delegate) + configuration.restoreOriginalModule(originalModule) + JavaRunConfigurationExtensionManager.getInstance().extendCreatedConfiguration(configuration, location) - return settings; + return settings } } - return null; + return null } - @Nullable - static JetClass getClassDeclarationInFile(JetFile jetFile) { - JetClass tempSingleDeclaration = null; + override fun compareTo(o: Any?): Int { + return 0 + } - for (JetDeclaration jetDeclaration : jetFile.getDeclarations()) { - if (jetDeclaration instanceof JetClass) { - JetClass declaration = (JetClass) jetDeclaration; + companion object { - if (tempSingleDeclaration == null) { - tempSingleDeclaration = declaration; - } - else { - // There are several class declarations in file - return null; + fun getClassDeclarationInFile(jetFile: JetFile): JetClass? { + var tempSingleDeclaration: JetClass? = null + + for (jetDeclaration in jetFile.getDeclarations()) { + if (jetDeclaration is JetClass) { + + if (tempSingleDeclaration == null) { + tempSingleDeclaration = jetDeclaration + } + else { + // There are several class declarations in file + return null + } } } + + return tempSingleDeclaration } - - return tempSingleDeclaration; - } - - @Override - public int compareTo(@NotNull Object o) { - return 0; } }