mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-01-07 13:39:36 +07:00
[jvm] IDEA-307776 Fix ExtendsWith on method false positive
On JUnitMalformedDeclarationInspection. GitOrigin-RevId: 858ac93dc62fdf53135546094404b7d8e4646cdf
This commit is contained in:
committed by
intellij-monorepo-bot
parent
b7cfb9b9d0
commit
f327cfb78b
@@ -190,8 +190,7 @@ private class JUnitMalformedSignatureVisitor(
|
||||
validVisibility = ::notPrivate,
|
||||
validParameters = { method ->
|
||||
if (method.uastParameters.isEmpty()) emptyList()
|
||||
else if (MetaAnnotationUtil.isMetaAnnotated(method.javaPsi, listOf(
|
||||
ORG_JUNIT_JUPITER_PARAMS_PROVIDER_ARGUMENTS_SOURCE))) null // handled in parameterized test check
|
||||
else if (MetaAnnotationUtil.isMetaAnnotated(method.javaPsi, listOf(ORG_JUNIT_JUPITER_PARAMS_PROVIDER_ARGUMENTS_SOURCE))) null // handled in parameterized test check
|
||||
else if (method.hasParameterResolver()) method.uastParameters
|
||||
else method.uastParameters.filter { param ->
|
||||
param.type.canonicalText == ORG_JUNIT_JUPITER_API_TEST_INFO
|
||||
@@ -214,10 +213,10 @@ private class JUnitMalformedSignatureVisitor(
|
||||
private fun UMethod.hasParameterResolver(): Boolean {
|
||||
val sourcePsi = this.sourcePsi ?: return false
|
||||
val alternatives = UastFacade.convertToAlternatives(sourcePsi, arrayOf(UMethod::class.java))
|
||||
return alternatives.any { it.javaPsi.containingClass?.hasParameterResolver() == true }
|
||||
return alternatives.any { it.javaPsi.containingClass?.hasParameterResolver() == true || it.javaPsi.hasParameterResolver() }
|
||||
}
|
||||
|
||||
private fun PsiClass.hasParameterResolver(): Boolean {
|
||||
private fun PsiModifierListOwner.hasParameterResolver(): Boolean {
|
||||
val annotation = MetaAnnotationUtil.findMetaAnnotationsInHierarchy(this, listOf(ORG_JUNIT_JUPITER_API_EXTENSION_EXTEND_WITH))
|
||||
.asSequence()
|
||||
.firstOrNull()
|
||||
|
||||
@@ -1178,4 +1178,21 @@ class KotlinJUnitMalformedDeclarationInspectionTest : JUnitMalformedDeclarationI
|
||||
}
|
||||
""".trimIndent())
|
||||
}
|
||||
|
||||
fun `test extends with no highlighting`() {
|
||||
myFixture.testHighlighting(ULanguage.KOTLIN, """
|
||||
class MockitoExtension : org.junit.jupiter.api.extension.BeforeEachCallback, org.junit.jupiter.api.extension.AfterEachCallback, org.junit.jupiter.api.extension.ParameterResolver {
|
||||
override fun beforeEach(context: org.junit.jupiter.api.extension.ExtensionContext?) { }
|
||||
override fun afterEach(context: org.junit.jupiter.api.extension.ExtensionContext?) { }
|
||||
override fun supportsParameter(parameterContext: org.junit.jupiter.api.extension.ParameterContext?, extensionContext: org.junit.jupiter.api.extension.ExtensionContext?): Boolean { TODO() }
|
||||
override fun resolveParameter(parameterContext: org.junit.jupiter.api.extension.ParameterContext?, extensionContext: org.junit.jupiter.api.extension.ExtensionContext?): Any { TODO() }
|
||||
}
|
||||
|
||||
class MyTest {
|
||||
@org.junit.jupiter.api.Test
|
||||
@org.junit.jupiter.api.extension.ExtendWith(MockitoExtension::class)
|
||||
fun testFoo(x: String) { }
|
||||
}
|
||||
""".trimIndent())
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user