Make Kotlin run test gutter icons consistent with Java ones

GitOrigin-RevId: dd5aa78ca16e0e780fd80984d4e46d638ba79979
This commit is contained in:
Vladimir Dolzhenko
2021-05-12 22:58:52 +00:00
committed by intellij-monorepo-bot
parent 7d5351896a
commit eeb345a0d7
4 changed files with 14 additions and 25 deletions
@@ -8,10 +8,7 @@ package org.jetbrains.kotlin.idea.highlighter
import com.intellij.execution.TestStateStorage
import com.intellij.execution.lineMarker.ExecutorAction
import com.intellij.execution.lineMarker.RunLineMarkerContributor
import com.intellij.execution.testframework.TestIconMapper
import com.intellij.execution.testframework.sm.runner.states.TestStateInfo
import com.intellij.icons.AllIcons
import com.intellij.openapi.project.Project
import com.intellij.psi.PsiElement
import com.intellij.util.Function
import org.jetbrains.kotlin.idea.KotlinBundle
@@ -36,23 +33,18 @@ class KotlinTestRunLineMarkerContributor : RunLineMarkerContributor() {
companion object {
fun getTestStateIcon(
urls: List<String>,
project: Project,
strict: Boolean,
defaultIcon: Icon = AllIcons.RunConfigurations.TestState.Run
declaration: KtNamedDeclaration,
defaultIcon: Icon = AllIcons.RunConfigurations.TestState.Run,
): Icon? {
for (url in urls) {
val state = TestStateStorage.getInstance(project).getState(url) ?: continue
return when (TestIconMapper.getMagnitude(state.magnitude)) {
TestStateInfo.Magnitude.ERROR_INDEX,
TestStateInfo.Magnitude.FAILED_INDEX -> AllIcons.RunConfigurations.TestState.Red2
TestStateInfo.Magnitude.PASSED_INDEX,
TestStateInfo.Magnitude.COMPLETE_INDEX -> AllIcons.RunConfigurations.TestState.Green2
else -> defaultIcon
val testStateStorage = TestStateStorage.getInstance(declaration.project)
val isClass = declaration is KtClass
var state: TestStateStorage.Record? = run {
for (url in urls) {
testStateStorage.getState(url)?.let { return@run it }
}
null
}
return if (strict) null else defaultIcon
return getTestStateIcon(state, isClass)
}
fun SimplePlatform.providesRunnableTests(): Boolean {
@@ -22,10 +22,7 @@ import org.jetbrains.kotlin.idea.platform.testintegration.NoLightTestFrameworkRe
import org.jetbrains.kotlin.idea.platform.testintegration.ResolvedLightTestFrameworkResult
import org.jetbrains.kotlin.idea.platform.testintegration.UnsureLightTestFrameworkResult
import org.jetbrains.kotlin.platform.impl.JvmIdePlatformKind
import org.jetbrains.kotlin.psi.KtClassOrObject
import org.jetbrains.kotlin.psi.KtFunction
import org.jetbrains.kotlin.psi.KtNamedDeclaration
import org.jetbrains.kotlin.psi.KtNamedFunction
import org.jetbrains.kotlin.psi.*
import org.jetbrains.kotlin.utils.PathUtil
import javax.swing.Icon
@@ -76,12 +73,12 @@ class JvmIdePlatformKindTooling : IdePlatformKindTooling() {
val (urls, framework) = calculateUrlsToFramework(declaration) ?: return null
framework?.let {
return getTestStateIcon(urls, declaration.project, strict = false, it.icon)
return getTestStateIcon(urls, declaration, defaultIcon = it.icon)
}
descriptorProvider()?.takeIf { it.isKotlinTestDeclaration() } ?: return null
return getTestStateIcon(urls, declaration.project, strict = false)
return getTestStateIcon(urls, declaration)
}
override fun acceptsAsEntryPoint(function: KtFunction) = true
@@ -59,7 +59,7 @@ fun getGenericTestIcon(
val prefix = if (testName != null) "test://" else "suite://"
val url = prefix + locations.joinWithEscape('.')
return getTestStateIcon(listOf("java:$url", url), declaration.project, strict = false)
return getTestStateIcon(listOf("java:$url", url), declaration)
}
private tailrec fun DeclarationDescriptor.isIgnored(): Boolean {
@@ -72,7 +72,7 @@ class NativeIdePlatformKindTooling : IdePlatformKindTooling() {
else -> return null
}
return getTestStateIcon(urls, declaration.project, strict = false)
return getTestStateIcon(urls, declaration)
}
override fun acceptsAsEntryPoint(function: KtFunction): Boolean {