Prefer Kotlin Junit test run configurations when possible (KT-33787)
This commit is contained in:
@@ -0,0 +1,41 @@
|
||||
/*
|
||||
* Copyright 2010-2019 JetBrains s.r.o. and Kotlin Programming Language contributors.
|
||||
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
|
||||
*/
|
||||
|
||||
package org.jetbrains.kotlin.idea.run
|
||||
|
||||
import com.intellij.execution.ExecutionBundle
|
||||
import com.intellij.execution.configurations.ConfigurationFactory
|
||||
import com.intellij.execution.configurations.ConfigurationType
|
||||
import com.intellij.execution.configurations.ConfigurationTypeUtil
|
||||
import com.intellij.execution.configurations.RunConfiguration
|
||||
import com.intellij.execution.junit.JUnitConfiguration
|
||||
import com.intellij.icons.AllIcons
|
||||
import com.intellij.openapi.project.Project
|
||||
import javax.swing.Icon
|
||||
|
||||
class KotlinJUnitConfigurationType : ConfigurationType {
|
||||
val factory = object : ConfigurationFactory(this) {
|
||||
override fun createTemplateConfiguration(project: Project): RunConfiguration {
|
||||
return KotlinJUnitConfiguration("", project, this)
|
||||
}
|
||||
}
|
||||
|
||||
companion object {
|
||||
val instance: KotlinJUnitConfigurationType
|
||||
get() = ConfigurationTypeUtil.findConfigurationType(KotlinJUnitConfigurationType::class.java)
|
||||
}
|
||||
|
||||
override fun getConfigurationFactories(): Array<ConfigurationFactory> = arrayOf(factory)
|
||||
|
||||
override fun getDisplayName() = ExecutionBundle.message("junit.configuration.display.name")
|
||||
override fun getConfigurationTypeDescription() = ExecutionBundle.message("junit.configuration.description")
|
||||
override fun getIcon(): Icon = AllIcons.RunConfigurations.Junit
|
||||
override fun getId() = "KotlinJUnit"
|
||||
override fun getTag() = "junit"
|
||||
override fun isDumbAware() = false
|
||||
}
|
||||
|
||||
class KotlinJUnitConfiguration(name: String, project: Project, configurationFactory: ConfigurationFactory) :
|
||||
JUnitConfiguration(name, project, configurationFactory)
|
||||
+7
-1
@@ -12,6 +12,7 @@ import com.intellij.execution.RunnerAndConfigurationSettings
|
||||
import com.intellij.execution.actions.ConfigurationContext
|
||||
import com.intellij.execution.actions.ConfigurationFromContext
|
||||
import com.intellij.execution.actions.RunConfigurationProducer
|
||||
import com.intellij.execution.configurations.ConfigurationFactory
|
||||
import com.intellij.execution.configurations.ModuleBasedConfiguration
|
||||
import com.intellij.execution.junit.*
|
||||
import com.intellij.execution.testframework.AbstractPatternBasedConfigurationProducer
|
||||
@@ -32,8 +33,13 @@ import org.jetbrains.kotlin.psi.KtNamedFunction
|
||||
import org.jetbrains.kotlin.psi.psiUtil.getParentOfType
|
||||
|
||||
class KotlinJUnitRunConfigurationProducer : RunConfigurationProducer<JUnitConfiguration>(JUnitConfigurationType.getInstance()) {
|
||||
override fun getConfigurationFactory(): ConfigurationFactory {
|
||||
return KotlinJUnitConfigurationType.instance.factory
|
||||
}
|
||||
|
||||
override fun shouldReplace(self: ConfigurationFromContext, other: ConfigurationFromContext): Boolean {
|
||||
return other.isProducedBy(JUnitConfigurationProducer::class.java) || other.isProducedBy(AbstractPatternBasedConfigurationProducer::class.java)
|
||||
return other.isProducedBy(JUnitConfigurationProducer::class.java)
|
||||
|| other.isProducedBy(AbstractPatternBasedConfigurationProducer::class.java)
|
||||
}
|
||||
|
||||
private fun isAvailableInMpp(context: ConfigurationContext): Boolean {
|
||||
|
||||
@@ -18,6 +18,7 @@ package org.jetbrains.kotlin.idea.run
|
||||
|
||||
import com.intellij.execution.actions.ConfigurationContext
|
||||
import com.intellij.execution.actions.ConfigurationFromContext
|
||||
import com.intellij.execution.configurations.ConfigurationFactory
|
||||
import com.intellij.execution.junit.JUnitConfiguration
|
||||
import com.intellij.execution.junit.PatternConfigurationProducer
|
||||
import com.intellij.execution.junit.TestClassConfigurationProducer
|
||||
@@ -28,6 +29,10 @@ import org.jetbrains.kotlin.asJava.toLightClass
|
||||
import org.jetbrains.kotlin.psi.KtClassOrObject
|
||||
|
||||
class KotlinPatternConfigurationProducer : PatternConfigurationProducer() {
|
||||
override fun getConfigurationFactory(): ConfigurationFactory {
|
||||
return KotlinJUnitConfigurationType.instance.factory
|
||||
}
|
||||
|
||||
override fun setupConfigurationFromContext(
|
||||
configuration: JUnitConfiguration,
|
||||
context: ConfigurationContext,
|
||||
|
||||
Reference in New Issue
Block a user