[split tests] AT-3274 Override with nullable types

GitOrigin-RevId: 39b4b509b983d2533210e9e7166c22bd9368eb20
This commit is contained in:
Nikita Kudrin
2025-10-30 09:37:01 +00:00
committed by intellij-monorepo-bot
parent 2cb1a8c73f
commit db00ad5d0c
@@ -12,39 +12,40 @@ import java.lang.reflect.Method
*/
open class MonolithAndSplitModeInvocationInterceptor : InvocationInterceptor {
override fun interceptTestTemplateMethod(
invocation: InvocationInterceptor.Invocation<Void>,
invocationContext: ReflectiveInvocationContext<Method>,
extensionContext: ExtensionContext,
invocation: InvocationInterceptor.Invocation<Void?>,
invocationContext: ReflectiveInvocationContext<Method?>,
extensionContext: ExtensionContext?,
) {
intercept<Void>(invocation, invocationContext)
intercept<Void?>(invocation, invocationContext)
}
override fun interceptTestMethod(
invocation: InvocationInterceptor.Invocation<Void>, invocationContext: ReflectiveInvocationContext<Method>,
extensionContext: ExtensionContext,
invocation: InvocationInterceptor.Invocation<Void?>, invocationContext: ReflectiveInvocationContext<Method?>,
extensionContext: ExtensionContext?,
) {
intercept<Void>(invocation, invocationContext)
intercept<Void?>(invocation, invocationContext)
}
override fun <T : Any> interceptTestFactoryMethod(
invocation: InvocationInterceptor.Invocation<T>, invocationContext: ReflectiveInvocationContext<Method>,
override fun <T> interceptTestFactoryMethod(
invocation: InvocationInterceptor.Invocation<T?>, invocationContext: ReflectiveInvocationContext<Method?>,
extensionContext: ExtensionContext,
): T {
return intercept<T>(invocation, invocationContext)
): T? {
return intercept<T?>(invocation, invocationContext)
}
override fun interceptBeforeEachMethod(
invocation: InvocationInterceptor.Invocation<Void>,
invocationContext: ReflectiveInvocationContext<Method>,
extensionContext: ExtensionContext,
invocation: InvocationInterceptor.Invocation<Void?>,
invocationContext: ReflectiveInvocationContext<Method?>,
extensionContext: ExtensionContext?,
) {
intercept<Void>(invocation, invocationContext)
intercept<Void?>(invocation, invocationContext)
}
private fun <T : Any> intercept(invocation: InvocationInterceptor.Invocation<T>, invocationContext: ReflectiveInvocationContext<Method>): T {
private fun <T> intercept(invocation: InvocationInterceptor.Invocation<T?>, invocationContext: ReflectiveInvocationContext<Method?>): T? {
if (invocationContext.arguments.any { it::class == BackgroundRunWithLambda::class }) {
System.err.println("Test ${invocationContext.executable.name} has ${BackgroundRunWithLambda::class.qualifiedName} parameter. Test is expected to use it directly.")
invocation.proceed()
System.err.println("Test ${invocationContext.executable?.name} has ${BackgroundRunWithLambda::class.qualifiedName} parameter. Test is expected to use it directly.")
return invocation.proceed()
// TODO: https://youtrack.jetbrains.com/issue/AT-3414/Lambda-tests-implement-parameterization-for-all-possible-JUnit5-test-scenarios
}
@Suppress("RAW_RUN_BLOCKING")
@@ -53,15 +54,16 @@ open class MonolithAndSplitModeInvocationInterceptor : InvocationInterceptor {
// TODO: provide and option to start IDE for every test
MonolithAndSplitModeIdeInstanceInitializer.ideBackgroundRun.runLambda(InjectedLambda::class,
params = mapOf(
"testClass" to invocationContext.targetClass.name,
"testMethod" to invocationContext.executable.name,
"testClass" to (invocationContext.targetClass.name ?: ""),
"testMethod" to (invocationContext.executable?.name ?: ""),
"methodArguments" to argumentsToString(invocationContext.arguments)
))
}
invocation.skip()
// TODO: find a way to deal with JUnit5 test factory (see overrides above)
return Void.TYPE as T
// TODO: https://youtrack.jetbrains.com/issue/AT-3414/Lambda-tests-implement-parameterization-for-all-possible-JUnit5-test-scenarios
// find a way to deal with JUnit5 test factory (see overrides above)
return null
}
}