blob: c6c0be4359bda3feb279c2cc3d6011ff4e36247a [file] [log] [blame] [edit]
plugins {
kotlin("jvm")
id("jps-compatible")
}
dependencies {
testImplementation(projectTests(":compiler:tests-common-new"))
testImplementation(projectTests(":compiler:fir:fir2ir"))
testRuntimeOnly(projectTests(":compiler"))
testImplementation(libs.junit4)
testImplementation(kotlinStdlib())
testImplementation(project(":libraries:tools:abi-comparator"))
testApi(platform(libs.junit.bom))
testImplementation(libs.junit.platform.suite)
testRuntimeOnly(libs.junit.jupiter.engine)
testRuntimeOnly(libs.junit.vintage.engine)
testImplementation(intellijCore())
}
sourceSets {
"main" {}
"test" { projectDefault() }
}
fun Project.codegenTest(
target: Int,
jdk: JdkMajorVersion,
jvm: String = jdk.majorVersion.toString(),
targetInTestClass: String = "$target",
body: Test.() -> Unit = {}
): TaskProvider<Test> = projectTest(
taskName = "codegenTarget${targetInTestClass}Jvm${jvm}Test",
jUnitMode = JUnitMode.JUnit5,
maxMetaspaceSizeMb = 1024
) {
dependsOn(":dist")
workingDir = rootDir
useJUnitPlatform()
val testName = "JvmTarget${targetInTestClass}OnJvm${jvm}"
filter.includeTestsMatching("org.jetbrains.kotlin.codegen.jdk.$testName")
javaLauncher.set(project.getToolchainLauncherFor(jdk))
systemProperty("kotlin.test.default.jvm.target", "${if (target <= 8) "1." else ""}$target")
body()
doFirst {
logger.warn("Running tests with $target target and ${javaLauncher.get().metadata.installationPath.asFile}")
}
group = "verification"
}
//JDK 8
// This is default one and is executed in default build configuration
codegenTest(target = 8, jdk = JdkMajorVersion.JDK_1_8)
//JDK 11
codegenTest(target = 8, jdk = JdkMajorVersion.JDK_11_0)
codegenTest(target = 11, jdk = JdkMajorVersion.JDK_11_0)
//JDK 17
codegenTest(target = 8, jdk = JdkMajorVersion.JDK_17_0)
codegenTest(target = 17, jdk = JdkMajorVersion.JDK_17_0) {
systemProperty("kotlin.test.box.d8.disable", true)
}
//..also add this two tasks to build after adding fresh jdks to build agents
val mostRecentJdk = JdkMajorVersion.values().last()
//LAST JDK from JdkMajorVersion available on machine
codegenTest(target = 8, jvm = "Last", jdk = mostRecentJdk)
codegenTest(
target = mostRecentJdk.majorVersion,
targetInTestClass = "Last",
jvm = "Last",
jdk = mostRecentJdk
) {
systemProperty("kotlin.test.box.d8.disable", true)
}
testsJar()