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())
|
testApi(toolsJar())
|
||||||
testApiJUnit5()
|
testApiJUnit5()
|
||||||
testApi(project(":analysis:symbol-light-classes"))
|
testApi(project(":analysis:symbol-light-classes"))
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
sourceSets {
|
sourceSets {
|
||||||
@@ -53,10 +52,7 @@ projectTest(jUnitMode = JUnitMode.JUnit5) {
|
|||||||
dependsOn(":dist")
|
dependsOn(":dist")
|
||||||
workingDir = rootDir
|
workingDir = rootDir
|
||||||
useJUnitPlatform()
|
useJUnitPlatform()
|
||||||
|
}.also { confugureFirPluginAnnotationsDependency(it) }
|
||||||
// PluginAnnotationsProvider needs this jar during tests
|
|
||||||
dependsOn(":plugins:fir-plugin-prototype:plugin-annotations:jar")
|
|
||||||
}
|
|
||||||
|
|
||||||
testsJar()
|
testsJar()
|
||||||
|
|
||||||
|
|||||||
@@ -43,7 +43,7 @@ projectTest(jUnitMode = JUnitMode.JUnit5) {
|
|||||||
dependsOn(":dist")
|
dependsOn(":dist")
|
||||||
workingDir = rootDir
|
workingDir = rootDir
|
||||||
useJUnitPlatform()
|
useJUnitPlatform()
|
||||||
}
|
}.also { confugureFirPluginAnnotationsDependency(it) }
|
||||||
|
|
||||||
testsJar()
|
testsJar()
|
||||||
|
|
||||||
|
|||||||
@@ -10,13 +10,13 @@
|
|||||||
import com.sun.management.OperatingSystemMXBean
|
import com.sun.management.OperatingSystemMXBean
|
||||||
import org.gradle.api.Project
|
import org.gradle.api.Project
|
||||||
import org.gradle.api.Task
|
import org.gradle.api.Task
|
||||||
|
import org.gradle.api.artifacts.Configuration
|
||||||
import org.gradle.api.artifacts.ProjectDependency
|
import org.gradle.api.artifacts.ProjectDependency
|
||||||
import org.gradle.api.file.FileSystemOperations
|
import org.gradle.api.file.FileSystemOperations
|
||||||
import org.gradle.api.internal.tasks.testing.filter.DefaultTestFilter
|
import org.gradle.api.internal.tasks.testing.filter.DefaultTestFilter
|
||||||
import org.gradle.api.tasks.TaskProvider
|
import org.gradle.api.tasks.TaskProvider
|
||||||
import org.gradle.api.tasks.testing.Test
|
import org.gradle.api.tasks.testing.Test
|
||||||
import org.gradle.kotlin.dsl.extra
|
import org.gradle.kotlin.dsl.*
|
||||||
import org.gradle.kotlin.dsl.project
|
|
||||||
import org.gradle.kotlin.dsl.support.serviceOf
|
import org.gradle.kotlin.dsl.support.serviceOf
|
||||||
import java.io.File
|
import java.io.File
|
||||||
import java.lang.Character.isLowerCase
|
import java.lang.Character.isLowerCase
|
||||||
@@ -314,3 +314,18 @@ fun Task.useAndroidSdk() {
|
|||||||
fun Task.useAndroidJar() {
|
fun Task.useAndroidJar() {
|
||||||
TaskUtils.useAndroidJar(this)
|
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) {
|
projectTest(parallel = true, jUnitMode = JUnitMode.JUnit5) {
|
||||||
dependsOn(":dist")
|
dependsOn(":dist")
|
||||||
dependsOn(":plugins:fir-plugin-prototype:plugin-annotations:jar")
|
|
||||||
|
|
||||||
workingDir = rootDir
|
workingDir = rootDir
|
||||||
useJUnitPlatform()
|
useJUnitPlatform()
|
||||||
}
|
}.also { confugureFirPluginAnnotationsDependency(it) }
|
||||||
|
|
||||||
testsJar()
|
testsJar()
|
||||||
|
|||||||
+12
-9
@@ -15,17 +15,20 @@ import java.io.File
|
|||||||
import java.io.FilenameFilter
|
import java.io.FilenameFilter
|
||||||
|
|
||||||
class PluginAnnotationsProvider(testServices: TestServices) : EnvironmentConfigurator(testServices) {
|
class PluginAnnotationsProvider(testServices: TestServices) : EnvironmentConfigurator(testServices) {
|
||||||
companion object {
|
|
||||||
private const val ANNOTATIONS_JAR_DIR = "plugins/fir-plugin-prototype/plugin-annotations/build/libs/"
|
private val firPluginAnnotationsJar: File by lazy {
|
||||||
private val ANNOTATIONS_JAR_FILTER = FilenameFilter { _, name -> name.startsWith("plugin-annotations") && name.endsWith(".jar") }
|
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) {
|
override fun configureCompilerConfiguration(configuration: CompilerConfiguration, module: TestModule) {
|
||||||
val libDir = File(ANNOTATIONS_JAR_DIR)
|
configuration.addJvmClasspathRoot(firPluginAnnotationsJar)
|
||||||
testServices.assertions.assertTrue(libDir.exists() && libDir.isDirectory, failMessage)
|
|
||||||
val jar = libDir.listFiles(ANNOTATIONS_JAR_FILTER)?.firstOrNull() ?: testServices.assertions.fail(failMessage)
|
|
||||||
configuration.addJvmClasspathRoot(jar)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
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