Skip to content

Commit 5e46dfd

Browse files
committed
Add --type flag for all attribute types: test, inline, bench
Resolve testoType from the specific attribute FQN: - #[Test], #[Data*] → --type=test - #[TestInline] → --type=inline - #[Bench] → --type=bench https://claude.ai/code/session_01TmFvjfMtoxTvddQRBzsbPN
1 parent 42964a4 commit 5e46dfd

1 file changed

Lines changed: 27 additions & 7 deletions

File tree

src/main/kotlin/com/github/xepozz/testo/tests/run/TestoRunConfigurationProducer.kt

Lines changed: 27 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,16 @@
11
package com.github.xepozz.testo.tests.run
22

3+
import com.github.xepozz.testo.TestoClasses
34
import com.github.xepozz.testo.TestoUtil
5+
import com.github.xepozz.testo.hasAttribute
46
import com.github.xepozz.testo.index.TestoDataProviderUtils
57
import com.github.xepozz.testo.isTestoBench
68
import com.github.xepozz.testo.isTestoClass
79
import com.github.xepozz.testo.isTestoDataProviderLike
810
import com.github.xepozz.testo.isTestoExecutable
911
import com.github.xepozz.testo.isTestoFile
12+
import com.github.xepozz.testo.isTestoFunction
13+
import com.github.xepozz.testo.isTestoMethod
1014
import com.github.xepozz.testo.util.PsiUtil
1115
import com.intellij.execution.Location
1216
import com.intellij.execution.PsiLocation
@@ -67,10 +71,7 @@ class TestoRunConfigurationProducer : PhpTestConfigurationProducer<TestoRunConfi
6771
testRunnerSettings.methodName += ":$index"
6872
testRunnerSettings.dataProviderIndex = index
6973
testRunnerSettings.dataSetIndex = -1
70-
71-
if (function.isTestoBench()) {
72-
testRunnerSettings.testoType = BENCH_TYPE
73-
}
74+
testRunnerSettings.testoType = resolveTestoType(element)
7475

7576
return element
7677
}
@@ -119,9 +120,7 @@ class TestoRunConfigurationProducer : PhpTestConfigurationProducer<TestoRunConfi
119120
}
120121
}
121122
val result = super.setupConfiguration(testRunnerSettings, element, virtualFile)
122-
if (element.isTestoBench()) {
123-
testRunnerSettings.testoType = BENCH_TYPE
124-
}
123+
testRunnerSettings.testoType = resolveTestoType(element)
125124
return result
126125
}
127126

@@ -523,8 +522,29 @@ class TestoRunConfigurationProducer : PhpTestConfigurationProducer<TestoRunConfi
523522
}
524523

525524
companion object Companion {
525+
const val TEST_TYPE = "test"
526+
const val INLINE_TYPE = "inline"
526527
const val BENCH_TYPE = "bench"
527528

529+
fun resolveTestoType(element: PsiElement): String = when {
530+
element is PhpAttribute -> resolveTestoTypeFromAttribute(element)
531+
element.isTestoBench() -> BENCH_TYPE
532+
element.isTestoFunction() && (element as Function).hasAttribute(TestoClasses.TEST_INLINE) -> INLINE_TYPE
533+
element.isTestoMethod() || element.isTestoFunction() -> TEST_TYPE
534+
else -> ""
535+
}
536+
537+
private fun resolveTestoTypeFromAttribute(attribute: PhpAttribute): String {
538+
val fqn = attribute.fqn ?: return ""
539+
return when (fqn) {
540+
in TestoClasses.BENCH_ATTRIBUTES -> BENCH_TYPE
541+
TestoClasses.TEST_INLINE -> INLINE_TYPE
542+
TestoClasses.TEST -> TEST_TYPE
543+
in TestoClasses.DATA_ATTRIBUTES -> TEST_TYPE
544+
else -> ""
545+
}
546+
}
547+
528548
val METHOD = Condition<PsiElement> {
529549
it.isTestoExecutable() || (it is Method && TestoDataProviderUtils.isDataProvider(it))
530550
}

0 commit comments

Comments
 (0)