From c34ef9039192cc72ca390f225905328886bc74ed Mon Sep 17 00:00:00 2001 From: Ilia Kirianovskii Date: Thu, 5 Feb 2026 21:53:05 +0100 Subject: [PATCH] [build] Migrate JUnit 5 tests to a new JUnit5TeamCityRunner (IJI-3451) https://youtrack.jetbrains.com/issue/AT-4051 https://youtrack.jetbrains.com/issue/AT-4052 https://youtrack.jetbrains.com/issue/AT-4053 https://youtrack.jetbrains.com/issue/AT-4058 GitOrigin-RevId: a7e02cfdf848a12fc8bbe05055eb74574f643d23 --- .../intellij/build/impl/TestingTasksImpl.kt | 23 +++++++++++-------- .../intellij/tests/JUnit5TeamCityRunner.java | 8 +++++-- 2 files changed, 19 insertions(+), 12 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 78a668d70590..d36af64b8234 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 @@ -799,13 +799,16 @@ internal class TestingTasksImpl(context: CompilationContext, private val options val testClassesListFile = Files.createTempFile("tests-to-run-", ".list").apply { Files.delete(this) } runJUnit5Engine( mainModule = mainModule, - systemProperties = systemProperties + ("intellij.build.test.list.classes" to testClassesListFile.absolutePathString()), + systemProperties = systemProperties + listOf( + "intellij.build.test.list.classes" to testClassesListFile.absolutePathString(), + "intellij.build.test.engine.vintage" to "false", + ), jvmArgs = jvmArgs, envVariables = envVariables, bootstrapClasspath = bootstrapClasspath, modulePath = modulePath, testClasspath = testClasspath, - suiteName = null, + suiteName = "__classpathroot__", methodName = null, devBuildSettings = null, ) @@ -971,13 +974,15 @@ internal class TestingTasksImpl(context: CompilationContext, private val options block("run junit 5 tests${spanNameSuffix}") { runJUnit5Engine( mainModule = mainModule, - systemProperties = systemProperties + additionalProperties + additionalPropertiesJUnit5, + systemProperties = systemProperties + additionalProperties + additionalPropertiesJUnit5 + listOf( + "intellij.build.test.engine.vintage" to "false", + ), jvmArgs = jvmArgs, envVariables = envVariables, bootstrapClasspath = bootstrapClasspath, modulePath = modulePath, testClasspath = testClasspath, - suiteName = null, + suiteName = "__classpathroot__", methodName = null, devBuildSettings = devBuildServerSettings, ) @@ -1102,7 +1107,7 @@ internal class TestingTasksImpl(context: CompilationContext, private val options bootstrapClasspath: List, modulePath: List?, testClasspath: List, - suiteName: String?, + suiteName: String, methodName: String?, devBuildSettings: DevBuildServerSettings?, ): Int { @@ -1165,7 +1170,7 @@ internal class TestingTasksImpl(context: CompilationContext, private val options envVariables: Map, modulePath: List?, classpath: List, - suiteName: String?, + suiteName: String, methodName: String?, devBuildModeSettings: DevBuildServerSettings?, ): Int { @@ -1206,7 +1211,7 @@ internal class TestingTasksImpl(context: CompilationContext, private val options val environment: MutableMap = HashMap(envVariables) - val mainClass = if (suiteName == null) "com.intellij.tests.JUnit5TeamCityRunnerForTestsOnClasspath" else "com.intellij.tests.JUnit5TeamCityRunner" + val mainClass = "com.intellij.tests.JUnit5TeamCityRunner" if (devBuildModeSettings == null) { args.add(mainClass) } @@ -1214,9 +1219,7 @@ internal class TestingTasksImpl(context: CompilationContext, private val options devBuildModeSettings.apply(mainClass, mainModule, args, environment) } - if (suiteName != null) { - args.add(suiteName) - } + args.add(suiteName) if (methodName != null) { args.add(methodName) diff --git a/platform/testFramework/bootstrap/src/com/intellij/tests/JUnit5TeamCityRunner.java b/platform/testFramework/bootstrap/src/com/intellij/tests/JUnit5TeamCityRunner.java index 2a69f8185a3d..4afa298b4d23 100644 --- a/platform/testFramework/bootstrap/src/com/intellij/tests/JUnit5TeamCityRunner.java +++ b/platform/testFramework/bootstrap/src/com/intellij/tests/JUnit5TeamCityRunner.java @@ -235,9 +235,13 @@ public final class JUnit5TeamCityRunner { public static class TCLogRecordListener extends LogRecordListener { private static final List KNOWN_EXCEPTIONAL_WARNINGS = List.of( - "Discovered 2 'junit-platform.properties' configuration files on the classpath (see below); only the first (*) will be used.", // https://github.com/junit-team/junit-framework/issues/2794 + "Deleting symbolic link from location inside of temp dir (", // https://youtrack.jetbrains.com/issue/AT-4053 + "Discovered 2 'junit-platform.properties' configuration files on the classpath (see below); only the first (*) will be used.", // https://github.com/junit-team/junit-framework/issues/2794, https://youtrack.jetbrains.com/issue/AT-4058 "Discovered 3 'junit-platform.properties' configuration files on the classpath (see below); only the first (*) will be used.", - "Discovered 4 'junit-platform.properties' configuration files on the classpath (see below); only the first (*) will be used." + "Discovered 4 'junit-platform.properties' configuration files on the classpath (see below); only the first (*) will be used.", + "Failed to invoke TestWatcher [com.intellij.ide.starter.junit5.JUnit5TestWatcher] for method [com.intellij.workspaceModel.integrationTests.tests.aggregator.maven.", // https://youtrack.jetbrains.com/issue/AT-4052 + "TestExecutionListener [com.intellij.ide.starter.junit5.FreeSpacePrinter] threw exception for method: executionStarted(TestIdentifier [uniqueId = [engine:group-by-mode]/[class:com.jetbrains.rdct.lambdaTestsUi.UiInfrastructureTest]/", // https://youtrack.jetbrains.com/issue/AT-4051 + "Type implements CloseableResource but not AutoCloseable: org.testcontainers.junit.jupiter.TestcontainersExtension$StoreAdapter" // https://github.com/testcontainers/testcontainers-java/issues/10525 ); @Override