From 6ac4c11b222ab8f5018bca8d599ea10c9a93387f Mon Sep 17 00:00:00 2001 From: Vladislav Rassokhin Date: Fri, 29 Mar 2024 23:16:16 +0100 Subject: [PATCH] [test framework] IJI-1588 Fix filter out non-performance classes in performance-only runs GitOrigin-RevId: 807a28b0586034a14fce44d819cfcd7118215dc8 --- .../intellij/build/impl/TestingTasksImpl.kt | 4 ++-- .../tests/JUnit5TeamCityRunnerForTestAllSuite.java | 14 ++++++++++++-- 2 files changed, 14 insertions(+), 4 deletions(-) diff --git a/platform/build-scripts/src/org/jetbrains/intellij/build/impl/TestingTasksImpl.kt b/platform/build-scripts/src/org/jetbrains/intellij/build/impl/TestingTasksImpl.kt index 4def1100baa1..763b88acfb28 100644 --- a/platform/build-scripts/src/org/jetbrains/intellij/build/impl/TestingTasksImpl.kt +++ b/platform/build-scripts/src/org/jetbrains/intellij/build/impl/TestingTasksImpl.kt @@ -771,7 +771,7 @@ internal class TestingTasksImpl(private val context: CompilationContext, private fun runOneClass(testClassName: String) { val exitCode = blockAndSpan("running test class '$testClassName'") { runJUnit5Engine( - systemProperties = systemProperties + ("idea.performance.tests.discovery.filter" to "true"), + systemProperties = systemProperties, jvmArgs = jvmArgs, envVariables = envVariables, bootstrapClasspath = bootstrapClasspath, @@ -806,7 +806,7 @@ internal class TestingTasksImpl(private val context: CompilationContext, private val exitCode = blockAndSpan("running tests in package '$packageName'") { runJUnit5Engine( - systemProperties = systemProperties + ("idea.performance.tests.discovery.filter" to "true"), + systemProperties = systemProperties, jvmArgs = jvmArgs, envVariables = envVariables, bootstrapClasspath = bootstrapClasspath, diff --git a/platform/testFramework/bootstrap/src/com/intellij/tests/JUnit5TeamCityRunnerForTestAllSuite.java b/platform/testFramework/bootstrap/src/com/intellij/tests/JUnit5TeamCityRunnerForTestAllSuite.java index 88743b8e02e2..2b45cff16684 100644 --- a/platform/testFramework/bootstrap/src/com/intellij/tests/JUnit5TeamCityRunnerForTestAllSuite.java +++ b/platform/testFramework/bootstrap/src/com/intellij/tests/JUnit5TeamCityRunnerForTestAllSuite.java @@ -62,8 +62,13 @@ public final class JUnit5TeamCityRunnerForTestAllSuite { else { selectors = Collections.singletonList(DiscoverySelectors.selectMethod(args[0], args[1])); } - if (Boolean.getBoolean("idea.performance.tests.discovery.filter")) { - // Add filter + // isIncludingPerformanceTestsRun() || isPerformanceTestsRun() && isPerformanceTest(test) -> add test + // otherwise -> skip test + if (Boolean.getBoolean("idea.include.performance.tests")) { + // no filter + } + else if (Boolean.getBoolean("idea.performance.tests")) { + // Add filter for 'isPerformanceTest' filters.add(createPerformancePostDiscoveryFilter(classLoader)); } LauncherDiscoveryRequest discoveryRequest = LauncherDiscoveryRequestBuilder.request() @@ -93,6 +98,11 @@ public final class JUnit5TeamCityRunnerForTestAllSuite { .findStatic(Class.forName("com.intellij.testFramework.TestFrameworkUtil", true, classLoader), "isPerformanceTest", MethodType.methodType(boolean.class, String.class, String.class)); return new PostDiscoveryFilter() { + @Override + public String toString() { + return "PerformanceOnlyTestsPostDiscoveryFilter"; + } + private FilterResult isIncluded(String className, String methodName) { try { if ((boolean)method.invokeExact(methodName, className)) {