Fix flaky FIR tests
failing with 'Jar with annotations does not exist. Please run :plugins:fir-plugin-prototype:plugin-annotations:jar'
This commit is contained in:
@@ -38,7 +38,6 @@ dependencies {
|
||||
testApi(toolsJar())
|
||||
testApiJUnit5()
|
||||
testApi(project(":analysis:symbol-light-classes"))
|
||||
|
||||
}
|
||||
|
||||
sourceSets {
|
||||
@@ -53,10 +52,7 @@ projectTest(jUnitMode = JUnitMode.JUnit5) {
|
||||
dependsOn(":dist")
|
||||
workingDir = rootDir
|
||||
useJUnitPlatform()
|
||||
|
||||
// PluginAnnotationsProvider needs this jar during tests
|
||||
dependsOn(":plugins:fir-plugin-prototype:plugin-annotations:jar")
|
||||
}
|
||||
}.also { confugureFirPluginAnnotationsDependency(it) }
|
||||
|
||||
testsJar()
|
||||
|
||||
|
||||
@@ -43,7 +43,7 @@ projectTest(jUnitMode = JUnitMode.JUnit5) {
|
||||
dependsOn(":dist")
|
||||
workingDir = rootDir
|
||||
useJUnitPlatform()
|
||||
}
|
||||
}.also { confugureFirPluginAnnotationsDependency(it) }
|
||||
|
||||
testsJar()
|
||||
|
||||
|
||||
@@ -10,13 +10,13 @@
|
||||
import com.sun.management.OperatingSystemMXBean
|
||||
import org.gradle.api.Project
|
||||
import org.gradle.api.Task
|
||||
import org.gradle.api.artifacts.Configuration
|
||||
import org.gradle.api.artifacts.ProjectDependency
|
||||
import org.gradle.api.file.FileSystemOperations
|
||||
import org.gradle.api.internal.tasks.testing.filter.DefaultTestFilter
|
||||
import org.gradle.api.tasks.TaskProvider
|
||||
import org.gradle.api.tasks.testing.Test
|
||||
import org.gradle.kotlin.dsl.extra
|
||||
import org.gradle.kotlin.dsl.project
|
||||
import org.gradle.kotlin.dsl.*
|
||||
import org.gradle.kotlin.dsl.support.serviceOf
|
||||
import java.io.File
|
||||
import java.lang.Character.isLowerCase
|
||||
@@ -314,3 +314,18 @@ fun Task.useAndroidSdk() {
|
||||
fun Task.useAndroidJar() {
|
||||
TaskUtils.useAndroidJar(this)
|
||||
}
|
||||
|
||||
fun Project.confugureFirPluginAnnotationsDependency(testTask: TaskProvider<Test>) {
|
||||
val firPluginAnnotations: Configuration by configurations.creating
|
||||
|
||||
dependencies {
|
||||
firPluginAnnotations(project(":plugins:fir-plugin-prototype:plugin-annotations")) { isTransitive = false }
|
||||
}
|
||||
|
||||
testTask.configure {
|
||||
dependsOn(firPluginAnnotations)
|
||||
doFirst {
|
||||
systemProperty("firPluginAnnotations.path", firPluginAnnotations.singleFile.canonicalPath)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -59,10 +59,8 @@ if (kotlinBuildProperties.isInJpsBuildIdeaSync) {
|
||||
|
||||
projectTest(parallel = true, jUnitMode = JUnitMode.JUnit5) {
|
||||
dependsOn(":dist")
|
||||
dependsOn(":plugins:fir-plugin-prototype:plugin-annotations:jar")
|
||||
|
||||
workingDir = rootDir
|
||||
useJUnitPlatform()
|
||||
}
|
||||
}.also { confugureFirPluginAnnotationsDependency(it) }
|
||||
|
||||
testsJar()
|
||||
|
||||
+12
-9
@@ -15,17 +15,20 @@ import java.io.File
|
||||
import java.io.FilenameFilter
|
||||
|
||||
class PluginAnnotationsProvider(testServices: TestServices) : EnvironmentConfigurator(testServices) {
|
||||
companion object {
|
||||
private const val ANNOTATIONS_JAR_DIR = "plugins/fir-plugin-prototype/plugin-annotations/build/libs/"
|
||||
private val ANNOTATIONS_JAR_FILTER = FilenameFilter { _, name -> name.startsWith("plugin-annotations") && name.endsWith(".jar") }
|
||||
|
||||
private val firPluginAnnotationsJar: File by lazy {
|
||||
val firPluginAnnotationsPath = System.getProperty("firPluginAnnotations.path") ?: error("firPluginAnnotations.path system property is not set")
|
||||
val firPluginAnnotationsFile = File(firPluginAnnotationsPath)
|
||||
if (!firPluginAnnotationsFile.isFile &&
|
||||
firPluginAnnotationsFile.name.startsWith("plugin-annotations") &&
|
||||
firPluginAnnotationsFile.name.endsWith(".jar")
|
||||
) {
|
||||
error("Can't find fir plugin annotations jar file in firPluginAnnotations.path system property")
|
||||
}
|
||||
firPluginAnnotationsFile
|
||||
}
|
||||
|
||||
override fun configureCompilerConfiguration(configuration: CompilerConfiguration, module: TestModule) {
|
||||
val libDir = File(ANNOTATIONS_JAR_DIR)
|
||||
testServices.assertions.assertTrue(libDir.exists() && libDir.isDirectory, failMessage)
|
||||
val jar = libDir.listFiles(ANNOTATIONS_JAR_FILTER)?.firstOrNull() ?: testServices.assertions.fail(failMessage)
|
||||
configuration.addJvmClasspathRoot(jar)
|
||||
configuration.addJvmClasspathRoot(firPluginAnnotationsJar)
|
||||
}
|
||||
|
||||
private val failMessage = { "Jar with annotations does not exist. Please run :plugins:fir-plugin-prototype:plugin-annotations:jar" }
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user