diff --git a/tools/intellij.lambda.testFramework/src/com/intellij/lambda/testFramework/junit/MonolithAndSplitModeInvocationInterceptor.kt b/tools/intellij.lambda.testFramework/src/com/intellij/lambda/testFramework/junit/MonolithAndSplitModeInvocationInterceptor.kt index 87f733f25c2d..4f970eaccc76 100644 --- a/tools/intellij.lambda.testFramework/src/com/intellij/lambda/testFramework/junit/MonolithAndSplitModeInvocationInterceptor.kt +++ b/tools/intellij.lambda.testFramework/src/com/intellij/lambda/testFramework/junit/MonolithAndSplitModeInvocationInterceptor.kt @@ -12,39 +12,40 @@ import java.lang.reflect.Method */ open class MonolithAndSplitModeInvocationInterceptor : InvocationInterceptor { override fun interceptTestTemplateMethod( - invocation: InvocationInterceptor.Invocation, - invocationContext: ReflectiveInvocationContext, - extensionContext: ExtensionContext, + invocation: InvocationInterceptor.Invocation, + invocationContext: ReflectiveInvocationContext, + extensionContext: ExtensionContext?, ) { - intercept(invocation, invocationContext) + intercept(invocation, invocationContext) } override fun interceptTestMethod( - invocation: InvocationInterceptor.Invocation, invocationContext: ReflectiveInvocationContext, - extensionContext: ExtensionContext, + invocation: InvocationInterceptor.Invocation, invocationContext: ReflectiveInvocationContext, + extensionContext: ExtensionContext?, ) { - intercept(invocation, invocationContext) + intercept(invocation, invocationContext) } - override fun interceptTestFactoryMethod( - invocation: InvocationInterceptor.Invocation, invocationContext: ReflectiveInvocationContext, + override fun interceptTestFactoryMethod( + invocation: InvocationInterceptor.Invocation, invocationContext: ReflectiveInvocationContext, extensionContext: ExtensionContext, - ): T { - return intercept(invocation, invocationContext) + ): T? { + return intercept(invocation, invocationContext) } override fun interceptBeforeEachMethod( - invocation: InvocationInterceptor.Invocation, - invocationContext: ReflectiveInvocationContext, - extensionContext: ExtensionContext, + invocation: InvocationInterceptor.Invocation, + invocationContext: ReflectiveInvocationContext, + extensionContext: ExtensionContext?, ) { - intercept(invocation, invocationContext) + intercept(invocation, invocationContext) } - private fun intercept(invocation: InvocationInterceptor.Invocation, invocationContext: ReflectiveInvocationContext): T { + private fun intercept(invocation: InvocationInterceptor.Invocation, invocationContext: ReflectiveInvocationContext): 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 } }