[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
This commit is contained in:
Ilia Kirianovskii
2026-02-12 17:55:44 +00:00
committed by intellij-monorepo-bot
parent f91cb12fa2
commit c34ef90391
2 changed files with 19 additions and 12 deletions
@@ -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<String>,
modulePath: List<String>?,
testClasspath: List<String>,
suiteName: String?,
suiteName: String,
methodName: String?,
devBuildSettings: DevBuildServerSettings?,
): Int {
@@ -1165,7 +1170,7 @@ internal class TestingTasksImpl(context: CompilationContext, private val options
envVariables: Map<String, String>,
modulePath: List<String>?,
classpath: List<String>,
suiteName: String?,
suiteName: String,
methodName: String?,
devBuildModeSettings: DevBuildServerSettings?,
): Int {
@@ -1206,7 +1211,7 @@ internal class TestingTasksImpl(context: CompilationContext, private val options
val environment: MutableMap<String, String> = 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)
@@ -235,9 +235,13 @@ public final class JUnit5TeamCityRunner {
public static class TCLogRecordListener extends LogRecordListener {
private static final List<String> 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