|
1 | 1 | package com.github.xepozz.testo.tests.run |
2 | 2 |
|
| 3 | +import com.github.xepozz.testo.TestoClasses |
3 | 4 | import com.github.xepozz.testo.TestoUtil |
| 5 | +import com.github.xepozz.testo.hasAttribute |
4 | 6 | import com.github.xepozz.testo.index.TestoDataProviderUtils |
5 | 7 | import com.github.xepozz.testo.isTestoBench |
6 | 8 | import com.github.xepozz.testo.isTestoClass |
7 | 9 | import com.github.xepozz.testo.isTestoDataProviderLike |
8 | 10 | import com.github.xepozz.testo.isTestoExecutable |
9 | 11 | import com.github.xepozz.testo.isTestoFile |
| 12 | +import com.github.xepozz.testo.isTestoFunction |
| 13 | +import com.github.xepozz.testo.isTestoMethod |
10 | 14 | import com.github.xepozz.testo.util.PsiUtil |
11 | 15 | import com.intellij.execution.Location |
12 | 16 | import com.intellij.execution.PsiLocation |
@@ -67,10 +71,7 @@ class TestoRunConfigurationProducer : PhpTestConfigurationProducer<TestoRunConfi |
67 | 71 | testRunnerSettings.methodName += ":$index" |
68 | 72 | testRunnerSettings.dataProviderIndex = index |
69 | 73 | testRunnerSettings.dataSetIndex = -1 |
70 | | - |
71 | | - if (function.isTestoBench()) { |
72 | | - testRunnerSettings.testoType = BENCH_TYPE |
73 | | - } |
| 74 | + testRunnerSettings.testoType = resolveTestoType(element) |
74 | 75 |
|
75 | 76 | return element |
76 | 77 | } |
@@ -119,9 +120,7 @@ class TestoRunConfigurationProducer : PhpTestConfigurationProducer<TestoRunConfi |
119 | 120 | } |
120 | 121 | } |
121 | 122 | val result = super.setupConfiguration(testRunnerSettings, element, virtualFile) |
122 | | - if (element.isTestoBench()) { |
123 | | - testRunnerSettings.testoType = BENCH_TYPE |
124 | | - } |
| 123 | + testRunnerSettings.testoType = resolveTestoType(element) |
125 | 124 | return result |
126 | 125 | } |
127 | 126 |
|
@@ -523,8 +522,29 @@ class TestoRunConfigurationProducer : PhpTestConfigurationProducer<TestoRunConfi |
523 | 522 | } |
524 | 523 |
|
525 | 524 | companion object Companion { |
| 525 | + const val TEST_TYPE = "test" |
| 526 | + const val INLINE_TYPE = "inline" |
526 | 527 | const val BENCH_TYPE = "bench" |
527 | 528 |
|
| 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 | + |
528 | 548 | val METHOD = Condition<PsiElement> { |
529 | 549 | it.isTestoExecutable() || (it is Method && TestoDataProviderUtils.isDataProvider(it)) |
530 | 550 | } |
|
0 commit comments