From eeb345a0d77d66557858dc4791caba8f89862627 Mon Sep 17 00:00:00 2001 From: Vladimir Dolzhenko Date: Wed, 12 May 2021 23:50:06 +0200 Subject: [PATCH] Make Kotlin run test gutter icons consistent with Java ones GitOrigin-RevId: dd5aa78ca16e0e780fd80984d4e46d638ba79979 --- .../KotlinTestRunLineMarkerContributor.kt | 26 +++++++------------ .../platform/JvmIdePlatformKindTooling.kt | 9 +++---- .../kotlin/idea/platform/testRunningUtils.kt | 2 +- .../ide/konan/NativeIdePlatformKindTooling.kt | 2 +- 4 files changed, 14 insertions(+), 25 deletions(-) diff --git a/plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/highlighter/KotlinTestRunLineMarkerContributor.kt b/plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/highlighter/KotlinTestRunLineMarkerContributor.kt index d45b328d8f31..b8f00a0de29a 100644 --- a/plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/highlighter/KotlinTestRunLineMarkerContributor.kt +++ b/plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/highlighter/KotlinTestRunLineMarkerContributor.kt @@ -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, - 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 { diff --git a/plugins/kotlin/jvm/src/org/jetbrains/kotlin/idea/platform/JvmIdePlatformKindTooling.kt b/plugins/kotlin/jvm/src/org/jetbrains/kotlin/idea/platform/JvmIdePlatformKindTooling.kt index 57937eeb9a91..f082b663096e 100644 --- a/plugins/kotlin/jvm/src/org/jetbrains/kotlin/idea/platform/JvmIdePlatformKindTooling.kt +++ b/plugins/kotlin/jvm/src/org/jetbrains/kotlin/idea/platform/JvmIdePlatformKindTooling.kt @@ -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 diff --git a/plugins/kotlin/jvm/src/org/jetbrains/kotlin/idea/platform/testRunningUtils.kt b/plugins/kotlin/jvm/src/org/jetbrains/kotlin/idea/platform/testRunningUtils.kt index 959972cc1f75..62c49d6569c4 100644 --- a/plugins/kotlin/jvm/src/org/jetbrains/kotlin/idea/platform/testRunningUtils.kt +++ b/plugins/kotlin/jvm/src/org/jetbrains/kotlin/idea/platform/testRunningUtils.kt @@ -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 { diff --git a/plugins/kotlin/native/src/org/jetbrains/kotlin/ide/konan/NativeIdePlatformKindTooling.kt b/plugins/kotlin/native/src/org/jetbrains/kotlin/ide/konan/NativeIdePlatformKindTooling.kt index 9e320e4f6b39..a45908e6d5cd 100644 --- a/plugins/kotlin/native/src/org/jetbrains/kotlin/ide/konan/NativeIdePlatformKindTooling.kt +++ b/plugins/kotlin/native/src/org/jetbrains/kotlin/ide/konan/NativeIdePlatformKindTooling.kt @@ -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 {