[FIR plugin] Compile annotations in plugin sandbox to jvm and js

This is needed for further testing of plugins with JS backend
This commit is contained in:
Dmitriy Novozhilov
2023-05-31 16:19:23 +03:00
committed by Space Team
parent a0f7656d2b
commit fd670d33cb
7 changed files with 47 additions and 11 deletions
+1
View File
@@ -62,6 +62,7 @@ build/
.idea/artifacts/kotlin_test_wasm_* .idea/artifacts/kotlin_test_wasm_*
.idea/artifacts/kotlinx_atomicfu_runtime_* .idea/artifacts/kotlinx_atomicfu_runtime_*
.idea/artifacts/kotlinx_cli_jvm_* .idea/artifacts/kotlinx_cli_jvm_*
.idea/artifacts/plugin_annotations_*.xml
.idea/jarRepositories.xml .idea/jarRepositories.xml
.idea/csv-plugin.xml .idea/csv-plugin.xml
.idea/libraries-with-intellij-classes.xml .idea/libraries-with-intellij-classes.xml
+17 -5
View File
@@ -12,6 +12,7 @@ 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.Configuration
import org.gradle.api.artifacts.ProjectDependency import org.gradle.api.artifacts.ProjectDependency
import org.gradle.api.attributes.Usage
import org.gradle.api.file.FileCollection import org.gradle.api.file.FileCollection
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
@@ -19,6 +20,8 @@ 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.* import org.gradle.kotlin.dsl.*
import org.gradle.kotlin.dsl.support.serviceOf import org.gradle.kotlin.dsl.support.serviceOf
import org.jetbrains.kotlin.gradle.plugin.KotlinPlatformType
import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinUsages
import java.io.File import java.io.File
import java.lang.Character.isLowerCase import java.lang.Character.isLowerCase
import java.lang.Character.isUpperCase import java.lang.Character.isUpperCase
@@ -374,17 +377,26 @@ fun Task.acceptAndroidSdkLicenses() {
} }
fun Project.confugureFirPluginAnnotationsDependency(testTask: TaskProvider<Test>) { fun Project.confugureFirPluginAnnotationsDependency(testTask: TaskProvider<Test>) {
val firPluginAnnotations: Configuration by configurations.creating val firPluginJvmAnnotations: Configuration by configurations.creating
val firPluginJsAnnotations: Configuration by configurations.creating {
attributes {
attribute(Usage.USAGE_ATTRIBUTE, objects.named(org.jetbrains.kotlin.gradle.plugin.mpp.KotlinUsages.KOTLIN_RUNTIME))
attribute(org.jetbrains.kotlin.gradle.plugin.KotlinPlatformType.attribute, org.jetbrains.kotlin.gradle.plugin.KotlinPlatformType.js)
}
}
dependencies { dependencies {
firPluginAnnotations(project(":plugins:fir-plugin-prototype:plugin-annotations")) { isTransitive = false } firPluginJvmAnnotations(project(":plugins:fir-plugin-prototype:plugin-annotations")) { isTransitive = false }
firPluginJsAnnotations(project(":plugins:fir-plugin-prototype:plugin-annotations")) { isTransitive = false }
} }
testTask.configure { testTask.configure {
dependsOn(firPluginAnnotations) dependsOn(firPluginJvmAnnotations, firPluginJsAnnotations)
val localFirPluginAnnotations: FileCollection = firPluginAnnotations val localFirPluginJvmAnnotations: FileCollection = firPluginJvmAnnotations
val localFirPluginJsAnnotations: FileCollection = firPluginJsAnnotations
doFirst { doFirst {
systemProperty("firPluginAnnotations.path", localFirPluginAnnotations.singleFile.canonicalPath) systemProperty("firPluginAnnotations.jvm.path", localFirPluginJvmAnnotations.singleFile.canonicalPath)
systemProperty("firPluginAnnotations.js.path", localFirPluginJsAnnotations.singleFile.canonicalPath)
} }
} }
} }
@@ -47,7 +47,7 @@ projectTest(parallel = true, jUnitMode = JUnitMode.JUnit4, maxHeapSizeMb = 3072)
workingDir = rootDir workingDir = rootDir
useJUnitPlatform() useJUnitPlatform()
dependsOn(":plugins:fir-plugin-prototype:jar") dependsOn(":plugins:fir-plugin-prototype:jar")
dependsOn(":plugins:fir-plugin-prototype:plugin-annotations:jar") dependsOn(":plugins:fir-plugin-prototype:plugin-annotations:distAnnotations")
} }
testsJar() testsJar()
@@ -1,10 +1,31 @@
plugins { plugins {
kotlin("jvm") kotlin("multiplatform")
id("jps-compatible")
} }
dependencies { kotlin {
api(kotlinStdlib()) jvm()
js {
binaries.executable()
}
sourceSets {
val commonMain by getting {
dependencies {
implementation(kotlin("stdlib-common"))
}
}
val jvmMain by getting {
dependencies {1
implementation(kotlin("stdlib-jdk8"))
}
}
val jsMain by getting {
dependencies {
implementation(kotlin("stdlib-js"))
}
}
}
} }
sourceSets { sourceSets {
@@ -12,4 +33,6 @@ sourceSets {
"test" { none() } "test" { none() }
} }
runtimeJar() tasks.register("distAnnotations") {
dependsOn("jvmJar", "jsJar")
}