@@ -5,12 +5,17 @@ import com.intellij.psi.PsiElement
55import com.intellij.psi.PsiFile
66import com.intellij.psi.util.PsiTreeUtil
77import com.jetbrains.php.lang.psi.PhpFile
8- import com.jetbrains.php.lang.psi.elements.Function
98import com.jetbrains.php.lang.psi.elements.Method
9+ import com.jetbrains.php.lang.psi.elements.Function
1010import com.jetbrains.php.lang.psi.elements.PhpAttributesOwner
1111import com.jetbrains.php.lang.psi.elements.PhpClass
1212
13- fun PsiElement.isTestoExecutable () = isTestoFunction() || isTestoMethod()
13+ fun PsiElement.isTestoExecutable () = isTestoFunction() || isTestoMethod() || isTestoBench()
14+
15+ fun PsiElement.isTestoBench () = when (this ) {
16+ is Method -> hasAnyAttribute(TestoClasses .BENCH_WITH )
17+ else -> false
18+ }
1419
1520fun PsiElement.isTestoFunction () = when (this ) {
1621 is Function -> hasAnyAttribute(TestoClasses .TEST_OLD ,TestoClasses .TEST_NEW , TestoClasses .TEST_INLINE_NEW , TestoClasses .TEST_INLINE_OLD )
@@ -32,12 +37,12 @@ fun PhpAttributesOwner.hasAttribute(fqn: String) = getAttributes(fqn).isNotEmpty
3237fun PhpAttributesOwner.hasAnyAttribute (vararg fqn : String ) = attributes.any { it.fqn in fqn }
3338
3439fun PsiElement.isTestoClass () = when (this ) {
35- is PhpClass -> TestoTestDescriptor .isTestClassName(name) || ownMethods.any { it.isTestoMethod() }
40+ is PhpClass -> TestoTestDescriptor .isTestClassName(name) || ownMethods.any { it.isTestoMethod() || it.isTestoBench() }
3641 else -> false
3742}
3843
3944fun PsiFile.isTestoFile () = when (this ) {
40- is PhpFile -> TestoTestDescriptor .isTestClassName(name.substringBeforeLast(" ." )) || (isTestoClassFile() || isTestoFunctionFile())
45+ is PhpFile -> TestoTestDescriptor .isTestClassName(name.substringBeforeLast(" ." )) || (isTestoClassFile() || isTestoFunctionFile() || isTestBenchFile() )
4146 else -> false
4247}
4348
@@ -47,6 +52,9 @@ fun PhpFile.isTestoClassFile() = PsiTreeUtil.findChildrenOfType(this, PhpClass::
4752fun PhpFile.isTestoFunctionFile () = PsiTreeUtil .findChildrenOfType(this , Function ::class .java)
4853 .any { it.isTestoFunction() }
4954
55+ fun PhpFile.isTestBenchFile () = PsiTreeUtil .findChildrenOfType(this , Function ::class .java)
56+ .any { it.isTestoBench() }
57+
5058fun <T > Sequence<T>.takeWhileInclusive (predicate : (T ) -> Boolean ) = sequence {
5159 with (iterator()) {
5260 while (hasNext()) {
0 commit comments