diff --git a/gradle-plugin/api/gradle-plugin.api b/gradle-plugin/api/gradle-plugin.api index 855c4cee7..6e0be05d0 100644 --- a/gradle-plugin/api/gradle-plugin.api +++ b/gradle-plugin/api/gradle-plugin.api @@ -154,6 +154,10 @@ public abstract class kotlinx/rpc/protoc/DefaultProtoTask : org/gradle/api/Defau public final fun getProperties ()Lkotlinx/rpc/protoc/ProtoTask$Properties; } +public abstract class kotlinx/rpc/protoc/ExtractDependencyProtoImports : org/gradle/api/tasks/Sync, kotlinx/rpc/protoc/ProtoTask { + public fun getProperties ()Lkotlinx/rpc/protoc/ProtoTask$Properties; +} + public final class kotlinx/rpc/protoc/PluginJarsKt { public static final fun getGrpcKotlinMultiplatformProtocPluginJarPath (Lorg/gradle/api/Project;)Lorg/gradle/api/provider/Provider; public static final fun getKotlinMultiplatformProtocPluginJarPath (Lorg/gradle/api/Project;)Lorg/gradle/api/provider/Provider; @@ -190,7 +194,9 @@ public final class kotlinx/rpc/protoc/ProtoSourceSetKt { public static final fun getProto (Lorg/jetbrains/kotlin/gradle/plugin/KotlinSourceSet;)Lkotlinx/rpc/protoc/ProtoSourceSet; public static final fun proto (Lorg/gradle/api/NamedDomainObjectProvider;Lorg/gradle/api/Action;)V public static final fun proto (Lorg/gradle/api/tasks/SourceSet;Lorg/gradle/api/Action;)V + public static final fun proto (Lorg/jetbrains/kotlin/gradle/plugin/KotlinDependencyHandler;Ljava/lang/Object;)Lorg/gradle/api/artifacts/Dependency; public static final fun proto (Lorg/jetbrains/kotlin/gradle/plugin/KotlinSourceSet;Lorg/gradle/api/Action;)V + public static final fun protoImport (Lorg/jetbrains/kotlin/gradle/plugin/KotlinDependencyHandler;Ljava/lang/Object;)Lorg/gradle/api/artifacts/Dependency; public static final fun proto_kotlin (Lorg/gradle/api/NamedDomainObjectProvider;)Lorg/gradle/api/provider/Provider; public static final fun proto_kotlin (Lorg/gradle/api/NamedDomainObjectProvider;Lorg/gradle/api/Action;)V } diff --git a/gradle-plugin/src/main/kotlin/kotlinx/rpc/protoc/DefaultProtoSourceSet.kt b/gradle-plugin/src/main/kotlin/kotlinx/rpc/protoc/DefaultProtoSourceSet.kt index a5f3623d2..4f2f0c3eb 100644 --- a/gradle-plugin/src/main/kotlin/kotlinx/rpc/protoc/DefaultProtoSourceSet.kt +++ b/gradle-plugin/src/main/kotlin/kotlinx/rpc/protoc/DefaultProtoSourceSet.kt @@ -6,6 +6,7 @@ package kotlinx.rpc.protoc import kotlinx.rpc.buf.tasks.BufGenerateTask import kotlinx.rpc.rpcExtension +import kotlinx.rpc.util.extendsFromLazy import kotlinx.rpc.util.findOrCreate import kotlinx.rpc.util.withLegacyAndroid import kotlinx.rpc.util.withAndroidSourceSets @@ -18,7 +19,9 @@ import org.gradle.api.NamedDomainObjectContainer import org.gradle.api.NamedDomainObjectFactory import org.gradle.api.NamedDomainObjectProvider import org.gradle.api.Project +import org.gradle.api.artifacts.Configuration import org.gradle.api.file.ConfigurableFileCollection +import org.gradle.api.file.FileCollection import org.gradle.api.file.SourceDirectorySet import org.gradle.api.provider.ListProperty import org.gradle.api.provider.Property @@ -35,6 +38,7 @@ import java.io.File import java.util.* import java.util.function.Consumer import javax.inject.Inject +import kotlin.contracts.ExperimentalContracts @Suppress("UNCHECKED_CAST") internal val Project.protoSourceSets: ProtoSourceSets @@ -61,6 +65,7 @@ internal fun Project.findOrCreateProtoSourceSets(): NamedDomainObjectContainer

= project.objects.property() + // Proto dependency configuration for this source set, created when protoc is activated. + // Allows users to declare proto dependencies via `dependencies { Proto("...") }`. + // Resolved artifacts are extracted and included in code generation. + internal val protoConfiguration: Configuration + + // Proto import dependency configuration for this source set, created when protoc is activated. + // Allows users to declare proto import dependencies via `dependencies { ProtoImport("...") }`. + // Resolved artifacts are extracted and available as imports, but not for code generation. + private val protoImportConfigurationNew: Configuration + + // Configurations attached lazily via importsFrom(Provider<...>) / importsAllFrom that cannot + // be wired through Configuration.extendsFrom: Gradle 8.8–9.3 has no Provider-based overload at + // all, and no Gradle version exposes a Provider> overload. Their files are + // merged into [protoImportFiles] at the consumer site, so resolution still sees them. + private val protoImportConfigurationLegacyList: ListProperty = project.objects.listProperty() + + // Aggregated proto-import inputs for tasks: declared dependencies plus the transitive closure + // built up via Configuration.extendsFrom, plus everything stored in protoImportConfigOverflow. + internal val protoImportConfiguration: FileCollection by lazy { + project.files(protoImportConfigurationNew, protoImportConfigurationLegacyList) + } + + init { + val protoConfigName = protoConfigurationName(name) + protoConfiguration = project.configurations.maybeCreate(protoConfigName).apply { + isCanBeResolved = true + isCanBeConsumed = false + description = "Proto file dependencies for source set '$name' (code generation)" + } + + val protoImportConfigName = protoImportConfigurationName(name) + protoImportConfigurationNew = project.configurations.maybeCreate(protoImportConfigName).apply { + isCanBeResolved = true + isCanBeConsumed = false + description = "Proto file import dependencies for source set '$name' (imports only)" + } + } + override val imports: SetProperty = project.objects.setProperty() override val fileImports: ConfigurableFileCollection = project.objects.fileCollection() - override fun importsFrom(protoSourceSet: ProtoSourceSet) { + override fun importsFrom(rawProtoSourceSet: ProtoSourceSet) { + val protoSourceSet = rawProtoSourceSet.asDefault("extend") + imports.add(protoSourceSet.checkSelfImport()) imports.addAll(protoSourceSet.imports.checkSelfImport()) + + protoImportConfigurationNew.extendsFrom(protoSourceSet.protoImportConfigurationNew) + protoImportConfigurationLegacyList.addAll(protoSourceSet.protoImportConfigurationLegacyList) } - override fun importsFrom(protoSourceSet: Provider) { + override fun importsFrom(rawProtoSourceSet: Provider) { + val protoSourceSet = rawProtoSourceSet.asDefault("extend") + imports.add(protoSourceSet.checkSelfImport()) imports.addAll(protoSourceSet.flatMap { it.imports.checkSelfImport() }) + + protoImportConfigurationNew.extendsFromLazy( + legacyList = protoImportConfigurationLegacyList, + provider = protoSourceSet.map { it.protoImportConfigurationNew }, + ) + protoImportConfigurationLegacyList.addAll(protoSourceSet.flatMap { it.protoImportConfigurationLegacyList }) } - override fun importsAllFrom(protoSourceSets: Provider>) { + override fun importsAllFrom(rawProtoSourceSets: Provider>) { + val protoSourceSets = rawProtoSourceSets.asDefault("extend") + imports.addAll(protoSourceSets.checkSelfImport()) imports.addAll(protoSourceSets.map { list -> list.flatMap { it.imports.checkSelfImport().get() } }) - } - override fun importsFrom(protoSourceSet: NamedDomainObjectProvider) { - imports.add(protoSourceSet.checkSelfImport()) - imports.addAll(protoSourceSet.flatMap { it.imports.checkSelfImport() }) + protoImportConfigurationLegacyList.addAll( + protoSourceSets.map { list -> list.map { it.protoImportConfigurationNew } }, + ) + protoImportConfigurationLegacyList.addAll( + protoSourceSets.map { list -> list.flatMap { it.protoImportConfigurationLegacyList.get() } }, + ) } private val extendsFrom: MutableSet = mutableSetOf() - override fun extendsFrom(protoSourceSet: ProtoSourceSet) { - if (extendsFrom.contains(protoSourceSet)) { + override fun extendsFrom(rawProtoSourceSet: ProtoSourceSet) { + if (extendsFrom.contains(rawProtoSourceSet)) { return } - require(this != protoSourceSet) { + require(this != rawProtoSourceSet) { "$name proto source set cannot extend from self" } - require(protoSourceSet is DefaultProtoSourceSet) { - "$name proto source set can only extend from other default proto source sets." + - "${protoSourceSet.name} is not a ${DefaultProtoSourceSet::class.simpleName}" - } + val protoSourceSet = rawProtoSourceSet.asDefault("extend") extendsFrom += protoSourceSet @@ -196,10 +253,15 @@ internal open class DefaultProtoSourceSet( imports.addAll(protoSourceSet.imports.checkSelfImport()) plugins.addAll(protoSourceSet.plugins) + + // Wire Gradle configuration inheritance for proto dependency configurations + protoConfiguration.extendsFrom(protoSourceSet.protoConfiguration) + protoImportConfigurationNew.extendsFrom(protoSourceSet.protoImportConfigurationNew) + protoImportConfigurationLegacyList.addAll(protoSourceSet.protoImportConfigurationLegacyList) } @JvmName("checkSelfImport_provider") - private fun Provider.checkSelfImport() = map { + private fun Provider.checkSelfImport() = map { it.checkSelfImport() } @@ -208,7 +270,7 @@ internal open class DefaultProtoSourceSet( } @JvmName("checkSelfImport_provider_list") - private fun Provider>.checkSelfImport() = map { set -> + private fun Provider>.checkSelfImport() = map { set -> set.onEach { it.checkSelfImport() } } @@ -220,6 +282,25 @@ internal open class DefaultProtoSourceSet( return this } + private fun Provider.asDefault(action: String): Provider { + return map { it.asDefault(action) } + } + + @JvmName("asDefault_provider_list") + private fun Provider>.asDefault(action: String): Provider> { + return map { lists -> lists.map { it.asDefault(action) } } + } + + @OptIn(ExperimentalContracts::class) + private fun ProtoSourceSet.asDefault(action: String): DefaultProtoSourceSet { + require(this is DefaultProtoSourceSet) { + "$name proto source set can only $action from other default proto source sets." + + "${this.name} is not a ${DefaultProtoSourceSet::class.simpleName}" + } + + return this + } + // Java default methods override fun forEach(action: Consumer?) { @@ -240,7 +321,6 @@ internal fun Project.createProtoExtensions() { val protoSourceSet = container.maybeCreate(languageSourceSetName) as DefaultProtoSourceSet languageSourceSet?.let { protoSourceSet.languageSourceSets.add(it) } - return protoSourceSet } @@ -289,3 +369,13 @@ internal object PlatformOption { const val COMMON = "common" const val WASM = "wasm" } + +internal fun protoConfigurationName(sourceSetName: String): String { + if (sourceSetName == "main") return "proto" + return "${sourceSetName}Proto" +} + +internal fun protoImportConfigurationName(sourceSetName: String): String { + if (sourceSetName == "main") return "protoImport" + return "${sourceSetName}ProtoImport" +} diff --git a/gradle-plugin/src/main/kotlin/kotlinx/rpc/protoc/DefaultProtocExtension.kt b/gradle-plugin/src/main/kotlin/kotlinx/rpc/protoc/DefaultProtocExtension.kt index 73cfff18d..82a6c5899 100644 --- a/gradle-plugin/src/main/kotlin/kotlinx/rpc/protoc/DefaultProtocExtension.kt +++ b/gradle-plugin/src/main/kotlin/kotlinx/rpc/protoc/DefaultProtocExtension.kt @@ -243,12 +243,43 @@ internal open class DefaultProtocExtension @Inject constructor( dependsOn(processProtoTask) } + val extractProtoTask = project.registerExtractDependencyProtoTask( + taskName = "extractProto${capitalName}", + destination = buildSourceSetsDir.resolve("protoExtracted"), + dependencyArchives = protoSourceSet.protoConfiguration, + properties = properties, + ) + + val extractProtoImportTask = project.registerExtractDependencyProtoTask( + taskName = "extractProtoImport${capitalName}", + destination = buildSourceSetsDir.resolve("importExtracted"), + dependencyArchives = protoSourceSet.protoImportConfiguration, + properties = properties, + ) + + // Wire extracted protos into the existing process tasks + processProtoTask.configure { + from(extractProtoTask.map { it.destinationDir }) + dependsOn(extractProtoTask) + } + + processImportProtoTask.configure { + from(extractProtoImportTask.map { it.destinationDir }) + dependsOn(extractProtoImportTask) + } + + val hasProtoImports = protoSourceSet.imports.map { it.isNotEmpty() || !protoSourceSet.fileImports.isEmpty } + val hasProtoImportConfig = project.provider { + !protoSourceSet.protoImportConfiguration.isEmpty + } + val withImport = hasProtoImports.zip(hasProtoImportConfig) { a, b -> a || b } + val generateBufYamlTask = project.registerGenerateBufYamlTask( name = capitalName, buildSourceSetsDir = buildSourceSetsDir, buildSourceSetsProtoDir = buildSourceSetsProtoDir, buildSourceSetsImportDir = buildSourceSetsImportDir, - withImport = protoSourceSet.imports.map { it.isNotEmpty() || !protoSourceSet.fileImports.isEmpty }, + withImport = withImport, properties = properties, ) { dependsOn(processProtoTask) @@ -295,6 +326,8 @@ internal open class DefaultProtocExtension @Inject constructor( dependsOn(generateBufYamlTask) dependsOn(processProtoTask) dependsOn(processImportProtoTask) + dependsOn(extractProtoTask) + dependsOn(extractProtoImportTask) val dependencies = project.provider { protoSourceSet.getDependsOnTasksOf(project.protoSourceSets).mapNotNull { it.generateTask.orNull } @@ -322,6 +355,8 @@ internal open class DefaultProtocExtension @Inject constructor( generateBufGenYamlTask = generateBufGenYamlTask, processProtoTask = processProtoTask, processImportProtoTask = processImportProtoTask, + extractProtoTask = extractProtoTask, + extractProtoImportTask = extractProtoImportTask, sourceSetsProtoDirFileTree = sourceSetsProtoDirFileTree, properties = properties, ) { @@ -450,6 +485,8 @@ internal open class DefaultProtocExtension @Inject constructor( generateBufGenYamlTask: TaskProvider, processProtoTask: TaskProvider, processImportProtoTask: TaskProvider, + extractProtoTask: TaskProvider, + extractProtoImportTask: TaskProvider, sourceSetsProtoDirFileTree: ConfigurableFileTree, properties: ProtoTask.Properties, configure: BufExecTask.() -> Unit, @@ -473,6 +510,8 @@ internal open class DefaultProtocExtension @Inject constructor( dependsOn(generateBufGenYamlTask) dependsOn(processProtoTask) dependsOn(processImportProtoTask) + dependsOn(extractProtoTask) + dependsOn(extractProtoImportTask) val dependencies = project.provider { protoSourceSet.getDependsOnTasksOf(project.protoSourceSets).map { dependency -> diff --git a/gradle-plugin/src/main/kotlin/kotlinx/rpc/protoc/ProcessProtoFiles.kt b/gradle-plugin/src/main/kotlin/kotlinx/rpc/protoc/ProcessProtoFiles.kt index 493d91b27..02bcdf2a4 100644 --- a/gradle-plugin/src/main/kotlin/kotlinx/rpc/protoc/ProcessProtoFiles.kt +++ b/gradle-plugin/src/main/kotlin/kotlinx/rpc/protoc/ProcessProtoFiles.kt @@ -5,8 +5,10 @@ package kotlinx.rpc.protoc import org.gradle.api.Project +import org.gradle.api.file.ArchiveOperations import org.gradle.api.file.ConfigurableFileCollection import org.gradle.api.file.DuplicatesStrategy +import org.gradle.api.file.FileCollection import org.gradle.api.file.SourceDirectorySet import org.gradle.api.provider.Provider import org.gradle.api.tasks.Internal @@ -90,3 +92,52 @@ internal fun Project.registerProcessProtoFilesImportsTask( return task } + +/** + * Extract proto files from dependency archives (JARs, ZIPs). + * + * Registered automatically when proto dependency configurations are used. + */ +public abstract class ExtractDependencyProtoImports @Inject internal constructor( + @get:Internal + override val properties: ProtoTask.Properties, +) : Sync(), ProtoTask { + @get:Inject + internal abstract val archiveOperations: ArchiveOperations + + init { + group = PROTO_GROUP + } +} + +internal fun Project.registerExtractDependencyProtoTask( + taskName: String, + destination: File, + dependencyArchives: FileCollection, + properties: ProtoTask.Properties, + configure: ExtractDependencyProtoImports.() -> Unit = {}, +): TaskProvider { + val task = tasks.register( + taskName, + ExtractDependencyProtoImports::class, + properties, + ) + + task.configure { + duplicatesStrategy = DuplicatesStrategy.WARN + + from(dependencyArchives.elements.map { elements -> + elements.map { element -> + archiveOperations.zipTree(element.asFile).matching { + include("**/*.proto") + } + } + }) + + into(destination) + + configure() + } + + return task +} diff --git a/gradle-plugin/src/main/kotlin/kotlinx/rpc/protoc/ProtoSourceSet.kt b/gradle-plugin/src/main/kotlin/kotlinx/rpc/protoc/ProtoSourceSet.kt index 0080628e3..27e929e86 100644 --- a/gradle-plugin/src/main/kotlin/kotlinx/rpc/protoc/ProtoSourceSet.kt +++ b/gradle-plugin/src/main/kotlin/kotlinx/rpc/protoc/ProtoSourceSet.kt @@ -5,14 +5,17 @@ package kotlinx.rpc.protoc import org.gradle.api.Action +import org.gradle.api.Named import org.gradle.api.NamedDomainObjectContainer import org.gradle.api.NamedDomainObjectProvider +import org.gradle.api.artifacts.Dependency import org.gradle.api.file.ConfigurableFileCollection import org.gradle.api.file.SourceDirectorySet import org.gradle.api.provider.Property import org.gradle.api.provider.Provider import org.gradle.api.provider.SetProperty import org.gradle.api.tasks.SourceSet +import org.jetbrains.kotlin.gradle.plugin.KotlinDependencyHandler import org.jetbrains.kotlin.gradle.plugin.KotlinSourceSet public typealias ProtoSourceSets = NamedDomainObjectContainer @@ -204,23 +207,6 @@ public sealed interface ProtoSourceSet : SourceDirectorySet { */ public fun importsFrom(protoSourceSet: Provider) - /** - * Proto files from [protoSourceSet] will be available as import, but will not be used for code generation. - * - * Example: - * ```kotlin - * kotlin.sourceSets { - * val someProto = create("someProto") - * commonMain { - * proto { - * importsFrom(protoSourceSets.getByName("someProto")) - * } - * } - * } - * ``` - */ - public fun importsFrom(protoSourceSet: NamedDomainObjectProvider) - /** * Proto files from [protoSourceSets] will be available as import, but will not be used for code generation. * @@ -344,3 +330,66 @@ public fun NamedDomainObjectProvider.proto(action: Action${suffix}(\"...\") } syntax instead." + ) + + return if (sourceSetName == "main") { + suffix.replaceFirstChar { it.lowercase() } + } else { + "$sourceSetName$suffix" + } +} diff --git a/gradle-plugin/src/main/kotlin/kotlinx/rpc/util/ConfigurationCompat.kt b/gradle-plugin/src/main/kotlin/kotlinx/rpc/util/ConfigurationCompat.kt new file mode 100644 index 000000000..4d437560a --- /dev/null +++ b/gradle-plugin/src/main/kotlin/kotlinx/rpc/util/ConfigurationCompat.kt @@ -0,0 +1,25 @@ +/* + * Copyright 2023-2025 JetBrains s.r.o and contributors. Use of this source code is governed by the Apache 2.0 license. + */ + +package kotlinx.rpc.util + +import org.gradle.api.artifacts.Configuration +import org.gradle.api.provider.ListProperty +import org.gradle.api.provider.Provider +import org.gradle.util.GradleVersion + +private val SUPPORTS_LAZY_EXTENDS_FROM: Boolean = + GradleVersion.current().baseVersion >= GradleVersion.version("9.4") + +@Suppress("UnstableApiUsage") +internal fun Configuration.extendsFromLazy( + legacyList: ListProperty, + provider: Provider, +) { + if (SUPPORTS_LAZY_EXTENDS_FROM) { + extendsFrom(provider) + } else { + legacyList.add(provider) + } +} diff --git a/gradle-plugin/src/test/kotlin/kotlinx/rpc/GrpcAndroidProjectTest.kt b/gradle-plugin/src/test/kotlin/kotlinx/rpc/GrpcAndroidProjectTest.kt index fcc95315c..5ecbef328 100644 --- a/gradle-plugin/src/test/kotlin/kotlinx/rpc/GrpcAndroidProjectTest.kt +++ b/gradle-plugin/src/test/kotlin/kotlinx/rpc/GrpcAndroidProjectTest.kt @@ -231,6 +231,68 @@ class GrpcAndroidProjectTest : GrpcBaseTest() { ) } + @TestFactory + fun `Dependency Proto Per Source Set All Variants`() = runGrpcTest(versionsPredicate = { !isAgp9 }) { + dependencyProtoPerSourceSetAllVariantsBody() + } + + @TestFactory + fun `Dependency Proto Per Source Set All Variants No KGP`() = runGrpcTest(versionsPredicate = { isAgp9 }) { + // AGP 9.0 built-in Kotlin only creates unit test compilation for testBuildType (debug), + // so testRelease has no compile task, and we skip it here. + dependencyProtoPerSourceSetAllVariantsBody(includeTestRelease = false) + } + + private fun GrpcTestEnv.dependencyProtoPerSourceSetAllVariantsBody(includeTestRelease: Boolean = true) { + runAndCheckZipFiles( + SSetsAndroid.Default.debug, + extended = listOf(SSetsAndroid.Default.main), + ) + runAndCheckZipFiles( + SSetsAndroid.Default.release, + extended = listOf(SSetsAndroid.Default.main), + ) + runAndCheckZipFiles( + SSetsAndroid.Default.testDebug, + SSetsAndroid.Default.debug, SSetsAndroid.Default.main, + extended = listOf( + SSetsAndroid.Default.test, + SSetsAndroid.Default.testFixtures, + SSetsAndroid.Default.testFixturesDebug, + ), + ) + if (includeTestRelease) { + runAndCheckZipFiles( + SSetsAndroid.Default.testRelease, + SSetsAndroid.Default.release, SSetsAndroid.Default.main, + extended = listOf( + SSetsAndroid.Default.test, + SSetsAndroid.Default.testFixtures, + SSetsAndroid.Default.testFixturesRelease, + ), + ) + } + runAndCheckZipFiles( + SSetsAndroid.Default.androidTestDebug, + SSetsAndroid.Default.debug, SSetsAndroid.Default.main, + extended = listOf( + SSetsAndroid.Default.androidTest, + SSetsAndroid.Default.testFixtures, + SSetsAndroid.Default.testFixturesDebug, + ), + ) + } + + @TestFactory + fun `Dependency Configurations And Tasks`() = runGrpcTest(versionsPredicate = { !isAgp9 }) { + runGradle("test_tasks", "--no-configuration-cache") + } + + @TestFactory + fun `Dependency Configurations And Tasks No KGP`() = runGrpcTest(versionsPredicate = { isAgp9 }) { + runGradle("test_tasks", "--no-configuration-cache") + } + @TestFactory fun `No gRPC`() = runGrpcTest(versionsPredicate = { !isAgp9 }) { SSetsAndroid.Default.entries.forEach { diff --git a/gradle-plugin/src/test/kotlin/kotlinx/rpc/GrpcJvmProjectTest.kt b/gradle-plugin/src/test/kotlin/kotlinx/rpc/GrpcJvmProjectTest.kt index e99dbe577..6946b4887 100644 --- a/gradle-plugin/src/test/kotlin/kotlinx/rpc/GrpcJvmProjectTest.kt +++ b/gradle-plugin/src/test/kotlin/kotlinx/rpc/GrpcJvmProjectTest.kt @@ -9,6 +9,9 @@ import kotlinx.rpc.protoc.PlatformOption import org.gradle.testkit.runner.TaskOutcome import org.junit.jupiter.api.TestFactory import org.junit.jupiter.api.TestInstance +import java.nio.file.Files +import java.util.zip.ZipEntry +import java.util.zip.ZipOutputStream import kotlin.io.path.Path import kotlin.io.path.appendText import kotlin.test.assertEquals @@ -27,11 +30,174 @@ class GrpcJvmProjectTest : GrpcBaseTest() { ), generatedFiles = listOf( Path("Some.kt"), + Path("Some.ext.kt"), Path(RPC_INTERNAL, "Some.kt"), ) ) } + @TestFactory + fun `Dependency Proto Codegen`() = runGrpcTest { + val result = runGradle(bufGenerateCommonMain) + + result.assertOutcome(TaskOutcome.SUCCESS, bufGenerateCommonMain) + result.assertOutcome(TaskOutcome.SUCCESS, processCommonMainProtoFiles) + result.assertOutcome(TaskOutcome.SUCCESS, generateBufYamlCommonMain) + result.assertOutcome(TaskOutcome.SUCCESS, generateBufGenYamlCommonMain) + result.assertOutcome(TaskOutcome.SUCCESS, extractProtoCommonMain) + result.assertOutcome(TaskOutcome.NO_SOURCE, extractProtoImportCommonMain) + + // dependency.proto should be in the proto dir (codegen), not import dir + assertWorkspaceProtoFilesCopied(mainSourceSet, Path("some.proto"), Path("dependency.proto")) + + // Both local and dependency protos generate code + assertSourceCodeGenerated( + mainSourceSet, + Path("Some.kt"), + Path("Some.ext.kt"), + Path(RPC_INTERNAL, "Some.kt"), + Path("dependency", "Dependency.kt"), + Path("dependency", "Dependency.ext.kt"), + Path("dependency", RPC_INTERNAL, "Dependency.kt"), + ) + + dryRunCompilation(SSetsJvm.main) + } + + @TestFactory + fun `Dependency Proto Import`() = runGrpcTest { + val result = runGradle(bufGenerateCommonMain) + + result.assertOutcome(TaskOutcome.SUCCESS, bufGenerateCommonMain) + result.assertOutcome(TaskOutcome.SUCCESS, processCommonMainProtoFiles) + result.assertOutcome(TaskOutcome.SUCCESS, generateBufYamlCommonMain) + result.assertOutcome(TaskOutcome.SUCCESS, generateBufGenYamlCommonMain) + result.assertOutcome(TaskOutcome.NO_SOURCE, extractProtoCommonMain) + result.assertOutcome(TaskOutcome.SUCCESS, extractProtoImportCommonMain) + + // dependency.proto should be in the import dir (import-only), not proto dir + assertWorkspaceProtoFilesCopied(mainSourceSet, Path("some.proto")) + assertWorkspaceImportProtoFilesCopied(mainSourceSet, Path("dependency.proto")) + + // Only local protos generate code, dependency protos are imports only + assertSourceCodeGenerated( + mainSourceSet, + Path("Some.kt"), + Path("Some.ext.kt"), + Path(RPC_INTERNAL, "Some.kt"), + ) + + dryRunCompilation(SSetsJvm.main) + } + + @TestFactory + fun `Dependency Proto Test Codegen`() = runGrpcTest { + val result = runGradle(bufGenerateCommonTest) + + result.assertOutcome(TaskOutcome.SUCCESS, bufGenerateCommonTest) + result.assertOutcome(TaskOutcome.SUCCESS, processCommonTestProtoFiles) + result.assertOutcome(TaskOutcome.NO_SOURCE, processCommonTestProtoFilesImports) + result.assertOutcome(TaskOutcome.SUCCESS, generateBufYamlCommonTest) + result.assertOutcome(TaskOutcome.SUCCESS, generateBufGenYamlCommonTest) + result.assertOutcome(TaskOutcome.SUCCESS, extractProtoCommonTest) + result.assertOutcome(TaskOutcome.NO_SOURCE, extractProtoImportCommonTest) + + + // testDep proto reaches the test source set as codegen + assertWorkspaceProtoFilesCopied(testSourceSet, Path("some.proto"), Path("testDep.proto")) + + // main is untouched: testProto must not leak to main + assertWorkspaceProtoFilesCopied(mainSourceSet) + assertWorkspaceImportProtoFilesCopied(mainSourceSet) + + assertSourceCodeGenerated( + testSourceSet, + Path("Some.kt"), + Path("Some.ext.kt"), + Path(RPC_INTERNAL, "Some.kt"), + Path("dependency", "TestDep.kt"), + Path("dependency", "TestDep.ext.kt"), + Path("dependency", RPC_INTERNAL, "TestDep.kt"), + ) + + dryRunCompilation(SSetsJvm.test) + } + + @TestFactory + fun `Dependency Proto Test Import`() = runGrpcTest { + val result = runGradle(bufGenerateCommonTest) + + result.assertOutcome(TaskOutcome.SUCCESS, bufGenerateCommonTest) + result.assertOutcome(TaskOutcome.SUCCESS, processCommonTestProtoFiles) + result.assertOutcome(TaskOutcome.SUCCESS, processCommonTestProtoFilesImports) + result.assertOutcome(TaskOutcome.SUCCESS, generateBufYamlCommonTest) + result.assertOutcome(TaskOutcome.SUCCESS, generateBufGenYamlCommonTest) + result.assertOutcome(TaskOutcome.NO_SOURCE, extractProtoCommonTest) + result.assertOutcome(TaskOutcome.SUCCESS, extractProtoImportCommonTest) + + + // testImportDep proto reaches test as import only + assertWorkspaceProtoFilesCopied(testSourceSet, Path("some.proto")) + assertWorkspaceImportProtoFilesCopied(testSourceSet, Path("testImportDep.proto")) + + // main is untouched + assertWorkspaceProtoFilesCopied(mainSourceSet) + assertWorkspaceImportProtoFilesCopied(mainSourceSet) + + // testImportDep.proto is import-only, so no TestImportDep.kt generated + assertSourceCodeGenerated( + testSourceSet, + Path("Some.kt"), + Path("Some.ext.kt"), + Path(RPC_INTERNAL, "Some.kt"), + ) + + dryRunCompilation(SSetsJvm.test) + } + + @TestFactory + fun `Dependency Proto Extract Tasks Are Cached Properly`() = runGrpcTest { + val firstRun = runGradle(extractProtoCommonMain, extractProtoImportCommonMain) + assertEquals(TaskOutcome.SUCCESS, firstRun.protoTaskOutcome(extractProtoCommonMain)) + assertEquals(TaskOutcome.SUCCESS, firstRun.protoTaskOutcome(extractProtoImportCommonMain)) + + val secondRun = runGradle(extractProtoCommonMain, extractProtoImportCommonMain) + assertEquals(TaskOutcome.UP_TO_DATE, secondRun.protoTaskOutcome(extractProtoCommonMain)) + assertEquals(TaskOutcome.UP_TO_DATE, secondRun.protoTaskOutcome(extractProtoImportCommonMain)) + + cleanProtoBuildDir() + + // Sync isn't a cacheable task, so a clean output dir means re-execute → SUCCESS, + // not FROM_CACHE. UP_TO_DATE detection relies on the persisted output state. + val thirdRun = runGradle(extractProtoCommonMain, extractProtoImportCommonMain) + assertEquals(TaskOutcome.SUCCESS, thirdRun.protoTaskOutcome(extractProtoCommonMain)) + assertEquals(TaskOutcome.SUCCESS, thirdRun.protoTaskOutcome(extractProtoImportCommonMain)) + + // rewrite the codegen zip with different content — must invalidate extractProtoMain + // but NOT extractProtoImportMain, which reads a separate zip. + val codegenZip = projectDir.resolve("zip/main-dependency.zip") + ZipOutputStream(Files.newOutputStream(codegenZip)).use { zos -> + zos.putNextEntry(ZipEntry("mainDep.proto")) + zos.write( + """ + syntax = "proto3"; + + package dependency; + + message MainDep { + string value = 1; + int32 version = 2; + } + """.trimIndent().toByteArray(), + ) + zos.closeEntry() + } + + val fourthRun = runGradle(extractProtoCommonMain, extractProtoImportCommonMain) + assertEquals(TaskOutcome.SUCCESS, fourthRun.protoTaskOutcome(extractProtoCommonMain)) + assertEquals(TaskOutcome.UP_TO_DATE, fourthRun.protoTaskOutcome(extractProtoImportCommonMain)) + } + @TestFactory fun `No gRPC`() = runGrpcTest { SSetsJvm.entries.forEach { @@ -51,6 +217,7 @@ class GrpcJvmProjectTest : GrpcBaseTest() { ), generatedFiles = listOf( Path("Some.kt"), + Path("Some.ext.kt"), Path(RPC_INTERNAL, "Some.kt"), ) ) @@ -67,6 +234,7 @@ class GrpcJvmProjectTest : GrpcBaseTest() { importProtoFiles = emptyList(), generatedFiles = listOf( Path("Some.kt"), + Path("Some.ext.kt"), Path(RPC_INTERNAL, "Some.kt"), ), importGeneratedFiles = emptyList() @@ -83,6 +251,7 @@ class GrpcJvmProjectTest : GrpcBaseTest() { ), generatedFiles = listOf( Path("Some.kt"), + Path("Some.ext.kt"), Path(RPC_INTERNAL, "Some.kt"), ) ) @@ -102,10 +271,12 @@ class GrpcJvmProjectTest : GrpcBaseTest() { ), generatedFiles = listOf( Path("Other.kt"), + Path("Other.ext.kt"), Path(RPC_INTERNAL, "Other.kt"), ), importGeneratedFiles = listOf( Path("Some.kt"), + Path("Some.ext.kt"), Path(RPC_INTERNAL, "Some.kt"), ), mainGenerateOutcome = TaskOutcome.FROM_CACHE, @@ -124,6 +295,7 @@ class GrpcJvmProjectTest : GrpcBaseTest() { ), generatedFiles = listOf( Path("Some.kt"), + Path("Some.ext.kt"), Path(RPC_INTERNAL, "Some.kt"), ) ) @@ -141,10 +313,12 @@ class GrpcJvmProjectTest : GrpcBaseTest() { ), generatedFiles = listOf( Path("Other.kt"), + Path("Other.ext.kt"), Path(RPC_INTERNAL, "Other.kt"), ), importGeneratedFiles = listOf( Path("Some.kt"), + Path("Some.ext.kt"), Path(RPC_INTERNAL, "Some.kt"), ), mainGenerateOutcome = TaskOutcome.FROM_CACHE, diff --git a/gradle-plugin/src/test/kotlin/kotlinx/rpc/GrpcKmpProjectTest.kt b/gradle-plugin/src/test/kotlin/kotlinx/rpc/GrpcKmpProjectTest.kt index 1033c1506..af3ac0613 100644 --- a/gradle-plugin/src/test/kotlin/kotlinx/rpc/GrpcKmpProjectTest.kt +++ b/gradle-plugin/src/test/kotlin/kotlinx/rpc/GrpcKmpProjectTest.kt @@ -27,11 +27,126 @@ class GrpcKmpProjectTest : GrpcBaseTest() { ), generatedFiles = listOf( Path("Some.kt"), + Path("Some.ext.kt"), Path(RPC_INTERNAL, "Some.kt"), ) ) } + @TestFactory + fun `Dependency Proto Import KMP DSL`() = runGrpcTest { + val result = runGradle(bufGenerateCommonMain) + + result.assertOutcome(TaskOutcome.SUCCESS, bufGenerateCommonMain) + result.assertOutcome(TaskOutcome.SUCCESS, processCommonMainProtoFiles) + result.assertOutcome(TaskOutcome.SUCCESS, generateBufYamlCommonMain) + result.assertOutcome(TaskOutcome.SUCCESS, generateBufGenYamlCommonMain) + result.assertOutcome(TaskOutcome.NO_SOURCE, extractProtoCommonMain) + result.assertOutcome(TaskOutcome.SUCCESS, extractProtoImportCommonMain) + + assertWorkspaceProtoFilesCopied(mainSourceSet, Path("some.proto")) + assertWorkspaceImportProtoFilesCopied(mainSourceSet, Path("dependency.proto")) + + assertSourceCodeGenerated( + mainSourceSet, + Path("Some.kt"), + Path("Some.ext.kt"), + Path(RPC_INTERNAL, "Some.kt"), + ) + + dryRunCompilation(SSetsKmp.Default.jvmMain) + } + + @TestFactory + fun `Dependency Proto Import`() = runGrpcTest { + val result = runGradle(bufGenerateCommonMain) + + result.assertOutcome(TaskOutcome.SUCCESS, bufGenerateCommonMain) + result.assertOutcome(TaskOutcome.SUCCESS, processCommonMainProtoFiles) + result.assertOutcome(TaskOutcome.SUCCESS, generateBufYamlCommonMain) + result.assertOutcome(TaskOutcome.SUCCESS, generateBufGenYamlCommonMain) + result.assertOutcome(TaskOutcome.NO_SOURCE, extractProtoCommonMain) + result.assertOutcome(TaskOutcome.SUCCESS, extractProtoImportCommonMain) + + assertWorkspaceProtoFilesCopied(mainSourceSet, Path("some.proto")) + assertWorkspaceImportProtoFilesCopied(mainSourceSet, Path("dependency.proto")) + + assertSourceCodeGenerated( + mainSourceSet, + Path("Some.kt"), + Path("Some.ext.kt"), + Path(RPC_INTERNAL, "Some.kt"), + ) + + dryRunCompilation(SSetsKmp.Default.jvmMain) + } + + @TestFactory + fun `Dependency Proto Codegen`() = runGrpcTest { + val result = runGradle(bufGenerateCommonMain) + + result.assertOutcome(TaskOutcome.SUCCESS, bufGenerateCommonMain) + result.assertOutcome(TaskOutcome.SUCCESS, processCommonMainProtoFiles) + result.assertOutcome(TaskOutcome.SUCCESS, generateBufYamlCommonMain) + result.assertOutcome(TaskOutcome.SUCCESS, generateBufGenYamlCommonMain) + result.assertOutcome(TaskOutcome.SUCCESS, extractProtoCommonMain) + result.assertOutcome(TaskOutcome.NO_SOURCE, extractProtoImportCommonMain) + + // dependency proto reaches commonMain as codegen + assertWorkspaceProtoFilesCopied(mainSourceSet, Path("some.proto"), Path("dependency.proto")) + + assertSourceCodeGenerated( + mainSourceSet, + Path("Some.kt"), + Path("Some.ext.kt"), + Path(RPC_INTERNAL, "Some.kt"), + Path("dependency", "Dependency.kt"), + Path("dependency", "Dependency.ext.kt"), + Path("dependency", RPC_INTERNAL, "Dependency.kt"), + ) + + dryRunCompilation(SSetsKmp.Default.jvmMain) + } + + @TestFactory + fun `Dependency Proto Codegen KMP DSL`() = runGrpcTest { + val result = runGradle(bufGenerateCommonMain) + + result.assertOutcome(TaskOutcome.SUCCESS, bufGenerateCommonMain) + result.assertOutcome(TaskOutcome.SUCCESS, processCommonMainProtoFiles) + result.assertOutcome(TaskOutcome.SUCCESS, generateBufYamlCommonMain) + result.assertOutcome(TaskOutcome.SUCCESS, generateBufGenYamlCommonMain) + result.assertOutcome(TaskOutcome.SUCCESS, extractProtoCommonMain) + result.assertOutcome(TaskOutcome.NO_SOURCE, extractProtoImportCommonMain) + + assertWorkspaceProtoFilesCopied(mainSourceSet, Path("some.proto"), Path("commonMainDep.proto")) + + assertSourceCodeGenerated( + mainSourceSet, + Path("Some.kt"), + Path("Some.ext.kt"), + Path(RPC_INTERNAL, "Some.kt"), + Path("dependency", "CommonMainDep.kt"), + Path("dependency", "CommonMainDep.ext.kt"), + Path("dependency", RPC_INTERNAL, "CommonMainDep.kt"), + ) + + dryRunCompilation(SSetsKmp.Default.jvmMain) + } + + @TestFactory + fun `Dependency Imports From Provider Source Set`() = runGrpcTest { + runGradle(processCommonMainProtoFiles) + runGradle("processCommonMainProtoFilesImports") + + assertWorkspaceProtoFilesCopied(mainSourceSet, Path("some.proto")) + assertWorkspaceImportProtoFilesCopied( + mainSourceSet, + Path("common2.proto"), + Path("common2ImportDep.proto"), + ) + } + @TestFactory fun `No gRPC`() = runGrpcTest { SSetsKmp.Default.entries.forEach { @@ -126,6 +241,383 @@ class GrpcKmpProjectTest : GrpcBaseTest() { ) } + @TestFactory + fun `Dependency KMP Hierarchy`() = runGrpcTest { + runAndCheckZipFiles( + SSetsKmp.Default.commonMain, + ) + runAndCheckZipFiles( + SSetsKmp.Default.commonTest, + SSetsKmp.Default.commonMain, + ) + + runAndCheckZipFiles( + SSetsKmp.Default.nativeMain, + SSetsKmp.Default.commonMain, + ) + runAndCheckZipFiles( + SSetsKmp.Default.nativeTest, + SSetsKmp.Default.commonMain, SSetsKmp.Default.nativeMain, + SSetsKmp.Default.commonTest, + ) + + runAndCheckZipFiles( + SSetsKmp.Default.jvmMain, + SSetsKmp.Default.commonMain, + ) + runAndCheckZipFiles( + SSetsKmp.Default.jvmTest, + SSetsKmp.Default.commonMain, SSetsKmp.Default.jvmMain, + SSetsKmp.Default.commonTest, + ) + + runAndCheckZipFiles( + SSetsKmp.Default.webMain, + SSetsKmp.Default.commonMain, + ) + runAndCheckZipFiles( + SSetsKmp.Default.webTest, + SSetsKmp.Default.commonMain, SSetsKmp.Default.webMain, + SSetsKmp.Default.commonTest, + ) + + runAndCheckZipFiles( + SSetsKmp.Default.jsMain, + SSetsKmp.Default.commonMain, SSetsKmp.Default.webMain, + ) + runAndCheckZipFiles( + SSetsKmp.Default.jsTest, + SSetsKmp.Default.commonMain, SSetsKmp.Default.webMain, SSetsKmp.Default.jsMain, + SSetsKmp.Default.commonTest, SSetsKmp.Default.webTest, + ) + + runAndCheckZipFiles( + SSetsKmp.Default.appleMain, + SSetsKmp.Default.commonMain, SSetsKmp.Default.nativeMain, + ) + runAndCheckZipFiles( + SSetsKmp.Default.appleTest, + SSetsKmp.Default.commonMain, SSetsKmp.Default.nativeMain, SSetsKmp.Default.appleMain, + SSetsKmp.Default.commonTest, SSetsKmp.Default.nativeTest, + ) + + runAndCheckZipFiles( + SSetsKmp.Default.macosMain, + SSetsKmp.Default.commonMain, SSetsKmp.Default.nativeMain, SSetsKmp.Default.appleMain, + ) + runAndCheckZipFiles( + SSetsKmp.Default.macosTest, + SSetsKmp.Default.commonMain, + SSetsKmp.Default.nativeMain, + SSetsKmp.Default.appleMain, + SSetsKmp.Default.macosMain, + SSetsKmp.Default.commonTest, + SSetsKmp.Default.nativeTest, + SSetsKmp.Default.appleTest, + ) + + runAndCheckZipFiles( + SSetsKmp.Default.macosArm64Main, + SSetsKmp.Default.commonMain, + SSetsKmp.Default.nativeMain, + SSetsKmp.Default.appleMain, + SSetsKmp.Default.macosMain, + ) + runAndCheckZipFiles( + SSetsKmp.Default.macosArm64Test, + SSetsKmp.Default.commonMain, + SSetsKmp.Default.nativeMain, + SSetsKmp.Default.appleMain, + SSetsKmp.Default.macosMain, + SSetsKmp.Default.macosArm64Main, + SSetsKmp.Default.commonTest, + SSetsKmp.Default.nativeTest, + SSetsKmp.Default.appleTest, + SSetsKmp.Default.macosTest, + ) + } + + @TestFactory + fun `Dependency KMP Hierarchy Android KMP Library`() = runGrpcTest { + runAndCheckZipFiles( + SSetsKmp.AndroidKmpLib.commonMain, + ) + + runAndCheckZipFiles( + SSetsKmp.AndroidKmpLib.commonTest, + SSetsKmp.AndroidKmpLib.commonMain, + ) + + runAndCheckZipFiles( + SSetsKmp.AndroidKmpLib.jvmMain, + SSetsKmp.AndroidKmpLib.commonMain, + ) + + runAndCheckZipFiles( + SSetsKmp.AndroidKmpLib.jvmTest, + SSetsKmp.AndroidKmpLib.commonMain, SSetsKmp.AndroidKmpLib.jvmMain, + SSetsKmp.AndroidKmpLib.commonTest, + ) + + runAndCheckZipFiles( + SSetsKmp.AndroidKmpLib.androidMain, + SSetsKmp.AndroidKmpLib.commonMain, + ) + } + + @TestFactory + fun `Dependency KMP Hierarchy Android KMP Library With Test Tasks`() = runGrpcTest( + versionsPredicate = { versionsWhereAndroidKmpLibExist() }, + ) { + runAndCheckZipFiles( + SSetsKmp.AndroidKmpLib.commonMain, + ) + + runAndCheckZipFiles( + SSetsKmp.AndroidKmpLib.commonTest, + SSetsKmp.AndroidKmpLib.commonMain, + ) + + runAndCheckZipFiles( + SSetsKmp.AndroidKmpLib.jvmMain, + SSetsKmp.AndroidKmpLib.commonMain, + ) + + runAndCheckZipFiles( + SSetsKmp.AndroidKmpLib.jvmTest, + SSetsKmp.AndroidKmpLib.commonMain, SSetsKmp.AndroidKmpLib.jvmMain, + SSetsKmp.AndroidKmpLib.commonTest, + ) + + runAndCheckZipFiles( + SSetsKmp.AndroidKmpLib.androidMain, + SSetsKmp.AndroidKmpLib.commonMain, + ) + + runAndCheckZipFiles( + SSetsKmp.AndroidKmpLib.androidHostTest, + SSetsKmp.AndroidKmpLib.commonMain, SSetsKmp.AndroidKmpLib.commonTest, + SSetsKmp.AndroidKmpLib.androidMain, + ) + + runAndCheckZipFiles( + SSetsKmp.AndroidKmpLib.androidDeviceTest, + SSetsKmp.AndroidKmpLib.commonMain, SSetsKmp.AndroidKmpLib.commonTest, + SSetsKmp.AndroidKmpLib.androidMain, + ) + } + + @TestFactory + fun `Dependency KMP Hierarchy Android KMP Library With Test Tasks Not Wired`() = runGrpcTest( + versionsPredicate = { versionsWhereAndroidKmpLibExist() }, + ) { + runAndCheckZipFiles( + SSetsKmp.AndroidKmpLib.commonMain, + ) + + runAndCheckZipFiles( + SSetsKmp.AndroidKmpLib.commonTest, + SSetsKmp.AndroidKmpLib.commonMain, + ) + + runAndCheckZipFiles( + SSetsKmp.AndroidKmpLib.jvmMain, + SSetsKmp.AndroidKmpLib.commonMain, + ) + + runAndCheckZipFiles( + SSetsKmp.AndroidKmpLib.jvmTest, + SSetsKmp.AndroidKmpLib.commonMain, SSetsKmp.AndroidKmpLib.jvmMain, + SSetsKmp.AndroidKmpLib.commonTest, + ) + + runAndCheckZipFiles( + SSetsKmp.AndroidKmpLib.androidMain, + SSetsKmp.AndroidKmpLib.commonMain, + ) + + runAndCheckZipFiles( + SSetsKmp.AndroidKmpLib.androidHostTest, + SSetsKmp.AndroidKmpLib.commonMain, SSetsKmp.AndroidKmpLib.commonTest, + SSetsKmp.AndroidKmpLib.androidMain, + ) + + runAndCheckZipFiles( + SSetsKmp.AndroidKmpLib.androidDeviceTest, + SSetsKmp.AndroidKmpLib.commonMain, SSetsKmp.AndroidKmpLib.androidMain, + ) + } + + @TestFactory + fun `Dependency KMP Hierarchy Legacy Android`() = runGrpcTest( + versionsPredicate = { !isAgp9 }, + ) { + runAndCheckZipFiles( + SSetsKmp.LegacyAndroid.commonMain, + ) + + runAndCheckZipFiles( + SSetsKmp.LegacyAndroid.commonTest, + SSetsKmp.LegacyAndroid.commonMain, + ) + + runAndCheckZipFiles( + SSetsKmp.LegacyAndroid.jvmMain, + SSetsKmp.LegacyAndroid.commonMain, + ) + + runAndCheckZipFiles( + SSetsKmp.LegacyAndroid.jvmTest, + SSetsKmp.LegacyAndroid.commonMain, SSetsKmp.LegacyAndroid.jvmMain, + SSetsKmp.LegacyAndroid.commonTest, + ) + + runAndCheckZipFiles( + SSetsKmp.LegacyAndroid.androidDebug, + SSetsKmp.LegacyAndroid.commonMain, + extended = listOf( + SSetsKmp.LegacyAndroid.main, SSetsKmp.LegacyAndroid.androidMain, + SSetsKmp.LegacyAndroid.debug, + ), + ) + + runAndCheckZipFiles( + SSetsKmp.LegacyAndroid.androidRelease, + SSetsKmp.LegacyAndroid.commonMain, + extended = listOf( + SSetsKmp.LegacyAndroid.main, SSetsKmp.LegacyAndroid.androidMain, + SSetsKmp.LegacyAndroid.release, + ) + ) + + runAndCheckZipFiles( + SSetsKmp.LegacyAndroid.androidUnitTestDebug, + SSetsKmp.LegacyAndroid.main, SSetsKmp.LegacyAndroid.androidMain, SSetsKmp.LegacyAndroid.commonMain, + SSetsKmp.LegacyAndroid.debug, SSetsKmp.LegacyAndroid.androidDebug, + SSetsKmp.LegacyAndroid.commonTest, + extended = listOf( + SSetsKmp.LegacyAndroid.test, + SSetsKmp.LegacyAndroid.androidUnitTest, + SSetsKmp.LegacyAndroid.testDebug, + SSetsKmp.LegacyAndroid.testFixtures, + SSetsKmp.LegacyAndroid.testFixturesDebug, + ) + ) + + runAndCheckZipFiles( + SSetsKmp.LegacyAndroid.androidUnitTestRelease, + SSetsKmp.LegacyAndroid.main, SSetsKmp.LegacyAndroid.androidMain, SSetsKmp.LegacyAndroid.commonMain, + SSetsKmp.LegacyAndroid.release, SSetsKmp.LegacyAndroid.androidRelease, + SSetsKmp.LegacyAndroid.commonTest, + extended = listOf( + SSetsKmp.LegacyAndroid.test, + SSetsKmp.LegacyAndroid.androidUnitTest, + SSetsKmp.LegacyAndroid.testRelease, + SSetsKmp.LegacyAndroid.testFixtures, + SSetsKmp.LegacyAndroid.testFixturesRelease, + ) + ) + + runAndCheckZipFiles( + SSetsKmp.LegacyAndroid.androidInstrumentedTestDebug, + SSetsKmp.LegacyAndroid.main, SSetsKmp.LegacyAndroid.androidMain, SSetsKmp.LegacyAndroid.commonMain, + SSetsKmp.LegacyAndroid.debug, SSetsKmp.LegacyAndroid.androidDebug, + SSetsKmp.LegacyAndroid.commonTest, + extended = listOf( + SSetsKmp.LegacyAndroid.androidTest, + SSetsKmp.LegacyAndroid.androidInstrumentedTest, + SSetsKmp.LegacyAndroid.androidTestDebug, + SSetsKmp.LegacyAndroid.testFixtures, + SSetsKmp.LegacyAndroid.testFixturesDebug, + ) + ) + } + + @TestFactory + fun `Dependency KMP Hierarchy Legacy Android Not Wired`() = runGrpcTest( + versionsPredicate = { !isAgp9 }, + ) { + runAndCheckZipFiles( + SSetsKmp.LegacyAndroid.commonMain, + ) + + runAndCheckZipFiles( + SSetsKmp.LegacyAndroid.commonTest, + SSetsKmp.LegacyAndroid.commonMain, + ) + + runAndCheckZipFiles( + SSetsKmp.LegacyAndroid.jvmMain, + SSetsKmp.LegacyAndroid.commonMain, + ) + + runAndCheckZipFiles( + SSetsKmp.LegacyAndroid.jvmTest, + SSetsKmp.LegacyAndroid.commonMain, SSetsKmp.LegacyAndroid.jvmMain, + SSetsKmp.LegacyAndroid.commonTest, + ) + + runAndCheckZipFiles( + SSetsKmp.LegacyAndroid.androidDebug, + SSetsKmp.LegacyAndroid.commonMain, + extended = listOf( + SSetsKmp.LegacyAndroid.main, SSetsKmp.LegacyAndroid.androidMain, + SSetsKmp.LegacyAndroid.debug, + ), + ) + + runAndCheckZipFiles( + SSetsKmp.LegacyAndroid.androidRelease, + SSetsKmp.LegacyAndroid.commonMain, + extended = listOf( + SSetsKmp.LegacyAndroid.main, SSetsKmp.LegacyAndroid.androidMain, + SSetsKmp.LegacyAndroid.release, + ) + ) + + runAndCheckZipFiles( + SSetsKmp.LegacyAndroid.androidUnitTestDebug, + SSetsKmp.LegacyAndroid.main, SSetsKmp.LegacyAndroid.androidMain, SSetsKmp.LegacyAndroid.commonMain, + SSetsKmp.LegacyAndroid.debug, SSetsKmp.LegacyAndroid.androidDebug, + SSetsKmp.LegacyAndroid.commonTest, + extended = listOf( + SSetsKmp.LegacyAndroid.test, + SSetsKmp.LegacyAndroid.androidUnitTest, + SSetsKmp.LegacyAndroid.testDebug, + SSetsKmp.LegacyAndroid.testFixtures, + SSetsKmp.LegacyAndroid.testFixturesDebug, + ) + ) + + runAndCheckZipFiles( + SSetsKmp.LegacyAndroid.androidUnitTestRelease, + SSetsKmp.LegacyAndroid.main, SSetsKmp.LegacyAndroid.androidMain, SSetsKmp.LegacyAndroid.commonMain, + SSetsKmp.LegacyAndroid.release, SSetsKmp.LegacyAndroid.androidRelease, + SSetsKmp.LegacyAndroid.commonTest, + extended = listOf( + SSetsKmp.LegacyAndroid.test, + SSetsKmp.LegacyAndroid.androidUnitTest, + SSetsKmp.LegacyAndroid.testRelease, + SSetsKmp.LegacyAndroid.testFixtures, + SSetsKmp.LegacyAndroid.testFixturesRelease, + ) + ) + + runAndCheckZipFiles( + SSetsKmp.LegacyAndroid.androidInstrumentedTestDebug, + SSetsKmp.LegacyAndroid.main, SSetsKmp.LegacyAndroid.androidMain, SSetsKmp.LegacyAndroid.commonMain, + SSetsKmp.LegacyAndroid.debug, SSetsKmp.LegacyAndroid.androidDebug, + extended = listOf( + SSetsKmp.LegacyAndroid.androidTest, + SSetsKmp.LegacyAndroid.androidInstrumentedTest, + SSetsKmp.LegacyAndroid.androidTestDebug, + SSetsKmp.LegacyAndroid.testFixtures, + SSetsKmp.LegacyAndroid.testFixturesDebug, + ) + ) + } + + @TestFactory fun `KMP Hierarchy`() = runGrpcTest { runAndCheckFiles( diff --git a/gradle-plugin/src/test/kotlin/kotlinx/rpc/base/GrpcBaseTest.kt b/gradle-plugin/src/test/kotlin/kotlinx/rpc/base/GrpcBaseTest.kt index 1b0c8aa2d..db73eadcb 100644 --- a/gradle-plugin/src/test/kotlin/kotlinx/rpc/base/GrpcBaseTest.kt +++ b/gradle-plugin/src/test/kotlin/kotlinx/rpc/base/GrpcBaseTest.kt @@ -9,10 +9,12 @@ package kotlinx.rpc.base import kotlinx.rpc.base.GrpcBaseTest.PluginMode import kotlinx.rpc.base.GrpcBaseTest.SSets import org.gradle.testkit.runner.BuildResult +import org.gradle.testkit.runner.BuildTask import org.gradle.testkit.runner.TaskOutcome import org.intellij.lang.annotations.Language import org.junit.jupiter.api.DynamicTest import org.junit.jupiter.api.TestInstance +import java.io.BufferedReader import java.nio.file.Path import java.util.stream.Stream import kotlin.io.path.* @@ -32,6 +34,8 @@ abstract class GrpcBaseTest : BaseTest() { runNonExistentTask(bufGenerate(set)) runNonExistentTask(processProtoFiles(set)) runNonExistentTask(processProtoFilesImports(set)) + runNonExistentTask(extractProto(set)) + runNonExistentTask(extractProtoImport(set)) runNonExistentTask(generateBufYaml(set)) runNonExistentTask(generateBufGenYaml(set)) } @@ -92,6 +96,9 @@ abstract class GrpcBaseTest : BaseTest() { "File '${file}' in '$dir' does not exist" } } + + // todo check no tests are broken + assertSourceCodeNotGeneratedExcept(sourceSet, *files) } fun assertSourceCodeNotGenerated(sourceSet: SSets, vararg files: Path) { @@ -104,7 +111,7 @@ abstract class GrpcBaseTest : BaseTest() { } } - fun assertSourceCodeNotGeneratedExcept(sourceSet: SSets, vararg files: Path) { + private fun assertSourceCodeNotGeneratedExcept(sourceSet: SSets, vararg files: Path) { val dir = protoBuildDirGenerated.resolve(sourceSet.name).resolve(KOTLIN_MULTIPLATFORM_DIR) fun Path.doAssert() { @@ -312,7 +319,6 @@ abstract class GrpcBaseTest : BaseTest() { assertOutcome(TaskOutcome.SUCCESS, generateBufGenYaml(sourceSet)) assertSourceCodeGenerated(sourceSet, *generatedFiles.toTypedArray()) - assertSourceCodeNotGeneratedExcept(sourceSet, *generatedFiles.toTypedArray()) assertWorkspaceProtoFilesCopied(sourceSet, *protoFiles.toTypedArray()) assertWorkspaceImportProtoFilesCopied(sourceSet, *importProtoFiles.toTypedArray()) @@ -322,9 +328,23 @@ abstract class GrpcBaseTest : BaseTest() { assertProtoTaskNotExecuted(processProtoFilesImports(it)) assertProtoTaskNotExecuted(generateBufYaml(it)) assertProtoTaskNotExecuted(generateBufGenYaml(it)) + assertProtoTaskNotExecuted(extractProto(it)) + assertProtoTaskNotExecuted(extractProtoImport(it)) } } + fun GrpcTestEnv.runAndCheckZipFiles( + sourceSet: SSets, + vararg imports: SSets, + extended: List = emptyList(), + ) { + cleanProtoBuildDir() + + runForSet(sourceSet).assertZipSourceSet(sourceSet, *imports, extendedProto = extended) + + dryRunCompilation(sourceSet) + } + fun GrpcTestEnv.runAndCheckFiles( sourceSet: SSets, vararg imports: SSets, @@ -358,10 +378,59 @@ abstract class GrpcBaseTest : BaseTest() { } fun GrpcTestEnv.runForSet(sourceSet: SSets): BuildResult { + if (!sourceSet.applicable()) { + return SkipBuild + } + return runGradle(bufGenerate(sourceSet)) } - fun BuildResult.assertSourceSet( + private fun BuildResult.assertZipSourceSet( + sourceSet: SSets, + vararg imports: SSets, + extendedProto: List, + ) { + if (!sourceSet.applicable()) { + println( + "Skipping ${sourceSet.capital} source set " + + "because it's not applicable for the current Kotlin version" + ) + return + } + + val importsSet = imports + .onEach { + if (!it.applicable()) { + println( + "Skipping ${it.capital} import source set " + + "because it's not applicable for the current Kotlin version" + ) + } + } + .filter { it.applicable() } + .toSet() + + val generateFor = extendedProto.filter { it.applicable() } + sourceSet + // because every sset has import dependency too for these tests + val fullImports = importsSet + generateFor + + assertTaskExecuted( + sourceSet = sourceSet, + protoFiles = generateFor.map { Path("${it.name}Dep.proto") }, + importProtoFiles = fullImports.map { Path("${it.name}ImportDep.proto") }, + generatedFiles = generateFor.flatMap { + val pascal = it.capital + listOf( + Path("dependency", "${pascal}Dep.kt"), + Path("dependency", "${pascal}Dep.ext.kt"), + Path("dependency", RPC_INTERNAL, "${pascal}Dep.kt"), + ) + }, + notExecuted = sourceSet.all().filter { it != sourceSet && it !in fullImports }, + ) + } + + private fun BuildResult.assertSourceSet( sourceSet: SSets, vararg imports: SSets, extendedProto: List, @@ -386,7 +455,7 @@ abstract class GrpcBaseTest : BaseTest() { .filter { it.applicable() } .toSet() - val generateFor = extendedProto + sourceSet + val generateFor = extendedProto.filter { it.applicable() } + sourceSet assertTaskExecuted( sourceSet = sourceSet, @@ -444,6 +513,8 @@ inputs: fun bufGenerate(sourceSet: SSets) = "bufGenerate${sourceSet.capital}" fun processProtoFiles(sourceSet: SSets) = "process${sourceSet.capital}ProtoFiles" fun processProtoFilesImports(sourceSet: SSets) = "process${sourceSet.capital}ProtoFilesImports" + fun extractProto(sourceSet: SSets) = "extractProto${sourceSet.capital}" + fun extractProtoImport(sourceSet: SSets) = "extractProtoImport${sourceSet.capital}" fun generateBufYaml(sourceSet: SSets) = "generateBufYaml${sourceSet.capital}" fun generateBufGenYaml(sourceSet: SSets) = "generateBufGenYaml${sourceSet.capital}" @@ -468,6 +539,10 @@ inputs: val generateBufYamlCommonTest = generateBufYaml(testSourceSet) val generateBufGenYamlCommonMain = generateBufGenYaml(mainSourceSet) val generateBufGenYamlCommonTest = generateBufGenYaml(testSourceSet) + val extractProtoCommonMain = extractProto(mainSourceSet) + val extractProtoCommonTest = extractProto(testSourceSet) + val extractProtoImportCommonMain = extractProtoImport(mainSourceSet) + val extractProtoImportCommonTest = extractProtoImport(testSourceSet) val protoBuildDir: Path by lazy { projectDir @@ -635,6 +710,37 @@ inputs: return entries } } + + enum class Flavors( + override val mode: PluginMode? = null, + override val minKotlin: KotlinVersion = KtVersion.v2_0_0, + ) : SSetsAndroid { + // non-executable root source sets + main, test, androidTest, + + // per-flavor non-executable + arm, x86, + + // build-type non-executable + debug, release, + + // executable leaf variants + armDebug(plm.a), armRelease(plm.a), + x86Debug(plm.a), x86Release(plm.a), + + // test variants + testArmDebug(plm.a), testArmRelease(plm.a), + testX86Debug(plm.a), testX86Release(plm.a), + + // androidTest variants + androidTestArmDebug(plm.a), + androidTestX86Debug(plm.a), + ; + + override fun all(): List { + return entries + } + } } enum class PluginMode { @@ -774,3 +880,13 @@ private fun SSets.preBuildTaskName(mode: PluginMode): String? { } } } + +private object SkipBuild : BuildResult { + override fun getOutput(): String = "" + @Suppress("UnstableApiUsage") + override fun getOutputReader(): BufferedReader? = null + override fun getTasks(): List = emptyList() + override fun tasks(outcome: TaskOutcome?): List = emptyList() + override fun taskPaths(outcome: TaskOutcome?): List = emptyList() + override fun task(taskPath: String?): BuildTask? = null +} diff --git a/gradle-plugin/src/test/resources/projects/GrpcAndroidProjectTest/dependency_configurations_and_tasks/build.gradle.kts b/gradle-plugin/src/test/resources/projects/GrpcAndroidProjectTest/dependency_configurations_and_tasks/build.gradle.kts new file mode 100644 index 000000000..5a323c513 --- /dev/null +++ b/gradle-plugin/src/test/resources/projects/GrpcAndroidProjectTest/dependency_configurations_and_tasks/build.gradle.kts @@ -0,0 +1,161 @@ +/* + * Copyright 2023-2025 JetBrains s.r.o and contributors. Use of this source code is governed by the Apache 2.0 license. + */ + +import org.gradle.api.GradleException +import org.gradle.kotlin.dsl.version + +plugins { + id("com.android.application") version "" + kotlin("android") version "" + id("org.jetbrains.kotlinx.rpc.plugin") version "" +} + +rpc { + protoc() +} + +android { + namespace = "com.example.myapp" + compileSdk = 34 + + flavorDimensions("abi", "version") + + productFlavors { + create("freeapp") { + dimension = "version" + } + create("retailapp") { + dimension = "version" + } + create("x86") { + dimension = "abi" + } + create("arm") { + dimension = "abi" + } + } +} + +dependencies { + protoImport(files("zip/dependency-protos.zip")) +} + +fun assertConfigurationExists(name: String) { + configurations.findByName(name) + ?: throw GradleException("Configuration '$name' does not exist") +} + +fun assertTaskExists(name: String) { + tasks.findByName(name) + ?: throw GradleException("Task '$name' does not exist") +} + +tasks.register("test_tasks") { + doLast { + // Verify proto and protoImport configurations exist for root source sets + assertConfigurationExists("proto") // main + assertConfigurationExists("protoImport") // main + assertConfigurationExists("testProto") // test + assertConfigurationExists("testProtoImport") // test + assertConfigurationExists("androidTestProto") + assertConfigurationExists("androidTestProtoImport") + + // Verify proto configurations exist for flavor source sets + assertConfigurationExists("armProto") + assertConfigurationExists("armProtoImport") + assertConfigurationExists("x86Proto") + assertConfigurationExists("x86ProtoImport") + assertConfigurationExists("freeappProto") + assertConfigurationExists("freeappProtoImport") + assertConfigurationExists("retailappProto") + assertConfigurationExists("retailappProtoImport") + + // Verify proto configurations exist for combined flavor source sets + assertConfigurationExists("armFreeappProto") + assertConfigurationExists("armFreeappProtoImport") + assertConfigurationExists("armRetailappProto") + assertConfigurationExists("armRetailappProtoImport") + assertConfigurationExists("x86FreeappProto") + assertConfigurationExists("x86FreeappProtoImport") + assertConfigurationExists("x86RetailappProto") + assertConfigurationExists("x86RetailappProtoImport") + + // Verify proto configurations exist for build type source sets + assertConfigurationExists("debugProto") + assertConfigurationExists("debugProtoImport") + assertConfigurationExists("releaseProto") + assertConfigurationExists("releaseProtoImport") + + // Verify proto configurations for variant source sets + assertConfigurationExists("armFreeappDebugProto") + assertConfigurationExists("armFreeappDebugProtoImport") + assertConfigurationExists("armFreeappReleaseProto") + assertConfigurationExists("armFreeappReleaseProtoImport") + assertConfigurationExists("armRetailappDebugProto") + assertConfigurationExists("armRetailappDebugProtoImport") + assertConfigurationExists("armRetailappReleaseProto") + assertConfigurationExists("armRetailappReleaseProtoImport") + assertConfigurationExists("x86FreeappDebugProto") + assertConfigurationExists("x86FreeappDebugProtoImport") + assertConfigurationExists("x86FreeappReleaseProto") + assertConfigurationExists("x86FreeappReleaseProtoImport") + assertConfigurationExists("x86RetailappDebugProto") + assertConfigurationExists("x86RetailappDebugProtoImport") + assertConfigurationExists("x86RetailappReleaseProto") + assertConfigurationExists("x86RetailappReleaseProtoImport") + + // Verify proto configurations for test variant source sets + assertConfigurationExists("testArmFreeappDebugProto") + assertConfigurationExists("testArmFreeappDebugProtoImport") + assertConfigurationExists("testArmFreeappReleaseProto") + assertConfigurationExists("testArmFreeappReleaseProtoImport") + assertConfigurationExists("testX86FreeappDebugProto") + assertConfigurationExists("testX86FreeappDebugProtoImport") + + // Verify proto configurations for androidTest variant source sets + assertConfigurationExists("androidTestArmFreeappDebugProto") + assertConfigurationExists("androidTestArmFreeappDebugProtoImport") + assertConfigurationExists("androidTestX86FreeappDebugProto") + assertConfigurationExists("androidTestX86FreeappDebugProtoImport") + + // Verify extract tasks exist for main variants + assertTaskExists("extractProtoArmFreeappDebug") + assertTaskExists("extractProtoImportArmFreeappDebug") + assertTaskExists("extractProtoArmFreeappRelease") + assertTaskExists("extractProtoImportArmFreeappRelease") + assertTaskExists("extractProtoArmRetailappDebug") + assertTaskExists("extractProtoImportArmRetailappDebug") + assertTaskExists("extractProtoArmRetailappRelease") + assertTaskExists("extractProtoImportArmRetailappRelease") + assertTaskExists("extractProtoX86FreeappDebug") + assertTaskExists("extractProtoImportX86FreeappDebug") + assertTaskExists("extractProtoX86FreeappRelease") + assertTaskExists("extractProtoImportX86FreeappRelease") + assertTaskExists("extractProtoX86RetailappDebug") + assertTaskExists("extractProtoImportX86RetailappDebug") + assertTaskExists("extractProtoX86RetailappRelease") + assertTaskExists("extractProtoImportX86RetailappRelease") + + // Verify extract tasks exist for test variants + assertTaskExists("extractProtoTestArmFreeappDebug") + assertTaskExists("extractProtoImportTestArmFreeappDebug") + assertTaskExists("extractProtoTestArmFreeappRelease") + assertTaskExists("extractProtoImportTestArmFreeappRelease") + assertTaskExists("extractProtoTestX86FreeappDebug") + assertTaskExists("extractProtoImportTestX86FreeappDebug") + + // Verify extract tasks exist for androidTest variants + assertTaskExists("extractProtoAndroidTestArmFreeappDebug") + assertTaskExists("extractProtoImportAndroidTestArmFreeappDebug") + assertTaskExists("extractProtoAndroidTestX86FreeappDebug") + assertTaskExists("extractProtoImportAndroidTestX86FreeappDebug") + + // Verify the protoImport configuration on main has the dependency + val protoImportConfig = configurations.getByName("protoImport") + val depCount = protoImportConfig.dependencies.size + if (depCount != 1) { + throw GradleException("Expected 1 dependency on protoImport, got $depCount") + } + } +} diff --git a/gradle-plugin/src/test/resources/projects/GrpcAndroidProjectTest/dependency_configurations_and_tasks/zip/dependency-protos.zip b/gradle-plugin/src/test/resources/projects/GrpcAndroidProjectTest/dependency_configurations_and_tasks/zip/dependency-protos.zip new file mode 100644 index 000000000..e612110d1 Binary files /dev/null and b/gradle-plugin/src/test/resources/projects/GrpcAndroidProjectTest/dependency_configurations_and_tasks/zip/dependency-protos.zip differ diff --git a/gradle-plugin/src/test/resources/projects/GrpcAndroidProjectTest/dependency_configurations_and_tasks_no_kgp/build.gradle.kts b/gradle-plugin/src/test/resources/projects/GrpcAndroidProjectTest/dependency_configurations_and_tasks_no_kgp/build.gradle.kts new file mode 100644 index 000000000..57b2d65db --- /dev/null +++ b/gradle-plugin/src/test/resources/projects/GrpcAndroidProjectTest/dependency_configurations_and_tasks_no_kgp/build.gradle.kts @@ -0,0 +1,157 @@ +/* + * Copyright 2023-2025 JetBrains s.r.o and contributors. Use of this source code is governed by the Apache 2.0 license. + */ + +import org.gradle.api.GradleException +import org.gradle.kotlin.dsl.version + +plugins { + id("com.android.application") version "" +// kotlin("android") version "" + id("org.jetbrains.kotlinx.rpc.plugin") version "" +} + +rpc { + protoc() +} + +android { + namespace = "com.example.myapp" + compileSdk = 34 + + flavorDimensions += listOf("abi", "version") + + productFlavors { + create("freeapp") { + dimension = "version" + } + create("retailapp") { + dimension = "version" + } + create("x86") { + dimension = "abi" + } + create("arm") { + dimension = "abi" + } + } +} + +dependencies { + protoImport(files("zip/dependency-protos.zip")) +} + +fun assertConfigurationExists(name: String) { + configurations.findByName(name) + ?: throw GradleException("Configuration '$name' does not exist") +} + +fun assertTaskExists(name: String) { + tasks.findByName(name) + ?: throw GradleException("Task '$name' does not exist") +} + +tasks.register("test_tasks") { + doLast { + // Verify proto and protoImport configurations exist for root source sets + assertConfigurationExists("proto") // main + assertConfigurationExists("protoImport") // main + assertConfigurationExists("testProto") // test + assertConfigurationExists("testProtoImport") // test + assertConfigurationExists("androidTestProto") + assertConfigurationExists("androidTestProtoImport") + + // Verify proto configurations exist for flavor source sets + assertConfigurationExists("armProto") + assertConfigurationExists("armProtoImport") + assertConfigurationExists("x86Proto") + assertConfigurationExists("x86ProtoImport") + assertConfigurationExists("freeappProto") + assertConfigurationExists("freeappProtoImport") + assertConfigurationExists("retailappProto") + assertConfigurationExists("retailappProtoImport") + + // Verify proto configurations exist for combined flavor source sets + assertConfigurationExists("armFreeappProto") + assertConfigurationExists("armFreeappProtoImport") + assertConfigurationExists("armRetailappProto") + assertConfigurationExists("armRetailappProtoImport") + assertConfigurationExists("x86FreeappProto") + assertConfigurationExists("x86FreeappProtoImport") + assertConfigurationExists("x86RetailappProto") + assertConfigurationExists("x86RetailappProtoImport") + + // Verify proto configurations exist for build type source sets + assertConfigurationExists("debugProto") + assertConfigurationExists("debugProtoImport") + assertConfigurationExists("releaseProto") + assertConfigurationExists("releaseProtoImport") + + // Verify proto configurations for variant source sets + assertConfigurationExists("armFreeappDebugProto") + assertConfigurationExists("armFreeappDebugProtoImport") + assertConfigurationExists("armFreeappReleaseProto") + assertConfigurationExists("armFreeappReleaseProtoImport") + assertConfigurationExists("armRetailappDebugProto") + assertConfigurationExists("armRetailappDebugProtoImport") + assertConfigurationExists("armRetailappReleaseProto") + assertConfigurationExists("armRetailappReleaseProtoImport") + assertConfigurationExists("x86FreeappDebugProto") + assertConfigurationExists("x86FreeappDebugProtoImport") + assertConfigurationExists("x86FreeappReleaseProto") + assertConfigurationExists("x86FreeappReleaseProtoImport") + assertConfigurationExists("x86RetailappDebugProto") + assertConfigurationExists("x86RetailappDebugProtoImport") + assertConfigurationExists("x86RetailappReleaseProto") + assertConfigurationExists("x86RetailappReleaseProtoImport") + + // Verify proto configurations for test variant source sets + assertConfigurationExists("testArmFreeappDebugProto") + assertConfigurationExists("testArmFreeappDebugProtoImport") + assertConfigurationExists("testX86FreeappDebugProto") + assertConfigurationExists("testX86FreeappDebugProtoImport") + + // Verify proto configurations for androidTest variant source sets + assertConfigurationExists("androidTestArmFreeappDebugProto") + assertConfigurationExists("androidTestArmFreeappDebugProtoImport") + assertConfigurationExists("androidTestX86FreeappDebugProto") + assertConfigurationExists("androidTestX86FreeappDebugProtoImport") + + // Verify extract tasks exist for main variants + assertTaskExists("extractProtoArmFreeappDebug") + assertTaskExists("extractProtoImportArmFreeappDebug") + assertTaskExists("extractProtoArmFreeappRelease") + assertTaskExists("extractProtoImportArmFreeappRelease") + assertTaskExists("extractProtoArmRetailappDebug") + assertTaskExists("extractProtoImportArmRetailappDebug") + assertTaskExists("extractProtoArmRetailappRelease") + assertTaskExists("extractProtoImportArmRetailappRelease") + assertTaskExists("extractProtoX86FreeappDebug") + assertTaskExists("extractProtoImportX86FreeappDebug") + assertTaskExists("extractProtoX86FreeappRelease") + assertTaskExists("extractProtoImportX86FreeappRelease") + assertTaskExists("extractProtoX86RetailappDebug") + assertTaskExists("extractProtoImportX86RetailappDebug") + assertTaskExists("extractProtoX86RetailappRelease") + assertTaskExists("extractProtoImportX86RetailappRelease") + + // Verify extract tasks exist for test variants + assertTaskExists("extractProtoTestArmFreeappDebug") + assertTaskExists("extractProtoImportTestArmFreeappDebug") + assertTaskExists("extractProtoTestX86FreeappDebug") + assertTaskExists("extractProtoImportTestX86FreeappDebug") + + // Verify extract tasks exist for androidTest variants + assertTaskExists("extractProtoAndroidTestArmFreeappDebug") + assertTaskExists("extractProtoImportAndroidTestArmFreeappDebug") + assertTaskExists("extractProtoAndroidTestX86FreeappDebug") + assertTaskExists("extractProtoImportAndroidTestX86FreeappDebug") + + // Verify the protoImport configuration on main has the dependency + val protoImportConfig = configurations.getByName("protoImport") + val depCount = protoImportConfig.dependencies.size + if (depCount != 1) { + throw GradleException("Expected 1 dependency on protoImport, got $depCount") + } + } +} diff --git a/gradle-plugin/src/test/resources/projects/GrpcAndroidProjectTest/dependency_configurations_and_tasks_no_kgp/zip/dependency-protos.zip b/gradle-plugin/src/test/resources/projects/GrpcAndroidProjectTest/dependency_configurations_and_tasks_no_kgp/zip/dependency-protos.zip new file mode 100644 index 000000000..e612110d1 Binary files /dev/null and b/gradle-plugin/src/test/resources/projects/GrpcAndroidProjectTest/dependency_configurations_and_tasks_no_kgp/zip/dependency-protos.zip differ diff --git a/gradle-plugin/src/test/resources/projects/GrpcAndroidProjectTest/dependency_proto_per_source_set_all_variants/build.gradle.kts b/gradle-plugin/src/test/resources/projects/GrpcAndroidProjectTest/dependency_proto_per_source_set_all_variants/build.gradle.kts new file mode 100644 index 000000000..ad3063760 --- /dev/null +++ b/gradle-plugin/src/test/resources/projects/GrpcAndroidProjectTest/dependency_proto_per_source_set_all_variants/build.gradle.kts @@ -0,0 +1,55 @@ +/* + * Copyright 2023-2025 JetBrains s.r.o and contributors. Use of this source code is governed by the Apache 2.0 license. + */ + +import org.gradle.kotlin.dsl.version + +plugins { + id("com.android.application") version "" + kotlin("android") version "" + id("org.jetbrains.kotlinx.rpc.plugin") version "" +} + +rpc { + protoc() +} + +android { + namespace = "com.example.myapp" + compileSdk = 34 +} + +dependencies { + proto(files("zip/main-dependency.zip")) + protoImport(files("zip/main-import-dependency.zip")) + + testProto(files("zip/test-dependency.zip")) + testProtoImport(files("zip/test-import-dependency.zip")) + + testFixturesProto(files("zip/test-fixtures-dependency.zip")) + testFixturesProtoImport(files("zip/test-fixtures-import-dependency.zip")) + + testFixturesDebugProto(files("zip/test-fixtures-debug-dependency.zip")) + testFixturesDebugProtoImport(files("zip/test-fixtures-debug-import-dependency.zip")) + + testFixturesReleaseProto(files("zip/test-fixtures-release-dependency.zip")) + testFixturesReleaseProtoImport(files("zip/test-fixtures-release-import-dependency.zip")) + + androidTestProto(files("zip/android-test-dependency.zip")) + androidTestProtoImport(files("zip/android-test-import-dependency.zip")) + + debugProto(files("zip/debug-dependency.zip")) + debugProtoImport(files("zip/debug-import-dependency.zip")) + + releaseProto(files("zip/release-dependency.zip")) + releaseProtoImport(files("zip/release-import-dependency.zip")) + + testDebugProto(files("zip/test-debug-dependency.zip")) + testDebugProtoImport(files("zip/test-debug-import-dependency.zip")) + + testReleaseProto(files("zip/test-release-dependency.zip")) + testReleaseProtoImport(files("zip/test-release-import-dependency.zip")) + + androidTestDebugProto(files("zip/android-test-debug-dependency.zip")) + androidTestDebugProtoImport(files("zip/android-test-debug-import-dependency.zip")) +} diff --git a/gradle-plugin/src/test/resources/projects/GrpcAndroidProjectTest/dependency_proto_per_source_set_all_variants/zip/android-test-debug-dependency.zip b/gradle-plugin/src/test/resources/projects/GrpcAndroidProjectTest/dependency_proto_per_source_set_all_variants/zip/android-test-debug-dependency.zip new file mode 100644 index 000000000..8ce4fc8b1 Binary files /dev/null and b/gradle-plugin/src/test/resources/projects/GrpcAndroidProjectTest/dependency_proto_per_source_set_all_variants/zip/android-test-debug-dependency.zip differ diff --git a/gradle-plugin/src/test/resources/projects/GrpcAndroidProjectTest/dependency_proto_per_source_set_all_variants/zip/android-test-debug-import-dependency.zip b/gradle-plugin/src/test/resources/projects/GrpcAndroidProjectTest/dependency_proto_per_source_set_all_variants/zip/android-test-debug-import-dependency.zip new file mode 100644 index 000000000..dbb2543c5 Binary files /dev/null and b/gradle-plugin/src/test/resources/projects/GrpcAndroidProjectTest/dependency_proto_per_source_set_all_variants/zip/android-test-debug-import-dependency.zip differ diff --git a/gradle-plugin/src/test/resources/projects/GrpcAndroidProjectTest/dependency_proto_per_source_set_all_variants/zip/android-test-dependency.zip b/gradle-plugin/src/test/resources/projects/GrpcAndroidProjectTest/dependency_proto_per_source_set_all_variants/zip/android-test-dependency.zip new file mode 100644 index 000000000..3bc0fda8e Binary files /dev/null and b/gradle-plugin/src/test/resources/projects/GrpcAndroidProjectTest/dependency_proto_per_source_set_all_variants/zip/android-test-dependency.zip differ diff --git a/gradle-plugin/src/test/resources/projects/GrpcAndroidProjectTest/dependency_proto_per_source_set_all_variants/zip/android-test-import-dependency.zip b/gradle-plugin/src/test/resources/projects/GrpcAndroidProjectTest/dependency_proto_per_source_set_all_variants/zip/android-test-import-dependency.zip new file mode 100644 index 000000000..a287322ae Binary files /dev/null and b/gradle-plugin/src/test/resources/projects/GrpcAndroidProjectTest/dependency_proto_per_source_set_all_variants/zip/android-test-import-dependency.zip differ diff --git a/gradle-plugin/src/test/resources/projects/GrpcAndroidProjectTest/dependency_proto_per_source_set_all_variants/zip/debug-dependency.zip b/gradle-plugin/src/test/resources/projects/GrpcAndroidProjectTest/dependency_proto_per_source_set_all_variants/zip/debug-dependency.zip new file mode 100644 index 000000000..02e24bdda Binary files /dev/null and b/gradle-plugin/src/test/resources/projects/GrpcAndroidProjectTest/dependency_proto_per_source_set_all_variants/zip/debug-dependency.zip differ diff --git a/gradle-plugin/src/test/resources/projects/GrpcAndroidProjectTest/dependency_proto_per_source_set_all_variants/zip/debug-import-dependency.zip b/gradle-plugin/src/test/resources/projects/GrpcAndroidProjectTest/dependency_proto_per_source_set_all_variants/zip/debug-import-dependency.zip new file mode 100644 index 000000000..c4cb032ff Binary files /dev/null and b/gradle-plugin/src/test/resources/projects/GrpcAndroidProjectTest/dependency_proto_per_source_set_all_variants/zip/debug-import-dependency.zip differ diff --git a/gradle-plugin/src/test/resources/projects/GrpcAndroidProjectTest/dependency_proto_per_source_set_all_variants/zip/main-dependency.zip b/gradle-plugin/src/test/resources/projects/GrpcAndroidProjectTest/dependency_proto_per_source_set_all_variants/zip/main-dependency.zip new file mode 100644 index 000000000..f39a52e2b Binary files /dev/null and b/gradle-plugin/src/test/resources/projects/GrpcAndroidProjectTest/dependency_proto_per_source_set_all_variants/zip/main-dependency.zip differ diff --git a/gradle-plugin/src/test/resources/projects/GrpcAndroidProjectTest/dependency_proto_per_source_set_all_variants/zip/main-import-dependency.zip b/gradle-plugin/src/test/resources/projects/GrpcAndroidProjectTest/dependency_proto_per_source_set_all_variants/zip/main-import-dependency.zip new file mode 100644 index 000000000..901f3d56a Binary files /dev/null and b/gradle-plugin/src/test/resources/projects/GrpcAndroidProjectTest/dependency_proto_per_source_set_all_variants/zip/main-import-dependency.zip differ diff --git a/gradle-plugin/src/test/resources/projects/GrpcAndroidProjectTest/dependency_proto_per_source_set_all_variants/zip/release-dependency.zip b/gradle-plugin/src/test/resources/projects/GrpcAndroidProjectTest/dependency_proto_per_source_set_all_variants/zip/release-dependency.zip new file mode 100644 index 000000000..ec4ac10d1 Binary files /dev/null and b/gradle-plugin/src/test/resources/projects/GrpcAndroidProjectTest/dependency_proto_per_source_set_all_variants/zip/release-dependency.zip differ diff --git a/gradle-plugin/src/test/resources/projects/GrpcAndroidProjectTest/dependency_proto_per_source_set_all_variants/zip/release-import-dependency.zip b/gradle-plugin/src/test/resources/projects/GrpcAndroidProjectTest/dependency_proto_per_source_set_all_variants/zip/release-import-dependency.zip new file mode 100644 index 000000000..6c977b626 Binary files /dev/null and b/gradle-plugin/src/test/resources/projects/GrpcAndroidProjectTest/dependency_proto_per_source_set_all_variants/zip/release-import-dependency.zip differ diff --git a/gradle-plugin/src/test/resources/projects/GrpcAndroidProjectTest/dependency_proto_per_source_set_all_variants/zip/test-debug-dependency.zip b/gradle-plugin/src/test/resources/projects/GrpcAndroidProjectTest/dependency_proto_per_source_set_all_variants/zip/test-debug-dependency.zip new file mode 100644 index 000000000..b435cfd8e Binary files /dev/null and b/gradle-plugin/src/test/resources/projects/GrpcAndroidProjectTest/dependency_proto_per_source_set_all_variants/zip/test-debug-dependency.zip differ diff --git a/gradle-plugin/src/test/resources/projects/GrpcAndroidProjectTest/dependency_proto_per_source_set_all_variants/zip/test-debug-import-dependency.zip b/gradle-plugin/src/test/resources/projects/GrpcAndroidProjectTest/dependency_proto_per_source_set_all_variants/zip/test-debug-import-dependency.zip new file mode 100644 index 000000000..052808462 Binary files /dev/null and b/gradle-plugin/src/test/resources/projects/GrpcAndroidProjectTest/dependency_proto_per_source_set_all_variants/zip/test-debug-import-dependency.zip differ diff --git a/gradle-plugin/src/test/resources/projects/GrpcAndroidProjectTest/dependency_proto_per_source_set_all_variants/zip/test-dependency.zip b/gradle-plugin/src/test/resources/projects/GrpcAndroidProjectTest/dependency_proto_per_source_set_all_variants/zip/test-dependency.zip new file mode 100644 index 000000000..c1e4706e2 Binary files /dev/null and b/gradle-plugin/src/test/resources/projects/GrpcAndroidProjectTest/dependency_proto_per_source_set_all_variants/zip/test-dependency.zip differ diff --git a/gradle-plugin/src/test/resources/projects/GrpcAndroidProjectTest/dependency_proto_per_source_set_all_variants/zip/test-fixtures-debug-dependency.zip b/gradle-plugin/src/test/resources/projects/GrpcAndroidProjectTest/dependency_proto_per_source_set_all_variants/zip/test-fixtures-debug-dependency.zip new file mode 100644 index 000000000..0712864d1 Binary files /dev/null and b/gradle-plugin/src/test/resources/projects/GrpcAndroidProjectTest/dependency_proto_per_source_set_all_variants/zip/test-fixtures-debug-dependency.zip differ diff --git a/gradle-plugin/src/test/resources/projects/GrpcAndroidProjectTest/dependency_proto_per_source_set_all_variants/zip/test-fixtures-debug-import-dependency.zip b/gradle-plugin/src/test/resources/projects/GrpcAndroidProjectTest/dependency_proto_per_source_set_all_variants/zip/test-fixtures-debug-import-dependency.zip new file mode 100644 index 000000000..f9188cd8c Binary files /dev/null and b/gradle-plugin/src/test/resources/projects/GrpcAndroidProjectTest/dependency_proto_per_source_set_all_variants/zip/test-fixtures-debug-import-dependency.zip differ diff --git a/gradle-plugin/src/test/resources/projects/GrpcAndroidProjectTest/dependency_proto_per_source_set_all_variants/zip/test-fixtures-dependency.zip b/gradle-plugin/src/test/resources/projects/GrpcAndroidProjectTest/dependency_proto_per_source_set_all_variants/zip/test-fixtures-dependency.zip new file mode 100644 index 000000000..f7cd508e4 Binary files /dev/null and b/gradle-plugin/src/test/resources/projects/GrpcAndroidProjectTest/dependency_proto_per_source_set_all_variants/zip/test-fixtures-dependency.zip differ diff --git a/gradle-plugin/src/test/resources/projects/GrpcAndroidProjectTest/dependency_proto_per_source_set_all_variants/zip/test-fixtures-import-dependency.zip b/gradle-plugin/src/test/resources/projects/GrpcAndroidProjectTest/dependency_proto_per_source_set_all_variants/zip/test-fixtures-import-dependency.zip new file mode 100644 index 000000000..4d5e39b03 Binary files /dev/null and b/gradle-plugin/src/test/resources/projects/GrpcAndroidProjectTest/dependency_proto_per_source_set_all_variants/zip/test-fixtures-import-dependency.zip differ diff --git a/gradle-plugin/src/test/resources/projects/GrpcAndroidProjectTest/dependency_proto_per_source_set_all_variants/zip/test-fixtures-release-dependency.zip b/gradle-plugin/src/test/resources/projects/GrpcAndroidProjectTest/dependency_proto_per_source_set_all_variants/zip/test-fixtures-release-dependency.zip new file mode 100644 index 000000000..09e5fc490 Binary files /dev/null and b/gradle-plugin/src/test/resources/projects/GrpcAndroidProjectTest/dependency_proto_per_source_set_all_variants/zip/test-fixtures-release-dependency.zip differ diff --git a/gradle-plugin/src/test/resources/projects/GrpcAndroidProjectTest/dependency_proto_per_source_set_all_variants/zip/test-fixtures-release-import-dependency.zip b/gradle-plugin/src/test/resources/projects/GrpcAndroidProjectTest/dependency_proto_per_source_set_all_variants/zip/test-fixtures-release-import-dependency.zip new file mode 100644 index 000000000..1f414a704 Binary files /dev/null and b/gradle-plugin/src/test/resources/projects/GrpcAndroidProjectTest/dependency_proto_per_source_set_all_variants/zip/test-fixtures-release-import-dependency.zip differ diff --git a/gradle-plugin/src/test/resources/projects/GrpcAndroidProjectTest/dependency_proto_per_source_set_all_variants/zip/test-import-dependency.zip b/gradle-plugin/src/test/resources/projects/GrpcAndroidProjectTest/dependency_proto_per_source_set_all_variants/zip/test-import-dependency.zip new file mode 100644 index 000000000..b2aa090f1 Binary files /dev/null and b/gradle-plugin/src/test/resources/projects/GrpcAndroidProjectTest/dependency_proto_per_source_set_all_variants/zip/test-import-dependency.zip differ diff --git a/gradle-plugin/src/test/resources/projects/GrpcAndroidProjectTest/dependency_proto_per_source_set_all_variants/zip/test-release-dependency.zip b/gradle-plugin/src/test/resources/projects/GrpcAndroidProjectTest/dependency_proto_per_source_set_all_variants/zip/test-release-dependency.zip new file mode 100644 index 000000000..15da56823 Binary files /dev/null and b/gradle-plugin/src/test/resources/projects/GrpcAndroidProjectTest/dependency_proto_per_source_set_all_variants/zip/test-release-dependency.zip differ diff --git a/gradle-plugin/src/test/resources/projects/GrpcAndroidProjectTest/dependency_proto_per_source_set_all_variants/zip/test-release-import-dependency.zip b/gradle-plugin/src/test/resources/projects/GrpcAndroidProjectTest/dependency_proto_per_source_set_all_variants/zip/test-release-import-dependency.zip new file mode 100644 index 000000000..7cd5c76cf Binary files /dev/null and b/gradle-plugin/src/test/resources/projects/GrpcAndroidProjectTest/dependency_proto_per_source_set_all_variants/zip/test-release-import-dependency.zip differ diff --git a/gradle-plugin/src/test/resources/projects/GrpcAndroidProjectTest/dependency_proto_per_source_set_all_variants_no_kgp/build.gradle.kts b/gradle-plugin/src/test/resources/projects/GrpcAndroidProjectTest/dependency_proto_per_source_set_all_variants_no_kgp/build.gradle.kts new file mode 100644 index 000000000..974266e81 --- /dev/null +++ b/gradle-plugin/src/test/resources/projects/GrpcAndroidProjectTest/dependency_proto_per_source_set_all_variants_no_kgp/build.gradle.kts @@ -0,0 +1,55 @@ +/* + * Copyright 2023-2025 JetBrains s.r.o and contributors. Use of this source code is governed by the Apache 2.0 license. + */ + +import org.gradle.kotlin.dsl.version + +plugins { + id("com.android.application") version "" + // No kotlin("android") plugin - using AGP 9.0+ built-in Kotlin + id("org.jetbrains.kotlinx.rpc.plugin") version "" +} + +rpc { + protoc() +} + +android { + namespace = "com.example.myapp" + compileSdk = 34 +} + +dependencies { + proto(files("zip/main-dependency.zip")) + protoImport(files("zip/main-import-dependency.zip")) + + testProto(files("zip/test-dependency.zip")) + testProtoImport(files("zip/test-import-dependency.zip")) + + testFixturesProto(files("zip/test-fixtures-dependency.zip")) + testFixturesProtoImport(files("zip/test-fixtures-import-dependency.zip")) + + testFixturesDebugProto(files("zip/test-fixtures-debug-dependency.zip")) + testFixturesDebugProtoImport(files("zip/test-fixtures-debug-import-dependency.zip")) + + testFixturesReleaseProto(files("zip/test-fixtures-release-dependency.zip")) + testFixturesReleaseProtoImport(files("zip/test-fixtures-release-import-dependency.zip")) + + androidTestProto(files("zip/android-test-dependency.zip")) + androidTestProtoImport(files("zip/android-test-import-dependency.zip")) + + debugProto(files("zip/debug-dependency.zip")) + debugProtoImport(files("zip/debug-import-dependency.zip")) + + releaseProto(files("zip/release-dependency.zip")) + releaseProtoImport(files("zip/release-import-dependency.zip")) + + testDebugProto(files("zip/test-debug-dependency.zip")) + testDebugProtoImport(files("zip/test-debug-import-dependency.zip")) + + testReleaseProto(files("zip/test-release-dependency.zip")) + testReleaseProtoImport(files("zip/test-release-import-dependency.zip")) + + androidTestDebugProto(files("zip/android-test-debug-dependency.zip")) + androidTestDebugProtoImport(files("zip/android-test-debug-import-dependency.zip")) +} diff --git a/gradle-plugin/src/test/resources/projects/GrpcAndroidProjectTest/dependency_proto_per_source_set_all_variants_no_kgp/zip/android-test-debug-dependency.zip b/gradle-plugin/src/test/resources/projects/GrpcAndroidProjectTest/dependency_proto_per_source_set_all_variants_no_kgp/zip/android-test-debug-dependency.zip new file mode 100644 index 000000000..8ce4fc8b1 Binary files /dev/null and b/gradle-plugin/src/test/resources/projects/GrpcAndroidProjectTest/dependency_proto_per_source_set_all_variants_no_kgp/zip/android-test-debug-dependency.zip differ diff --git a/gradle-plugin/src/test/resources/projects/GrpcAndroidProjectTest/dependency_proto_per_source_set_all_variants_no_kgp/zip/android-test-debug-import-dependency.zip b/gradle-plugin/src/test/resources/projects/GrpcAndroidProjectTest/dependency_proto_per_source_set_all_variants_no_kgp/zip/android-test-debug-import-dependency.zip new file mode 100644 index 000000000..dbb2543c5 Binary files /dev/null and b/gradle-plugin/src/test/resources/projects/GrpcAndroidProjectTest/dependency_proto_per_source_set_all_variants_no_kgp/zip/android-test-debug-import-dependency.zip differ diff --git a/gradle-plugin/src/test/resources/projects/GrpcAndroidProjectTest/dependency_proto_per_source_set_all_variants_no_kgp/zip/android-test-dependency.zip b/gradle-plugin/src/test/resources/projects/GrpcAndroidProjectTest/dependency_proto_per_source_set_all_variants_no_kgp/zip/android-test-dependency.zip new file mode 100644 index 000000000..3bc0fda8e Binary files /dev/null and b/gradle-plugin/src/test/resources/projects/GrpcAndroidProjectTest/dependency_proto_per_source_set_all_variants_no_kgp/zip/android-test-dependency.zip differ diff --git a/gradle-plugin/src/test/resources/projects/GrpcAndroidProjectTest/dependency_proto_per_source_set_all_variants_no_kgp/zip/android-test-import-dependency.zip b/gradle-plugin/src/test/resources/projects/GrpcAndroidProjectTest/dependency_proto_per_source_set_all_variants_no_kgp/zip/android-test-import-dependency.zip new file mode 100644 index 000000000..a287322ae Binary files /dev/null and b/gradle-plugin/src/test/resources/projects/GrpcAndroidProjectTest/dependency_proto_per_source_set_all_variants_no_kgp/zip/android-test-import-dependency.zip differ diff --git a/gradle-plugin/src/test/resources/projects/GrpcAndroidProjectTest/dependency_proto_per_source_set_all_variants_no_kgp/zip/debug-dependency.zip b/gradle-plugin/src/test/resources/projects/GrpcAndroidProjectTest/dependency_proto_per_source_set_all_variants_no_kgp/zip/debug-dependency.zip new file mode 100644 index 000000000..02e24bdda Binary files /dev/null and b/gradle-plugin/src/test/resources/projects/GrpcAndroidProjectTest/dependency_proto_per_source_set_all_variants_no_kgp/zip/debug-dependency.zip differ diff --git a/gradle-plugin/src/test/resources/projects/GrpcAndroidProjectTest/dependency_proto_per_source_set_all_variants_no_kgp/zip/debug-import-dependency.zip b/gradle-plugin/src/test/resources/projects/GrpcAndroidProjectTest/dependency_proto_per_source_set_all_variants_no_kgp/zip/debug-import-dependency.zip new file mode 100644 index 000000000..c4cb032ff Binary files /dev/null and b/gradle-plugin/src/test/resources/projects/GrpcAndroidProjectTest/dependency_proto_per_source_set_all_variants_no_kgp/zip/debug-import-dependency.zip differ diff --git a/gradle-plugin/src/test/resources/projects/GrpcAndroidProjectTest/dependency_proto_per_source_set_all_variants_no_kgp/zip/main-dependency.zip b/gradle-plugin/src/test/resources/projects/GrpcAndroidProjectTest/dependency_proto_per_source_set_all_variants_no_kgp/zip/main-dependency.zip new file mode 100644 index 000000000..f39a52e2b Binary files /dev/null and b/gradle-plugin/src/test/resources/projects/GrpcAndroidProjectTest/dependency_proto_per_source_set_all_variants_no_kgp/zip/main-dependency.zip differ diff --git a/gradle-plugin/src/test/resources/projects/GrpcAndroidProjectTest/dependency_proto_per_source_set_all_variants_no_kgp/zip/main-import-dependency.zip b/gradle-plugin/src/test/resources/projects/GrpcAndroidProjectTest/dependency_proto_per_source_set_all_variants_no_kgp/zip/main-import-dependency.zip new file mode 100644 index 000000000..901f3d56a Binary files /dev/null and b/gradle-plugin/src/test/resources/projects/GrpcAndroidProjectTest/dependency_proto_per_source_set_all_variants_no_kgp/zip/main-import-dependency.zip differ diff --git a/gradle-plugin/src/test/resources/projects/GrpcAndroidProjectTest/dependency_proto_per_source_set_all_variants_no_kgp/zip/release-dependency.zip b/gradle-plugin/src/test/resources/projects/GrpcAndroidProjectTest/dependency_proto_per_source_set_all_variants_no_kgp/zip/release-dependency.zip new file mode 100644 index 000000000..ec4ac10d1 Binary files /dev/null and b/gradle-plugin/src/test/resources/projects/GrpcAndroidProjectTest/dependency_proto_per_source_set_all_variants_no_kgp/zip/release-dependency.zip differ diff --git a/gradle-plugin/src/test/resources/projects/GrpcAndroidProjectTest/dependency_proto_per_source_set_all_variants_no_kgp/zip/release-import-dependency.zip b/gradle-plugin/src/test/resources/projects/GrpcAndroidProjectTest/dependency_proto_per_source_set_all_variants_no_kgp/zip/release-import-dependency.zip new file mode 100644 index 000000000..6c977b626 Binary files /dev/null and b/gradle-plugin/src/test/resources/projects/GrpcAndroidProjectTest/dependency_proto_per_source_set_all_variants_no_kgp/zip/release-import-dependency.zip differ diff --git a/gradle-plugin/src/test/resources/projects/GrpcAndroidProjectTest/dependency_proto_per_source_set_all_variants_no_kgp/zip/test-debug-dependency.zip b/gradle-plugin/src/test/resources/projects/GrpcAndroidProjectTest/dependency_proto_per_source_set_all_variants_no_kgp/zip/test-debug-dependency.zip new file mode 100644 index 000000000..b435cfd8e Binary files /dev/null and b/gradle-plugin/src/test/resources/projects/GrpcAndroidProjectTest/dependency_proto_per_source_set_all_variants_no_kgp/zip/test-debug-dependency.zip differ diff --git a/gradle-plugin/src/test/resources/projects/GrpcAndroidProjectTest/dependency_proto_per_source_set_all_variants_no_kgp/zip/test-debug-import-dependency.zip b/gradle-plugin/src/test/resources/projects/GrpcAndroidProjectTest/dependency_proto_per_source_set_all_variants_no_kgp/zip/test-debug-import-dependency.zip new file mode 100644 index 000000000..052808462 Binary files /dev/null and b/gradle-plugin/src/test/resources/projects/GrpcAndroidProjectTest/dependency_proto_per_source_set_all_variants_no_kgp/zip/test-debug-import-dependency.zip differ diff --git a/gradle-plugin/src/test/resources/projects/GrpcAndroidProjectTest/dependency_proto_per_source_set_all_variants_no_kgp/zip/test-dependency.zip b/gradle-plugin/src/test/resources/projects/GrpcAndroidProjectTest/dependency_proto_per_source_set_all_variants_no_kgp/zip/test-dependency.zip new file mode 100644 index 000000000..c1e4706e2 Binary files /dev/null and b/gradle-plugin/src/test/resources/projects/GrpcAndroidProjectTest/dependency_proto_per_source_set_all_variants_no_kgp/zip/test-dependency.zip differ diff --git a/gradle-plugin/src/test/resources/projects/GrpcAndroidProjectTest/dependency_proto_per_source_set_all_variants_no_kgp/zip/test-fixtures-debug-dependency.zip b/gradle-plugin/src/test/resources/projects/GrpcAndroidProjectTest/dependency_proto_per_source_set_all_variants_no_kgp/zip/test-fixtures-debug-dependency.zip new file mode 100644 index 000000000..0712864d1 Binary files /dev/null and b/gradle-plugin/src/test/resources/projects/GrpcAndroidProjectTest/dependency_proto_per_source_set_all_variants_no_kgp/zip/test-fixtures-debug-dependency.zip differ diff --git a/gradle-plugin/src/test/resources/projects/GrpcAndroidProjectTest/dependency_proto_per_source_set_all_variants_no_kgp/zip/test-fixtures-debug-import-dependency.zip b/gradle-plugin/src/test/resources/projects/GrpcAndroidProjectTest/dependency_proto_per_source_set_all_variants_no_kgp/zip/test-fixtures-debug-import-dependency.zip new file mode 100644 index 000000000..f9188cd8c Binary files /dev/null and b/gradle-plugin/src/test/resources/projects/GrpcAndroidProjectTest/dependency_proto_per_source_set_all_variants_no_kgp/zip/test-fixtures-debug-import-dependency.zip differ diff --git a/gradle-plugin/src/test/resources/projects/GrpcAndroidProjectTest/dependency_proto_per_source_set_all_variants_no_kgp/zip/test-fixtures-dependency.zip b/gradle-plugin/src/test/resources/projects/GrpcAndroidProjectTest/dependency_proto_per_source_set_all_variants_no_kgp/zip/test-fixtures-dependency.zip new file mode 100644 index 000000000..f7cd508e4 Binary files /dev/null and b/gradle-plugin/src/test/resources/projects/GrpcAndroidProjectTest/dependency_proto_per_source_set_all_variants_no_kgp/zip/test-fixtures-dependency.zip differ diff --git a/gradle-plugin/src/test/resources/projects/GrpcAndroidProjectTest/dependency_proto_per_source_set_all_variants_no_kgp/zip/test-fixtures-import-dependency.zip b/gradle-plugin/src/test/resources/projects/GrpcAndroidProjectTest/dependency_proto_per_source_set_all_variants_no_kgp/zip/test-fixtures-import-dependency.zip new file mode 100644 index 000000000..4d5e39b03 Binary files /dev/null and b/gradle-plugin/src/test/resources/projects/GrpcAndroidProjectTest/dependency_proto_per_source_set_all_variants_no_kgp/zip/test-fixtures-import-dependency.zip differ diff --git a/gradle-plugin/src/test/resources/projects/GrpcAndroidProjectTest/dependency_proto_per_source_set_all_variants_no_kgp/zip/test-fixtures-release-dependency.zip b/gradle-plugin/src/test/resources/projects/GrpcAndroidProjectTest/dependency_proto_per_source_set_all_variants_no_kgp/zip/test-fixtures-release-dependency.zip new file mode 100644 index 000000000..09e5fc490 Binary files /dev/null and b/gradle-plugin/src/test/resources/projects/GrpcAndroidProjectTest/dependency_proto_per_source_set_all_variants_no_kgp/zip/test-fixtures-release-dependency.zip differ diff --git a/gradle-plugin/src/test/resources/projects/GrpcAndroidProjectTest/dependency_proto_per_source_set_all_variants_no_kgp/zip/test-fixtures-release-import-dependency.zip b/gradle-plugin/src/test/resources/projects/GrpcAndroidProjectTest/dependency_proto_per_source_set_all_variants_no_kgp/zip/test-fixtures-release-import-dependency.zip new file mode 100644 index 000000000..1f414a704 Binary files /dev/null and b/gradle-plugin/src/test/resources/projects/GrpcAndroidProjectTest/dependency_proto_per_source_set_all_variants_no_kgp/zip/test-fixtures-release-import-dependency.zip differ diff --git a/gradle-plugin/src/test/resources/projects/GrpcAndroidProjectTest/dependency_proto_per_source_set_all_variants_no_kgp/zip/test-import-dependency.zip b/gradle-plugin/src/test/resources/projects/GrpcAndroidProjectTest/dependency_proto_per_source_set_all_variants_no_kgp/zip/test-import-dependency.zip new file mode 100644 index 000000000..b2aa090f1 Binary files /dev/null and b/gradle-plugin/src/test/resources/projects/GrpcAndroidProjectTest/dependency_proto_per_source_set_all_variants_no_kgp/zip/test-import-dependency.zip differ diff --git a/gradle-plugin/src/test/resources/projects/GrpcAndroidProjectTest/dependency_proto_per_source_set_all_variants_no_kgp/zip/test-release-dependency.zip b/gradle-plugin/src/test/resources/projects/GrpcAndroidProjectTest/dependency_proto_per_source_set_all_variants_no_kgp/zip/test-release-dependency.zip new file mode 100644 index 000000000..15da56823 Binary files /dev/null and b/gradle-plugin/src/test/resources/projects/GrpcAndroidProjectTest/dependency_proto_per_source_set_all_variants_no_kgp/zip/test-release-dependency.zip differ diff --git a/gradle-plugin/src/test/resources/projects/GrpcAndroidProjectTest/dependency_proto_per_source_set_all_variants_no_kgp/zip/test-release-import-dependency.zip b/gradle-plugin/src/test/resources/projects/GrpcAndroidProjectTest/dependency_proto_per_source_set_all_variants_no_kgp/zip/test-release-import-dependency.zip new file mode 100644 index 000000000..7cd5c76cf Binary files /dev/null and b/gradle-plugin/src/test/resources/projects/GrpcAndroidProjectTest/dependency_proto_per_source_set_all_variants_no_kgp/zip/test-release-import-dependency.zip differ diff --git a/gradle-plugin/src/test/resources/projects/GrpcJvmProjectTest/dependency_proto_codegen/build.gradle.kts b/gradle-plugin/src/test/resources/projects/GrpcJvmProjectTest/dependency_proto_codegen/build.gradle.kts new file mode 100644 index 000000000..ae7b0dfbb --- /dev/null +++ b/gradle-plugin/src/test/resources/projects/GrpcJvmProjectTest/dependency_proto_codegen/build.gradle.kts @@ -0,0 +1,18 @@ +/* + * Copyright 2023-2025 JetBrains s.r.o and contributors. Use of this source code is governed by the Apache 2.0 license. + */ + +import org.gradle.kotlin.dsl.version + +plugins { + kotlin("jvm") version "" + id("org.jetbrains.kotlinx.rpc.plugin") version "" +} + +rpc { + protoc() +} + +dependencies { + proto(files("zip/dependency-protos.zip")) +} diff --git a/gradle-plugin/src/test/resources/projects/GrpcJvmProjectTest/dependency_proto_codegen/src/main/proto/some.proto b/gradle-plugin/src/test/resources/projects/GrpcJvmProjectTest/dependency_proto_codegen/src/main/proto/some.proto new file mode 100644 index 000000000..c0b46f49a --- /dev/null +++ b/gradle-plugin/src/test/resources/projects/GrpcJvmProjectTest/dependency_proto_codegen/src/main/proto/some.proto @@ -0,0 +1,8 @@ +syntax = "proto3"; + +import "dependency.proto"; + +message Some { + string content = 1; + dependency.DependencyMessage dep = 2; +} diff --git a/gradle-plugin/src/test/resources/projects/GrpcJvmProjectTest/dependency_proto_codegen/zip/dependency-protos.zip b/gradle-plugin/src/test/resources/projects/GrpcJvmProjectTest/dependency_proto_codegen/zip/dependency-protos.zip new file mode 100644 index 000000000..e612110d1 Binary files /dev/null and b/gradle-plugin/src/test/resources/projects/GrpcJvmProjectTest/dependency_proto_codegen/zip/dependency-protos.zip differ diff --git a/gradle-plugin/src/test/resources/projects/GrpcJvmProjectTest/dependency_proto_extract_tasks_are_cached_properly/build.gradle.kts b/gradle-plugin/src/test/resources/projects/GrpcJvmProjectTest/dependency_proto_extract_tasks_are_cached_properly/build.gradle.kts new file mode 100644 index 000000000..d07d5ad80 --- /dev/null +++ b/gradle-plugin/src/test/resources/projects/GrpcJvmProjectTest/dependency_proto_extract_tasks_are_cached_properly/build.gradle.kts @@ -0,0 +1,19 @@ +/* + * Copyright 2023-2025 JetBrains s.r.o and contributors. Use of this source code is governed by the Apache 2.0 license. + */ + +import org.gradle.kotlin.dsl.version + +plugins { + kotlin("jvm") version "" + id("org.jetbrains.kotlinx.rpc.plugin") version "" +} + +rpc { + protoc() +} + +dependencies { + proto(files("zip/main-dependency.zip")) + protoImport(files("zip/main-import-dependency.zip")) +} diff --git a/gradle-plugin/src/test/resources/projects/GrpcJvmProjectTest/dependency_proto_extract_tasks_are_cached_properly/src/main/proto/some.proto b/gradle-plugin/src/test/resources/projects/GrpcJvmProjectTest/dependency_proto_extract_tasks_are_cached_properly/src/main/proto/some.proto new file mode 100644 index 000000000..9ce4a4156 --- /dev/null +++ b/gradle-plugin/src/test/resources/projects/GrpcJvmProjectTest/dependency_proto_extract_tasks_are_cached_properly/src/main/proto/some.proto @@ -0,0 +1,5 @@ +syntax = "proto3"; + +message Some { + string content = 1; +} diff --git a/gradle-plugin/src/test/resources/projects/GrpcJvmProjectTest/dependency_proto_extract_tasks_are_cached_properly/zip/main-dependency.zip b/gradle-plugin/src/test/resources/projects/GrpcJvmProjectTest/dependency_proto_extract_tasks_are_cached_properly/zip/main-dependency.zip new file mode 100644 index 000000000..dc19f447f Binary files /dev/null and b/gradle-plugin/src/test/resources/projects/GrpcJvmProjectTest/dependency_proto_extract_tasks_are_cached_properly/zip/main-dependency.zip differ diff --git a/gradle-plugin/src/test/resources/projects/GrpcJvmProjectTest/dependency_proto_extract_tasks_are_cached_properly/zip/main-import-dependency.zip b/gradle-plugin/src/test/resources/projects/GrpcJvmProjectTest/dependency_proto_extract_tasks_are_cached_properly/zip/main-import-dependency.zip new file mode 100644 index 000000000..aba4520aa Binary files /dev/null and b/gradle-plugin/src/test/resources/projects/GrpcJvmProjectTest/dependency_proto_extract_tasks_are_cached_properly/zip/main-import-dependency.zip differ diff --git a/gradle-plugin/src/test/resources/projects/GrpcJvmProjectTest/dependency_proto_import/build.gradle.kts b/gradle-plugin/src/test/resources/projects/GrpcJvmProjectTest/dependency_proto_import/build.gradle.kts new file mode 100644 index 000000000..c11c79d31 --- /dev/null +++ b/gradle-plugin/src/test/resources/projects/GrpcJvmProjectTest/dependency_proto_import/build.gradle.kts @@ -0,0 +1,18 @@ +/* + * Copyright 2023-2025 JetBrains s.r.o and contributors. Use of this source code is governed by the Apache 2.0 license. + */ + +import org.gradle.kotlin.dsl.version + +plugins { + kotlin("jvm") version "" + id("org.jetbrains.kotlinx.rpc.plugin") version "" +} + +rpc { + protoc() +} + +dependencies { + protoImport(files("zip/dependency-protos.zip")) +} diff --git a/gradle-plugin/src/test/resources/projects/GrpcJvmProjectTest/dependency_proto_import/src/main/proto/some.proto b/gradle-plugin/src/test/resources/projects/GrpcJvmProjectTest/dependency_proto_import/src/main/proto/some.proto new file mode 100644 index 000000000..c0b46f49a --- /dev/null +++ b/gradle-plugin/src/test/resources/projects/GrpcJvmProjectTest/dependency_proto_import/src/main/proto/some.proto @@ -0,0 +1,8 @@ +syntax = "proto3"; + +import "dependency.proto"; + +message Some { + string content = 1; + dependency.DependencyMessage dep = 2; +} diff --git a/gradle-plugin/src/test/resources/projects/GrpcJvmProjectTest/dependency_proto_import/zip/dependency-protos.zip b/gradle-plugin/src/test/resources/projects/GrpcJvmProjectTest/dependency_proto_import/zip/dependency-protos.zip new file mode 100644 index 000000000..e612110d1 Binary files /dev/null and b/gradle-plugin/src/test/resources/projects/GrpcJvmProjectTest/dependency_proto_import/zip/dependency-protos.zip differ diff --git a/gradle-plugin/src/test/resources/projects/GrpcJvmProjectTest/dependency_proto_test_codegen/build.gradle.kts b/gradle-plugin/src/test/resources/projects/GrpcJvmProjectTest/dependency_proto_test_codegen/build.gradle.kts new file mode 100644 index 000000000..e632ff09d --- /dev/null +++ b/gradle-plugin/src/test/resources/projects/GrpcJvmProjectTest/dependency_proto_test_codegen/build.gradle.kts @@ -0,0 +1,18 @@ +/* + * Copyright 2023-2025 JetBrains s.r.o and contributors. Use of this source code is governed by the Apache 2.0 license. + */ + +import org.gradle.kotlin.dsl.version + +plugins { + kotlin("jvm") version "" + id("org.jetbrains.kotlinx.rpc.plugin") version "" +} + +rpc { + protoc() +} + +dependencies { + testProto(files("zip/test-dependency.zip")) +} diff --git a/gradle-plugin/src/test/resources/projects/GrpcJvmProjectTest/dependency_proto_test_codegen/src/test/proto/some.proto b/gradle-plugin/src/test/resources/projects/GrpcJvmProjectTest/dependency_proto_test_codegen/src/test/proto/some.proto new file mode 100644 index 000000000..78346d415 --- /dev/null +++ b/gradle-plugin/src/test/resources/projects/GrpcJvmProjectTest/dependency_proto_test_codegen/src/test/proto/some.proto @@ -0,0 +1,8 @@ +syntax = "proto3"; + +import "testDep.proto"; + +message Some { + string content = 1; + dependency.TestDep dep = 2; +} diff --git a/gradle-plugin/src/test/resources/projects/GrpcJvmProjectTest/dependency_proto_test_codegen/zip/test-dependency.zip b/gradle-plugin/src/test/resources/projects/GrpcJvmProjectTest/dependency_proto_test_codegen/zip/test-dependency.zip new file mode 100644 index 000000000..4e40125ac Binary files /dev/null and b/gradle-plugin/src/test/resources/projects/GrpcJvmProjectTest/dependency_proto_test_codegen/zip/test-dependency.zip differ diff --git a/gradle-plugin/src/test/resources/projects/GrpcJvmProjectTest/dependency_proto_test_import/build.gradle.kts b/gradle-plugin/src/test/resources/projects/GrpcJvmProjectTest/dependency_proto_test_import/build.gradle.kts new file mode 100644 index 000000000..aae1251b6 --- /dev/null +++ b/gradle-plugin/src/test/resources/projects/GrpcJvmProjectTest/dependency_proto_test_import/build.gradle.kts @@ -0,0 +1,18 @@ +/* + * Copyright 2023-2025 JetBrains s.r.o and contributors. Use of this source code is governed by the Apache 2.0 license. + */ + +import org.gradle.kotlin.dsl.version + +plugins { + kotlin("jvm") version "" + id("org.jetbrains.kotlinx.rpc.plugin") version "" +} + +rpc { + protoc() +} + +dependencies { + testProtoImport(files("zip/test-import-dependency.zip")) +} diff --git a/gradle-plugin/src/test/resources/projects/GrpcJvmProjectTest/dependency_proto_test_import/src/test/proto/some.proto b/gradle-plugin/src/test/resources/projects/GrpcJvmProjectTest/dependency_proto_test_import/src/test/proto/some.proto new file mode 100644 index 000000000..30258e2d0 --- /dev/null +++ b/gradle-plugin/src/test/resources/projects/GrpcJvmProjectTest/dependency_proto_test_import/src/test/proto/some.proto @@ -0,0 +1,8 @@ +syntax = "proto3"; + +import "testImportDep.proto"; + +message Some { + string content = 1; + dependency.TestImportDep dep = 2; +} diff --git a/gradle-plugin/src/test/resources/projects/GrpcJvmProjectTest/dependency_proto_test_import/zip/test-import-dependency.zip b/gradle-plugin/src/test/resources/projects/GrpcJvmProjectTest/dependency_proto_test_import/zip/test-import-dependency.zip new file mode 100644 index 000000000..f95b014e1 Binary files /dev/null and b/gradle-plugin/src/test/resources/projects/GrpcJvmProjectTest/dependency_proto_test_import/zip/test-import-dependency.zip differ diff --git a/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_imports_from_provider_source_set/build.gradle.kts b/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_imports_from_provider_source_set/build.gradle.kts new file mode 100644 index 000000000..0357e9c4a --- /dev/null +++ b/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_imports_from_provider_source_set/build.gradle.kts @@ -0,0 +1,31 @@ +/* + * Copyright 2023-2025 JetBrains s.r.o and contributors. Use of this source code is governed by the Apache 2.0 license. + */ + +import org.gradle.kotlin.dsl.version + +plugins { + kotlin("multiplatform") version "" + id("org.jetbrains.kotlinx.rpc.plugin") version "" +} + +kotlin { + jvm() + sourceSets { + create("common2") + } +} + +rpc { + protoc() +} + +protoSourceSets { + named("commonMain") { + importsFrom(project.provider { protoSourceSets.getByName("common2") }) + } +} + +dependencies { + "common2ProtoImport"(files("zip/common-2-import-dependency.zip")) +} diff --git a/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_imports_from_provider_source_set/src/common2/proto/common2.proto b/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_imports_from_provider_source_set/src/common2/proto/common2.proto new file mode 100644 index 000000000..baf033503 --- /dev/null +++ b/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_imports_from_provider_source_set/src/common2/proto/common2.proto @@ -0,0 +1,5 @@ +syntax = "proto3"; + +message Common2Message { + string value = 1; +} diff --git a/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_imports_from_provider_source_set/src/commonMain/proto/some.proto b/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_imports_from_provider_source_set/src/commonMain/proto/some.proto new file mode 100644 index 000000000..dd16daa73 --- /dev/null +++ b/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_imports_from_provider_source_set/src/commonMain/proto/some.proto @@ -0,0 +1,10 @@ +syntax = "proto3"; + +import "common2.proto"; +import "common2ImportDep.proto"; + +message Some { + string content = 1; + AuxMessage aux = 2; + dependency.CommonAuxImportDep dep = 3; +} diff --git a/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_imports_from_provider_source_set/zip/common-2-import-dependency.zip b/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_imports_from_provider_source_set/zip/common-2-import-dependency.zip new file mode 100644 index 000000000..3458fa072 Binary files /dev/null and b/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_imports_from_provider_source_set/zip/common-2-import-dependency.zip differ diff --git a/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy/build.gradle.kts b/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy/build.gradle.kts new file mode 100644 index 000000000..263f5b862 --- /dev/null +++ b/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy/build.gradle.kts @@ -0,0 +1,103 @@ +/* + * Copyright 2023-2025 JetBrains s.r.o and contributors. Use of this source code is governed by the Apache 2.0 license. + */ + +import org.gradle.kotlin.dsl.version +import kotlinx.rpc.protoc.* + +plugins { + kotlin("multiplatform") version "" + id("org.jetbrains.kotlinx.rpc.plugin") version "" +} + +kotlin { + jvm() + js { + nodejs() + } + macosArm64() + + sourceSets { + commonMain.dependencies { + proto(files("zip/common-main-dependency.zip")) + protoImport(files("zip/common-main-import-dependency.zip")) + } + commonTest.dependencies { + proto(files("zip/common-test-dependency.zip")) + protoImport(files("zip/common-test-import-dependency.zip")) + } + + nativeMain.dependencies { + proto(files("zip/native-main-dependency.zip")) + protoImport(files("zip/native-main-import-dependency.zip")) + } + nativeTest.dependencies { + proto(files("zip/native-test-dependency.zip")) + protoImport(files("zip/native-test-import-dependency.zip")) + } + + appleMain.dependencies { + proto(files("zip/apple-main-dependency.zip")) + protoImport(files("zip/apple-main-import-dependency.zip")) + } + appleTest.dependencies { + proto(files("zip/apple-test-dependency.zip")) + protoImport(files("zip/apple-test-import-dependency.zip")) + } + + macosMain.dependencies { + proto(files("zip/macos-main-dependency.zip")) + protoImport(files("zip/macos-main-import-dependency.zip")) + } + macosTest.dependencies { + proto(files("zip/macos-test-dependency.zip")) + protoImport(files("zip/macos-test-import-dependency.zip")) + } + + macosArm64Main.dependencies { + proto(files("zip/macos-arm64-main-dependency.zip")) + protoImport(files("zip/macos-arm64-main-import-dependency.zip")) + } + macosArm64Test.dependencies { + proto(files("zip/macos-arm64-test-dependency.zip")) + protoImport(files("zip/macos-arm64-test-import-dependency.zip")) + } + + jvmMain.dependencies { + proto(files("zip/jvm-main-dependency.zip")) + protoImport(files("zip/jvm-main-import-dependency.zip")) + } + jvmTest.dependencies { + proto(files("zip/jvm-test-dependency.zip")) + protoImport(files("zip/jvm-test-import-dependency.zip")) + } + + jsMain.dependencies { + proto(files("zip/js-main-dependency.zip")) + protoImport(files("zip/js-main-import-dependency.zip")) + } + jsTest.dependencies { + proto(files("zip/js-test-dependency.zip")) + protoImport(files("zip/js-test-import-dependency.zip")) + } + + if ("" >= "2.2.20") { + configureEach { + if (name == "webMain") dependencies { + proto(files("zip/web-main-dependency.zip")) + protoImport(files("zip/web-main-import-dependency.zip")) + } + } + configureEach { + if (name == "webTest") dependencies { + proto(files("zip/web-test-dependency.zip")) + protoImport(files("zip/web-test-import-dependency.zip")) + } + } + } + } +} + +rpc { + protoc() +} diff --git a/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy/zip/apple-main-dependency.zip b/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy/zip/apple-main-dependency.zip new file mode 100644 index 000000000..c3ff957ef Binary files /dev/null and b/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy/zip/apple-main-dependency.zip differ diff --git a/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy/zip/apple-main-import-dependency.zip b/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy/zip/apple-main-import-dependency.zip new file mode 100644 index 000000000..1ce6bf596 Binary files /dev/null and b/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy/zip/apple-main-import-dependency.zip differ diff --git a/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy/zip/apple-test-dependency.zip b/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy/zip/apple-test-dependency.zip new file mode 100644 index 000000000..4169e7d76 Binary files /dev/null and b/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy/zip/apple-test-dependency.zip differ diff --git a/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy/zip/apple-test-import-dependency.zip b/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy/zip/apple-test-import-dependency.zip new file mode 100644 index 000000000..f0915df19 Binary files /dev/null and b/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy/zip/apple-test-import-dependency.zip differ diff --git a/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy/zip/common-main-dependency.zip b/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy/zip/common-main-dependency.zip new file mode 100644 index 000000000..d196d8161 Binary files /dev/null and b/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy/zip/common-main-dependency.zip differ diff --git a/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy/zip/common-main-import-dependency.zip b/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy/zip/common-main-import-dependency.zip new file mode 100644 index 000000000..a09b894bd Binary files /dev/null and b/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy/zip/common-main-import-dependency.zip differ diff --git a/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy/zip/common-test-dependency.zip b/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy/zip/common-test-dependency.zip new file mode 100644 index 000000000..ddb6d203a Binary files /dev/null and b/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy/zip/common-test-dependency.zip differ diff --git a/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy/zip/common-test-import-dependency.zip b/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy/zip/common-test-import-dependency.zip new file mode 100644 index 000000000..fa3d4a8da Binary files /dev/null and b/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy/zip/common-test-import-dependency.zip differ diff --git a/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy/zip/js-main-dependency.zip b/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy/zip/js-main-dependency.zip new file mode 100644 index 000000000..f4273ce10 Binary files /dev/null and b/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy/zip/js-main-dependency.zip differ diff --git a/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy/zip/js-main-import-dependency.zip b/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy/zip/js-main-import-dependency.zip new file mode 100644 index 000000000..5be39ebde Binary files /dev/null and b/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy/zip/js-main-import-dependency.zip differ diff --git a/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy/zip/js-test-dependency.zip b/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy/zip/js-test-dependency.zip new file mode 100644 index 000000000..3900bda2d Binary files /dev/null and b/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy/zip/js-test-dependency.zip differ diff --git a/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy/zip/js-test-import-dependency.zip b/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy/zip/js-test-import-dependency.zip new file mode 100644 index 000000000..61e165cd3 Binary files /dev/null and b/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy/zip/js-test-import-dependency.zip differ diff --git a/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy/zip/jvm-main-dependency.zip b/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy/zip/jvm-main-dependency.zip new file mode 100644 index 000000000..d95aea910 Binary files /dev/null and b/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy/zip/jvm-main-dependency.zip differ diff --git a/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy/zip/jvm-main-import-dependency.zip b/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy/zip/jvm-main-import-dependency.zip new file mode 100644 index 000000000..16af799bf Binary files /dev/null and b/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy/zip/jvm-main-import-dependency.zip differ diff --git a/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy/zip/jvm-test-dependency.zip b/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy/zip/jvm-test-dependency.zip new file mode 100644 index 000000000..b1e5f6aae Binary files /dev/null and b/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy/zip/jvm-test-dependency.zip differ diff --git a/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy/zip/jvm-test-import-dependency.zip b/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy/zip/jvm-test-import-dependency.zip new file mode 100644 index 000000000..fe1f812f1 Binary files /dev/null and b/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy/zip/jvm-test-import-dependency.zip differ diff --git a/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy/zip/macos-arm64-main-dependency.zip b/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy/zip/macos-arm64-main-dependency.zip new file mode 100644 index 000000000..474dc3669 Binary files /dev/null and b/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy/zip/macos-arm64-main-dependency.zip differ diff --git a/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy/zip/macos-arm64-main-import-dependency.zip b/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy/zip/macos-arm64-main-import-dependency.zip new file mode 100644 index 000000000..39c112e34 Binary files /dev/null and b/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy/zip/macos-arm64-main-import-dependency.zip differ diff --git a/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy/zip/macos-arm64-test-dependency.zip b/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy/zip/macos-arm64-test-dependency.zip new file mode 100644 index 000000000..0cf02b32d Binary files /dev/null and b/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy/zip/macos-arm64-test-dependency.zip differ diff --git a/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy/zip/macos-arm64-test-import-dependency.zip b/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy/zip/macos-arm64-test-import-dependency.zip new file mode 100644 index 000000000..f4ad8cd4b Binary files /dev/null and b/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy/zip/macos-arm64-test-import-dependency.zip differ diff --git a/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy/zip/macos-main-dependency.zip b/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy/zip/macos-main-dependency.zip new file mode 100644 index 000000000..1c6007e8e Binary files /dev/null and b/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy/zip/macos-main-dependency.zip differ diff --git a/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy/zip/macos-main-import-dependency.zip b/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy/zip/macos-main-import-dependency.zip new file mode 100644 index 000000000..ef93cc181 Binary files /dev/null and b/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy/zip/macos-main-import-dependency.zip differ diff --git a/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy/zip/macos-test-dependency.zip b/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy/zip/macos-test-dependency.zip new file mode 100644 index 000000000..e7504a8b7 Binary files /dev/null and b/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy/zip/macos-test-dependency.zip differ diff --git a/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy/zip/macos-test-import-dependency.zip b/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy/zip/macos-test-import-dependency.zip new file mode 100644 index 000000000..54fd5e988 Binary files /dev/null and b/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy/zip/macos-test-import-dependency.zip differ diff --git a/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy/zip/native-main-dependency.zip b/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy/zip/native-main-dependency.zip new file mode 100644 index 000000000..8690045bf Binary files /dev/null and b/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy/zip/native-main-dependency.zip differ diff --git a/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy/zip/native-main-import-dependency.zip b/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy/zip/native-main-import-dependency.zip new file mode 100644 index 000000000..45cc0be38 Binary files /dev/null and b/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy/zip/native-main-import-dependency.zip differ diff --git a/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy/zip/native-test-dependency.zip b/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy/zip/native-test-dependency.zip new file mode 100644 index 000000000..038805c10 Binary files /dev/null and b/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy/zip/native-test-dependency.zip differ diff --git a/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy/zip/native-test-import-dependency.zip b/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy/zip/native-test-import-dependency.zip new file mode 100644 index 000000000..548a859c3 Binary files /dev/null and b/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy/zip/native-test-import-dependency.zip differ diff --git a/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy/zip/web-main-dependency.zip b/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy/zip/web-main-dependency.zip new file mode 100644 index 000000000..737935d78 Binary files /dev/null and b/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy/zip/web-main-dependency.zip differ diff --git a/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy/zip/web-main-import-dependency.zip b/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy/zip/web-main-import-dependency.zip new file mode 100644 index 000000000..8028fa4f1 Binary files /dev/null and b/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy/zip/web-main-import-dependency.zip differ diff --git a/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy/zip/web-test-dependency.zip b/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy/zip/web-test-dependency.zip new file mode 100644 index 000000000..8d2a87376 Binary files /dev/null and b/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy/zip/web-test-dependency.zip differ diff --git a/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy/zip/web-test-import-dependency.zip b/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy/zip/web-test-import-dependency.zip new file mode 100644 index 000000000..da5512caf Binary files /dev/null and b/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy/zip/web-test-import-dependency.zip differ diff --git a/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_android_kmp_library/build.gradle.kts b/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_android_kmp_library/build.gradle.kts new file mode 100644 index 000000000..2cc582d00 --- /dev/null +++ b/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_android_kmp_library/build.gradle.kts @@ -0,0 +1,49 @@ +/* + * Copyright 2023-2025 JetBrains s.r.o and contributors. Use of this source code is governed by the Apache 2.0 license. + */ + +import org.gradle.kotlin.dsl.version +import kotlinx.rpc.protoc.* + +plugins { + kotlin("multiplatform") version "" + id("org.jetbrains.kotlinx.rpc.plugin") version "" + id("com.android.kotlin.multiplatform.library") version "" +} + +kotlin { + jvm() + androidLibrary { + namespace = "com.example.namespace" + compileSdk = 34 + } + + sourceSets { + commonMain.dependencies { + proto(files("zip/common-main-dependency.zip")) + protoImport(files("zip/common-main-import-dependency.zip")) + } + commonTest.dependencies { + proto(files("zip/common-test-dependency.zip")) + protoImport(files("zip/common-test-import-dependency.zip")) + } + + jvmMain.dependencies { + proto(files("zip/jvm-main-dependency.zip")) + protoImport(files("zip/jvm-main-import-dependency.zip")) + } + jvmTest.dependencies { + proto(files("zip/jvm-test-dependency.zip")) + protoImport(files("zip/jvm-test-import-dependency.zip")) + } + + androidMain.dependencies { + proto(files("zip/android-main-dependency.zip")) + protoImport(files("zip/android-main-import-dependency.zip")) + } + } +} + +rpc { + protoc() +} diff --git a/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_android_kmp_library/zip/android-main-dependency.zip b/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_android_kmp_library/zip/android-main-dependency.zip new file mode 100644 index 000000000..1b8be9413 Binary files /dev/null and b/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_android_kmp_library/zip/android-main-dependency.zip differ diff --git a/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_android_kmp_library/zip/android-main-import-dependency.zip b/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_android_kmp_library/zip/android-main-import-dependency.zip new file mode 100644 index 000000000..db33717cb Binary files /dev/null and b/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_android_kmp_library/zip/android-main-import-dependency.zip differ diff --git a/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_android_kmp_library/zip/common-main-dependency.zip b/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_android_kmp_library/zip/common-main-dependency.zip new file mode 100644 index 000000000..226ba4934 Binary files /dev/null and b/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_android_kmp_library/zip/common-main-dependency.zip differ diff --git a/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_android_kmp_library/zip/common-main-import-dependency.zip b/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_android_kmp_library/zip/common-main-import-dependency.zip new file mode 100644 index 000000000..d7ce64fc9 Binary files /dev/null and b/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_android_kmp_library/zip/common-main-import-dependency.zip differ diff --git a/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_android_kmp_library/zip/common-test-dependency.zip b/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_android_kmp_library/zip/common-test-dependency.zip new file mode 100644 index 000000000..fafff5890 Binary files /dev/null and b/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_android_kmp_library/zip/common-test-dependency.zip differ diff --git a/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_android_kmp_library/zip/common-test-import-dependency.zip b/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_android_kmp_library/zip/common-test-import-dependency.zip new file mode 100644 index 000000000..4f463794b Binary files /dev/null and b/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_android_kmp_library/zip/common-test-import-dependency.zip differ diff --git a/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_android_kmp_library/zip/jvm-main-dependency.zip b/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_android_kmp_library/zip/jvm-main-dependency.zip new file mode 100644 index 000000000..90644d21f Binary files /dev/null and b/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_android_kmp_library/zip/jvm-main-dependency.zip differ diff --git a/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_android_kmp_library/zip/jvm-main-import-dependency.zip b/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_android_kmp_library/zip/jvm-main-import-dependency.zip new file mode 100644 index 000000000..61fd9a88d Binary files /dev/null and b/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_android_kmp_library/zip/jvm-main-import-dependency.zip differ diff --git a/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_android_kmp_library/zip/jvm-test-dependency.zip b/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_android_kmp_library/zip/jvm-test-dependency.zip new file mode 100644 index 000000000..6ffba2629 Binary files /dev/null and b/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_android_kmp_library/zip/jvm-test-dependency.zip differ diff --git a/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_android_kmp_library/zip/jvm-test-import-dependency.zip b/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_android_kmp_library/zip/jvm-test-import-dependency.zip new file mode 100644 index 000000000..3437c1f46 Binary files /dev/null and b/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_android_kmp_library/zip/jvm-test-import-dependency.zip differ diff --git a/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_android_kmp_library_with_test_tasks/build.gradle.kts b/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_android_kmp_library_with_test_tasks/build.gradle.kts new file mode 100644 index 000000000..e6c764e5f --- /dev/null +++ b/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_android_kmp_library_with_test_tasks/build.gradle.kts @@ -0,0 +1,67 @@ +/* + * Copyright 2023-2025 JetBrains s.r.o and contributors. Use of this source code is governed by the Apache 2.0 license. + */ + +import org.gradle.kotlin.dsl.version +import kotlinx.rpc.protoc.* + +plugins { + kotlin("multiplatform") version "" + id("org.jetbrains.kotlinx.rpc.plugin") version "" + id("com.android.kotlin.multiplatform.library") version "" +} + +kotlin { + jvm() + androidLibrary { + namespace = "com.example.namespace" + compileSdk = 34 + + withDeviceTestBuilder { + sourceSetTreeName = "test" + } + + withHostTestBuilder { + sourceSetTreeName = "test" + } + } + + sourceSets { + commonMain.dependencies { + proto(files("zip/common-main-dependency.zip")) + protoImport(files("zip/common-main-import-dependency.zip")) + } + commonTest.dependencies { + proto(files("zip/common-test-dependency.zip")) + protoImport(files("zip/common-test-import-dependency.zip")) + } + + jvmMain.dependencies { + proto(files("zip/jvm-main-dependency.zip")) + protoImport(files("zip/jvm-main-import-dependency.zip")) + } + jvmTest.dependencies { + proto(files("zip/jvm-test-dependency.zip")) + protoImport(files("zip/jvm-test-import-dependency.zip")) + } + + androidMain.dependencies { + proto(files("zip/android-main-dependency.zip")) + protoImport(files("zip/android-main-import-dependency.zip")) + } + + named("androidHostTest").dependencies { + proto(files("zip/android-host-test-dependency.zip")) + protoImport(files("zip/android-host-test-import-dependency.zip")) + } + + named("androidDeviceTest").dependencies { + proto(files("zip/android-device-test-dependency.zip")) + protoImport(files("zip/android-device-test-import-dependency.zip")) + } + } +} + +rpc { + protoc() +} diff --git a/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_android_kmp_library_with_test_tasks/zip/android-device-test-dependency.zip b/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_android_kmp_library_with_test_tasks/zip/android-device-test-dependency.zip new file mode 100644 index 000000000..9481f1533 Binary files /dev/null and b/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_android_kmp_library_with_test_tasks/zip/android-device-test-dependency.zip differ diff --git a/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_android_kmp_library_with_test_tasks/zip/android-device-test-import-dependency.zip b/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_android_kmp_library_with_test_tasks/zip/android-device-test-import-dependency.zip new file mode 100644 index 000000000..0f5ce47c1 Binary files /dev/null and b/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_android_kmp_library_with_test_tasks/zip/android-device-test-import-dependency.zip differ diff --git a/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_android_kmp_library_with_test_tasks/zip/android-host-test-dependency.zip b/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_android_kmp_library_with_test_tasks/zip/android-host-test-dependency.zip new file mode 100644 index 000000000..8bd5d6b10 Binary files /dev/null and b/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_android_kmp_library_with_test_tasks/zip/android-host-test-dependency.zip differ diff --git a/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_android_kmp_library_with_test_tasks/zip/android-host-test-import-dependency.zip b/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_android_kmp_library_with_test_tasks/zip/android-host-test-import-dependency.zip new file mode 100644 index 000000000..c36cfcb2d Binary files /dev/null and b/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_android_kmp_library_with_test_tasks/zip/android-host-test-import-dependency.zip differ diff --git a/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_android_kmp_library_with_test_tasks/zip/android-main-dependency.zip b/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_android_kmp_library_with_test_tasks/zip/android-main-dependency.zip new file mode 100644 index 000000000..1b8be9413 Binary files /dev/null and b/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_android_kmp_library_with_test_tasks/zip/android-main-dependency.zip differ diff --git a/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_android_kmp_library_with_test_tasks/zip/android-main-import-dependency.zip b/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_android_kmp_library_with_test_tasks/zip/android-main-import-dependency.zip new file mode 100644 index 000000000..db33717cb Binary files /dev/null and b/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_android_kmp_library_with_test_tasks/zip/android-main-import-dependency.zip differ diff --git a/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_android_kmp_library_with_test_tasks/zip/common-main-dependency.zip b/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_android_kmp_library_with_test_tasks/zip/common-main-dependency.zip new file mode 100644 index 000000000..226ba4934 Binary files /dev/null and b/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_android_kmp_library_with_test_tasks/zip/common-main-dependency.zip differ diff --git a/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_android_kmp_library_with_test_tasks/zip/common-main-import-dependency.zip b/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_android_kmp_library_with_test_tasks/zip/common-main-import-dependency.zip new file mode 100644 index 000000000..d7ce64fc9 Binary files /dev/null and b/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_android_kmp_library_with_test_tasks/zip/common-main-import-dependency.zip differ diff --git a/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_android_kmp_library_with_test_tasks/zip/common-test-dependency.zip b/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_android_kmp_library_with_test_tasks/zip/common-test-dependency.zip new file mode 100644 index 000000000..fafff5890 Binary files /dev/null and b/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_android_kmp_library_with_test_tasks/zip/common-test-dependency.zip differ diff --git a/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_android_kmp_library_with_test_tasks/zip/common-test-import-dependency.zip b/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_android_kmp_library_with_test_tasks/zip/common-test-import-dependency.zip new file mode 100644 index 000000000..4f463794b Binary files /dev/null and b/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_android_kmp_library_with_test_tasks/zip/common-test-import-dependency.zip differ diff --git a/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_android_kmp_library_with_test_tasks/zip/jvm-main-dependency.zip b/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_android_kmp_library_with_test_tasks/zip/jvm-main-dependency.zip new file mode 100644 index 000000000..90644d21f Binary files /dev/null and b/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_android_kmp_library_with_test_tasks/zip/jvm-main-dependency.zip differ diff --git a/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_android_kmp_library_with_test_tasks/zip/jvm-main-import-dependency.zip b/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_android_kmp_library_with_test_tasks/zip/jvm-main-import-dependency.zip new file mode 100644 index 000000000..61fd9a88d Binary files /dev/null and b/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_android_kmp_library_with_test_tasks/zip/jvm-main-import-dependency.zip differ diff --git a/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_android_kmp_library_with_test_tasks/zip/jvm-test-dependency.zip b/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_android_kmp_library_with_test_tasks/zip/jvm-test-dependency.zip new file mode 100644 index 000000000..6ffba2629 Binary files /dev/null and b/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_android_kmp_library_with_test_tasks/zip/jvm-test-dependency.zip differ diff --git a/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_android_kmp_library_with_test_tasks/zip/jvm-test-import-dependency.zip b/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_android_kmp_library_with_test_tasks/zip/jvm-test-import-dependency.zip new file mode 100644 index 000000000..3437c1f46 Binary files /dev/null and b/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_android_kmp_library_with_test_tasks/zip/jvm-test-import-dependency.zip differ diff --git a/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_android_kmp_library_with_test_tasks_not_wired/build.gradle.kts b/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_android_kmp_library_with_test_tasks_not_wired/build.gradle.kts new file mode 100644 index 000000000..ff0e7a589 --- /dev/null +++ b/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_android_kmp_library_with_test_tasks_not_wired/build.gradle.kts @@ -0,0 +1,63 @@ +/* + * Copyright 2023-2025 JetBrains s.r.o and contributors. Use of this source code is governed by the Apache 2.0 license. + */ + +import org.gradle.kotlin.dsl.version +import kotlinx.rpc.protoc.* + +plugins { + kotlin("multiplatform") version "" + id("org.jetbrains.kotlinx.rpc.plugin") version "" + id("com.android.kotlin.multiplatform.library") version "" +} + +kotlin { + jvm() + androidLibrary { + namespace = "com.example.namespace" + compileSdk = 34 + + withDeviceTestBuilder { } + + withHostTestBuilder { } + } + + sourceSets { + commonMain.dependencies { + proto(files("zip/common-main-dependency.zip")) + protoImport(files("zip/common-main-import-dependency.zip")) + } + commonTest.dependencies { + proto(files("zip/common-test-dependency.zip")) + protoImport(files("zip/common-test-import-dependency.zip")) + } + + jvmMain.dependencies { + proto(files("zip/jvm-main-dependency.zip")) + protoImport(files("zip/jvm-main-import-dependency.zip")) + } + jvmTest.dependencies { + proto(files("zip/jvm-test-dependency.zip")) + protoImport(files("zip/jvm-test-import-dependency.zip")) + } + + androidMain.dependencies { + proto(files("zip/android-main-dependency.zip")) + protoImport(files("zip/android-main-import-dependency.zip")) + } + + named("androidHostTest").dependencies { + proto(files("zip/android-host-test-dependency.zip")) + protoImport(files("zip/android-host-test-import-dependency.zip")) + } + + named("androidDeviceTest").dependencies { + proto(files("zip/android-device-test-dependency.zip")) + protoImport(files("zip/android-device-test-import-dependency.zip")) + } + } +} + +rpc { + protoc() +} diff --git a/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_android_kmp_library_with_test_tasks_not_wired/zip/android-device-test-dependency.zip b/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_android_kmp_library_with_test_tasks_not_wired/zip/android-device-test-dependency.zip new file mode 100644 index 000000000..9481f1533 Binary files /dev/null and b/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_android_kmp_library_with_test_tasks_not_wired/zip/android-device-test-dependency.zip differ diff --git a/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_android_kmp_library_with_test_tasks_not_wired/zip/android-device-test-import-dependency.zip b/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_android_kmp_library_with_test_tasks_not_wired/zip/android-device-test-import-dependency.zip new file mode 100644 index 000000000..0f5ce47c1 Binary files /dev/null and b/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_android_kmp_library_with_test_tasks_not_wired/zip/android-device-test-import-dependency.zip differ diff --git a/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_android_kmp_library_with_test_tasks_not_wired/zip/android-host-test-dependency.zip b/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_android_kmp_library_with_test_tasks_not_wired/zip/android-host-test-dependency.zip new file mode 100644 index 000000000..8bd5d6b10 Binary files /dev/null and b/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_android_kmp_library_with_test_tasks_not_wired/zip/android-host-test-dependency.zip differ diff --git a/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_android_kmp_library_with_test_tasks_not_wired/zip/android-host-test-import-dependency.zip b/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_android_kmp_library_with_test_tasks_not_wired/zip/android-host-test-import-dependency.zip new file mode 100644 index 000000000..c36cfcb2d Binary files /dev/null and b/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_android_kmp_library_with_test_tasks_not_wired/zip/android-host-test-import-dependency.zip differ diff --git a/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_android_kmp_library_with_test_tasks_not_wired/zip/android-main-dependency.zip b/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_android_kmp_library_with_test_tasks_not_wired/zip/android-main-dependency.zip new file mode 100644 index 000000000..1b8be9413 Binary files /dev/null and b/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_android_kmp_library_with_test_tasks_not_wired/zip/android-main-dependency.zip differ diff --git a/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_android_kmp_library_with_test_tasks_not_wired/zip/android-main-import-dependency.zip b/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_android_kmp_library_with_test_tasks_not_wired/zip/android-main-import-dependency.zip new file mode 100644 index 000000000..db33717cb Binary files /dev/null and b/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_android_kmp_library_with_test_tasks_not_wired/zip/android-main-import-dependency.zip differ diff --git a/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_android_kmp_library_with_test_tasks_not_wired/zip/common-main-dependency.zip b/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_android_kmp_library_with_test_tasks_not_wired/zip/common-main-dependency.zip new file mode 100644 index 000000000..226ba4934 Binary files /dev/null and b/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_android_kmp_library_with_test_tasks_not_wired/zip/common-main-dependency.zip differ diff --git a/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_android_kmp_library_with_test_tasks_not_wired/zip/common-main-import-dependency.zip b/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_android_kmp_library_with_test_tasks_not_wired/zip/common-main-import-dependency.zip new file mode 100644 index 000000000..d7ce64fc9 Binary files /dev/null and b/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_android_kmp_library_with_test_tasks_not_wired/zip/common-main-import-dependency.zip differ diff --git a/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_android_kmp_library_with_test_tasks_not_wired/zip/common-test-dependency.zip b/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_android_kmp_library_with_test_tasks_not_wired/zip/common-test-dependency.zip new file mode 100644 index 000000000..fafff5890 Binary files /dev/null and b/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_android_kmp_library_with_test_tasks_not_wired/zip/common-test-dependency.zip differ diff --git a/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_android_kmp_library_with_test_tasks_not_wired/zip/common-test-import-dependency.zip b/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_android_kmp_library_with_test_tasks_not_wired/zip/common-test-import-dependency.zip new file mode 100644 index 000000000..4f463794b Binary files /dev/null and b/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_android_kmp_library_with_test_tasks_not_wired/zip/common-test-import-dependency.zip differ diff --git a/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_android_kmp_library_with_test_tasks_not_wired/zip/jvm-main-dependency.zip b/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_android_kmp_library_with_test_tasks_not_wired/zip/jvm-main-dependency.zip new file mode 100644 index 000000000..90644d21f Binary files /dev/null and b/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_android_kmp_library_with_test_tasks_not_wired/zip/jvm-main-dependency.zip differ diff --git a/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_android_kmp_library_with_test_tasks_not_wired/zip/jvm-main-import-dependency.zip b/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_android_kmp_library_with_test_tasks_not_wired/zip/jvm-main-import-dependency.zip new file mode 100644 index 000000000..61fd9a88d Binary files /dev/null and b/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_android_kmp_library_with_test_tasks_not_wired/zip/jvm-main-import-dependency.zip differ diff --git a/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_android_kmp_library_with_test_tasks_not_wired/zip/jvm-test-dependency.zip b/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_android_kmp_library_with_test_tasks_not_wired/zip/jvm-test-dependency.zip new file mode 100644 index 000000000..6ffba2629 Binary files /dev/null and b/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_android_kmp_library_with_test_tasks_not_wired/zip/jvm-test-dependency.zip differ diff --git a/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_android_kmp_library_with_test_tasks_not_wired/zip/jvm-test-import-dependency.zip b/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_android_kmp_library_with_test_tasks_not_wired/zip/jvm-test-import-dependency.zip new file mode 100644 index 000000000..3437c1f46 Binary files /dev/null and b/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_android_kmp_library_with_test_tasks_not_wired/zip/jvm-test-import-dependency.zip differ diff --git a/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_legacy_android/build.gradle.kts b/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_legacy_android/build.gradle.kts new file mode 100644 index 000000000..8cbb4ec54 --- /dev/null +++ b/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_legacy_android/build.gradle.kts @@ -0,0 +1,130 @@ +/* + * Copyright 2023-2025 JetBrains s.r.o and contributors. Use of this source code is governed by the Apache 2.0 license. + */ + +import org.gradle.kotlin.dsl.version +import org.jetbrains.kotlin.gradle.plugin.KotlinSourceSetTree +import kotlinx.rpc.protoc.* + +plugins { + kotlin("multiplatform") version "" + id("org.jetbrains.kotlinx.rpc.plugin") version "" + id("com.android.application") version "" +} + +kotlin { + jvm() + + androidTarget { + instrumentedTestVariant { + sourceSetTree.set(KotlinSourceSetTree.test) + } + + unitTestVariant { + sourceSetTree.set(KotlinSourceSetTree.test) + } + } + + sourceSets { + commonMain.dependencies { + proto(files("zip/common-main-dependency.zip")) + protoImport(files("zip/common-main-import-dependency.zip")) + } + commonTest.dependencies { + proto(files("zip/common-test-dependency.zip")) + protoImport(files("zip/common-test-import-dependency.zip")) + } + + jvmMain.dependencies { + proto(files("zip/jvm-main-dependency.zip")) + protoImport(files("zip/jvm-main-import-dependency.zip")) + } + jvmTest.dependencies { + proto(files("zip/jvm-test-dependency.zip")) + protoImport(files("zip/jvm-test-import-dependency.zip")) + } + } +} + +android { + namespace = "com.example.myapp" + compileSdk = 34 +} + +rpc { + protoc() +} + +configurations.all { + if (name.endsWith("Proto") || name.endsWith("ProtoImport")) { + println("configuration: $name") + } +} + +dependencies { + // KMP android non-executable + "androidMainProto"(files("zip/android-main-dependency.zip")) + "androidMainProtoImport"(files("zip/android-main-import-dependency.zip")) + + "androidTestProto"(files("zip/android-test-dependency.zip")) + "androidTestProtoImport"(files("zip/android-test-import-dependency.zip")) + + "androidUnitTestProto"(files("zip/android-unit-test-dependency.zip")) + "androidUnitTestProtoImport"(files("zip/android-unit-test-import-dependency.zip")) + + "androidInstrumentedTestProto"(files("zip/android-instrumented-test-dependency.zip")) + "androidInstrumentedTestProtoImport"(files("zip/android-instrumented-test-import-dependency.zip")) + + // KMP android executable (these are created in a wierd way and probably are not used in real life anyway) + afterEvaluate { + "androidDebugProto"(files("zip/android-debug-dependency.zip")) + "androidDebugProtoImport"(files("zip/android-debug-import-dependency.zip")) + + "androidReleaseProto"(files("zip/android-release-dependency.zip")) + "androidReleaseProtoImport"(files("zip/android-release-import-dependency.zip")) + + "androidUnitTestDebugProto"(files("zip/android-unit-test-debug-dependency.zip")) + "androidUnitTestDebugProtoImport"(files("zip/android-unit-test-debug-import-dependency.zip")) + + "androidUnitTestReleaseProto"(files("zip/android-unit-test-release-dependency.zip")) + "androidUnitTestReleaseProtoImport"(files("zip/android-unit-test-release-import-dependency.zip")) + + "androidInstrumentedTestDebugProto"(files("zip/android-instrumented-test-debug-dependency.zip")) + "androidInstrumentedTestDebugProtoImport"(files("zip/android-instrumented-test-debug-import-dependency.zip")) + } + + // legacy android non-executable + proto(files("zip/main-dependency.zip")) + protoImport(files("zip/main-import-dependency.zip")) + + testProto(files("zip/test-dependency.zip")) + testProtoImport(files("zip/test-import-dependency.zip")) + + testFixturesProto(files("zip/test-fixtures-dependency.zip")) + testFixturesProtoImport(files("zip/test-fixtures-import-dependency.zip")) + + testFixturesDebugProto(files("zip/test-fixtures-debug-dependency.zip")) + testFixturesDebugProtoImport(files("zip/test-fixtures-debug-import-dependency.zip")) + + testFixturesReleaseProto(files("zip/test-fixtures-release-dependency.zip")) + testFixturesReleaseProtoImport(files("zip/test-fixtures-release-import-dependency.zip")) + + androidTestProto(files("zip/android-test-dependency.zip")) + androidTestProtoImport(files("zip/android-test-import-dependency.zip")) + + // legacy android variants + debugProto(files("zip/debug-dependency.zip")) + debugProtoImport(files("zip/debug-import-dependency.zip")) + + releaseProto(files("zip/release-dependency.zip")) + releaseProtoImport(files("zip/release-import-dependency.zip")) + + testDebugProto(files("zip/test-debug-dependency.zip")) + testDebugProtoImport(files("zip/test-debug-import-dependency.zip")) + + testReleaseProto(files("zip/test-release-dependency.zip")) + testReleaseProtoImport(files("zip/test-release-import-dependency.zip")) + + androidTestDebugProto(files("zip/android-test-debug-dependency.zip")) + androidTestDebugProtoImport(files("zip/android-test-debug-import-dependency.zip")) +} diff --git a/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_legacy_android/zip/android-debug-dependency.zip b/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_legacy_android/zip/android-debug-dependency.zip new file mode 100644 index 000000000..170ca4c65 Binary files /dev/null and b/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_legacy_android/zip/android-debug-dependency.zip differ diff --git a/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_legacy_android/zip/android-debug-import-dependency.zip b/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_legacy_android/zip/android-debug-import-dependency.zip new file mode 100644 index 000000000..d266794d0 Binary files /dev/null and b/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_legacy_android/zip/android-debug-import-dependency.zip differ diff --git a/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_legacy_android/zip/android-instrumented-test-debug-dependency.zip b/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_legacy_android/zip/android-instrumented-test-debug-dependency.zip new file mode 100644 index 000000000..5d120b780 Binary files /dev/null and b/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_legacy_android/zip/android-instrumented-test-debug-dependency.zip differ diff --git a/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_legacy_android/zip/android-instrumented-test-debug-import-dependency.zip b/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_legacy_android/zip/android-instrumented-test-debug-import-dependency.zip new file mode 100644 index 000000000..e4797ea35 Binary files /dev/null and b/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_legacy_android/zip/android-instrumented-test-debug-import-dependency.zip differ diff --git a/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_legacy_android/zip/android-instrumented-test-dependency.zip b/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_legacy_android/zip/android-instrumented-test-dependency.zip new file mode 100644 index 000000000..f3f52af56 Binary files /dev/null and b/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_legacy_android/zip/android-instrumented-test-dependency.zip differ diff --git a/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_legacy_android/zip/android-instrumented-test-import-dependency.zip b/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_legacy_android/zip/android-instrumented-test-import-dependency.zip new file mode 100644 index 000000000..7f81cdf9b Binary files /dev/null and b/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_legacy_android/zip/android-instrumented-test-import-dependency.zip differ diff --git a/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_legacy_android/zip/android-main-dependency.zip b/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_legacy_android/zip/android-main-dependency.zip new file mode 100644 index 000000000..1b8be9413 Binary files /dev/null and b/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_legacy_android/zip/android-main-dependency.zip differ diff --git a/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_legacy_android/zip/android-main-import-dependency.zip b/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_legacy_android/zip/android-main-import-dependency.zip new file mode 100644 index 000000000..db33717cb Binary files /dev/null and b/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_legacy_android/zip/android-main-import-dependency.zip differ diff --git a/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_legacy_android/zip/android-release-dependency.zip b/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_legacy_android/zip/android-release-dependency.zip new file mode 100644 index 000000000..6daaeb60f Binary files /dev/null and b/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_legacy_android/zip/android-release-dependency.zip differ diff --git a/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_legacy_android/zip/android-release-import-dependency.zip b/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_legacy_android/zip/android-release-import-dependency.zip new file mode 100644 index 000000000..ea2377613 Binary files /dev/null and b/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_legacy_android/zip/android-release-import-dependency.zip differ diff --git a/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_legacy_android/zip/android-test-debug-dependency.zip b/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_legacy_android/zip/android-test-debug-dependency.zip new file mode 100644 index 000000000..474b2849d Binary files /dev/null and b/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_legacy_android/zip/android-test-debug-dependency.zip differ diff --git a/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_legacy_android/zip/android-test-debug-import-dependency.zip b/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_legacy_android/zip/android-test-debug-import-dependency.zip new file mode 100644 index 000000000..09462b160 Binary files /dev/null and b/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_legacy_android/zip/android-test-debug-import-dependency.zip differ diff --git a/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_legacy_android/zip/android-test-dependency.zip b/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_legacy_android/zip/android-test-dependency.zip new file mode 100644 index 000000000..003b00ccc Binary files /dev/null and b/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_legacy_android/zip/android-test-dependency.zip differ diff --git a/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_legacy_android/zip/android-test-import-dependency.zip b/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_legacy_android/zip/android-test-import-dependency.zip new file mode 100644 index 000000000..66ec2b257 Binary files /dev/null and b/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_legacy_android/zip/android-test-import-dependency.zip differ diff --git a/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_legacy_android/zip/android-unit-test-debug-dependency.zip b/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_legacy_android/zip/android-unit-test-debug-dependency.zip new file mode 100644 index 000000000..b8f6e77c7 Binary files /dev/null and b/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_legacy_android/zip/android-unit-test-debug-dependency.zip differ diff --git a/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_legacy_android/zip/android-unit-test-debug-import-dependency.zip b/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_legacy_android/zip/android-unit-test-debug-import-dependency.zip new file mode 100644 index 000000000..8e3d505ab Binary files /dev/null and b/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_legacy_android/zip/android-unit-test-debug-import-dependency.zip differ diff --git a/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_legacy_android/zip/android-unit-test-dependency.zip b/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_legacy_android/zip/android-unit-test-dependency.zip new file mode 100644 index 000000000..23ca25887 Binary files /dev/null and b/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_legacy_android/zip/android-unit-test-dependency.zip differ diff --git a/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_legacy_android/zip/android-unit-test-import-dependency.zip b/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_legacy_android/zip/android-unit-test-import-dependency.zip new file mode 100644 index 000000000..5f4122220 Binary files /dev/null and b/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_legacy_android/zip/android-unit-test-import-dependency.zip differ diff --git a/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_legacy_android/zip/android-unit-test-release-dependency.zip b/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_legacy_android/zip/android-unit-test-release-dependency.zip new file mode 100644 index 000000000..0908c3d71 Binary files /dev/null and b/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_legacy_android/zip/android-unit-test-release-dependency.zip differ diff --git a/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_legacy_android/zip/android-unit-test-release-import-dependency.zip b/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_legacy_android/zip/android-unit-test-release-import-dependency.zip new file mode 100644 index 000000000..1e4c446f2 Binary files /dev/null and b/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_legacy_android/zip/android-unit-test-release-import-dependency.zip differ diff --git a/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_legacy_android/zip/common-main-dependency.zip b/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_legacy_android/zip/common-main-dependency.zip new file mode 100644 index 000000000..226ba4934 Binary files /dev/null and b/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_legacy_android/zip/common-main-dependency.zip differ diff --git a/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_legacy_android/zip/common-main-import-dependency.zip b/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_legacy_android/zip/common-main-import-dependency.zip new file mode 100644 index 000000000..d7ce64fc9 Binary files /dev/null and b/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_legacy_android/zip/common-main-import-dependency.zip differ diff --git a/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_legacy_android/zip/common-test-dependency.zip b/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_legacy_android/zip/common-test-dependency.zip new file mode 100644 index 000000000..fafff5890 Binary files /dev/null and b/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_legacy_android/zip/common-test-dependency.zip differ diff --git a/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_legacy_android/zip/common-test-import-dependency.zip b/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_legacy_android/zip/common-test-import-dependency.zip new file mode 100644 index 000000000..4f463794b Binary files /dev/null and b/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_legacy_android/zip/common-test-import-dependency.zip differ diff --git a/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_legacy_android/zip/debug-dependency.zip b/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_legacy_android/zip/debug-dependency.zip new file mode 100644 index 000000000..86bb2e511 Binary files /dev/null and b/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_legacy_android/zip/debug-dependency.zip differ diff --git a/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_legacy_android/zip/debug-import-dependency.zip b/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_legacy_android/zip/debug-import-dependency.zip new file mode 100644 index 000000000..e255a4815 Binary files /dev/null and b/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_legacy_android/zip/debug-import-dependency.zip differ diff --git a/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_legacy_android/zip/jvm-main-dependency.zip b/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_legacy_android/zip/jvm-main-dependency.zip new file mode 100644 index 000000000..90644d21f Binary files /dev/null and b/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_legacy_android/zip/jvm-main-dependency.zip differ diff --git a/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_legacy_android/zip/jvm-main-import-dependency.zip b/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_legacy_android/zip/jvm-main-import-dependency.zip new file mode 100644 index 000000000..61fd9a88d Binary files /dev/null and b/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_legacy_android/zip/jvm-main-import-dependency.zip differ diff --git a/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_legacy_android/zip/jvm-test-dependency.zip b/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_legacy_android/zip/jvm-test-dependency.zip new file mode 100644 index 000000000..6ffba2629 Binary files /dev/null and b/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_legacy_android/zip/jvm-test-dependency.zip differ diff --git a/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_legacy_android/zip/jvm-test-import-dependency.zip b/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_legacy_android/zip/jvm-test-import-dependency.zip new file mode 100644 index 000000000..3437c1f46 Binary files /dev/null and b/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_legacy_android/zip/jvm-test-import-dependency.zip differ diff --git a/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_legacy_android/zip/main-dependency.zip b/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_legacy_android/zip/main-dependency.zip new file mode 100644 index 000000000..39402ac5a Binary files /dev/null and b/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_legacy_android/zip/main-dependency.zip differ diff --git a/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_legacy_android/zip/main-import-dependency.zip b/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_legacy_android/zip/main-import-dependency.zip new file mode 100644 index 000000000..970e93158 Binary files /dev/null and b/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_legacy_android/zip/main-import-dependency.zip differ diff --git a/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_legacy_android/zip/release-dependency.zip b/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_legacy_android/zip/release-dependency.zip new file mode 100644 index 000000000..e7b3feb6e Binary files /dev/null and b/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_legacy_android/zip/release-dependency.zip differ diff --git a/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_legacy_android/zip/release-import-dependency.zip b/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_legacy_android/zip/release-import-dependency.zip new file mode 100644 index 000000000..7ad520895 Binary files /dev/null and b/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_legacy_android/zip/release-import-dependency.zip differ diff --git a/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_legacy_android/zip/test-debug-dependency.zip b/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_legacy_android/zip/test-debug-dependency.zip new file mode 100644 index 000000000..3f57104bf Binary files /dev/null and b/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_legacy_android/zip/test-debug-dependency.zip differ diff --git a/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_legacy_android/zip/test-debug-import-dependency.zip b/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_legacy_android/zip/test-debug-import-dependency.zip new file mode 100644 index 000000000..f15b21721 Binary files /dev/null and b/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_legacy_android/zip/test-debug-import-dependency.zip differ diff --git a/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_legacy_android/zip/test-dependency.zip b/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_legacy_android/zip/test-dependency.zip new file mode 100644 index 000000000..5b372e614 Binary files /dev/null and b/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_legacy_android/zip/test-dependency.zip differ diff --git a/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_legacy_android/zip/test-fixtures-debug-dependency.zip b/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_legacy_android/zip/test-fixtures-debug-dependency.zip new file mode 100644 index 000000000..0697179a8 Binary files /dev/null and b/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_legacy_android/zip/test-fixtures-debug-dependency.zip differ diff --git a/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_legacy_android/zip/test-fixtures-debug-import-dependency.zip b/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_legacy_android/zip/test-fixtures-debug-import-dependency.zip new file mode 100644 index 000000000..3da5dd47d Binary files /dev/null and b/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_legacy_android/zip/test-fixtures-debug-import-dependency.zip differ diff --git a/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_legacy_android/zip/test-fixtures-dependency.zip b/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_legacy_android/zip/test-fixtures-dependency.zip new file mode 100644 index 000000000..0c2cda598 Binary files /dev/null and b/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_legacy_android/zip/test-fixtures-dependency.zip differ diff --git a/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_legacy_android/zip/test-fixtures-import-dependency.zip b/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_legacy_android/zip/test-fixtures-import-dependency.zip new file mode 100644 index 000000000..bce910651 Binary files /dev/null and b/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_legacy_android/zip/test-fixtures-import-dependency.zip differ diff --git a/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_legacy_android/zip/test-fixtures-release-dependency.zip b/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_legacy_android/zip/test-fixtures-release-dependency.zip new file mode 100644 index 000000000..0ba7a12f3 Binary files /dev/null and b/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_legacy_android/zip/test-fixtures-release-dependency.zip differ diff --git a/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_legacy_android/zip/test-fixtures-release-import-dependency.zip b/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_legacy_android/zip/test-fixtures-release-import-dependency.zip new file mode 100644 index 000000000..2f22a97de Binary files /dev/null and b/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_legacy_android/zip/test-fixtures-release-import-dependency.zip differ diff --git a/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_legacy_android/zip/test-import-dependency.zip b/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_legacy_android/zip/test-import-dependency.zip new file mode 100644 index 000000000..c35ced988 Binary files /dev/null and b/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_legacy_android/zip/test-import-dependency.zip differ diff --git a/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_legacy_android/zip/test-release-dependency.zip b/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_legacy_android/zip/test-release-dependency.zip new file mode 100644 index 000000000..f3eb69927 Binary files /dev/null and b/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_legacy_android/zip/test-release-dependency.zip differ diff --git a/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_legacy_android/zip/test-release-import-dependency.zip b/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_legacy_android/zip/test-release-import-dependency.zip new file mode 100644 index 000000000..92c1da678 Binary files /dev/null and b/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_legacy_android/zip/test-release-import-dependency.zip differ diff --git a/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_legacy_android_not_wired/build.gradle.kts b/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_legacy_android_not_wired/build.gradle.kts new file mode 100644 index 000000000..1fcbb4009 --- /dev/null +++ b/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_legacy_android_not_wired/build.gradle.kts @@ -0,0 +1,115 @@ +/* + * Copyright 2023-2025 JetBrains s.r.o and contributors. Use of this source code is governed by the Apache 2.0 license. + */ + +import org.gradle.kotlin.dsl.version +import kotlinx.rpc.protoc.* + +plugins { + kotlin("multiplatform") version "" + id("org.jetbrains.kotlinx.rpc.plugin") version "" + id("com.android.application") version "" +} + +kotlin { + jvm() + + androidTarget { } + + sourceSets { + commonMain.dependencies { + proto(files("zip/common-main-dependency.zip")) + protoImport(files("zip/common-main-import-dependency.zip")) + } + commonTest.dependencies { + proto(files("zip/common-test-dependency.zip")) + protoImport(files("zip/common-test-import-dependency.zip")) + } + + jvmMain.dependencies { + proto(files("zip/jvm-main-dependency.zip")) + protoImport(files("zip/jvm-main-import-dependency.zip")) + } + jvmTest.dependencies { + proto(files("zip/jvm-test-dependency.zip")) + protoImport(files("zip/jvm-test-import-dependency.zip")) + } + } +} + +android { + namespace = "com.example.myapp" + compileSdk = 34 +} + +rpc { + protoc() +} + +dependencies { + // KMP android non-executable + "androidMainProto"(files("zip/android-main-dependency.zip")) + "androidMainProtoImport"(files("zip/android-main-import-dependency.zip")) + + "androidTestProto"(files("zip/android-test-dependency.zip")) + "androidTestProtoImport"(files("zip/android-test-import-dependency.zip")) + + "androidUnitTestProto"(files("zip/android-unit-test-dependency.zip")) + "androidUnitTestProtoImport"(files("zip/android-unit-test-import-dependency.zip")) + + "androidInstrumentedTestProto"(files("zip/android-instrumented-test-dependency.zip")) + "androidInstrumentedTestProtoImport"(files("zip/android-instrumented-test-import-dependency.zip")) + + // KMP android executable (these are created in a wierd way and probably are not used in real life anyway) + afterEvaluate { + "androidDebugProto"(files("zip/android-debug-dependency.zip")) + "androidDebugProtoImport"(files("zip/android-debug-import-dependency.zip")) + + "androidReleaseProto"(files("zip/android-release-dependency.zip")) + "androidReleaseProtoImport"(files("zip/android-release-import-dependency.zip")) + + "androidUnitTestDebugProto"(files("zip/android-unit-test-debug-dependency.zip")) + "androidUnitTestDebugProtoImport"(files("zip/android-unit-test-debug-import-dependency.zip")) + + "androidUnitTestReleaseProto"(files("zip/android-unit-test-release-dependency.zip")) + "androidUnitTestReleaseProtoImport"(files("zip/android-unit-test-release-import-dependency.zip")) + + "androidInstrumentedTestDebugProto"(files("zip/android-instrumented-test-debug-dependency.zip")) + "androidInstrumentedTestDebugProtoImport"(files("zip/android-instrumented-test-debug-import-dependency.zip")) + } + + // legacy android non-executable + proto(files("zip/main-dependency.zip")) + protoImport(files("zip/main-import-dependency.zip")) + + testProto(files("zip/test-dependency.zip")) + testProtoImport(files("zip/test-import-dependency.zip")) + + testFixturesProto(files("zip/test-fixtures-dependency.zip")) + testFixturesProtoImport(files("zip/test-fixtures-import-dependency.zip")) + + testFixturesDebugProto(files("zip/test-fixtures-debug-dependency.zip")) + testFixturesDebugProtoImport(files("zip/test-fixtures-debug-import-dependency.zip")) + + testFixturesReleaseProto(files("zip/test-fixtures-release-dependency.zip")) + testFixturesReleaseProtoImport(files("zip/test-fixtures-release-import-dependency.zip")) + + androidTestProto(files("zip/android-test-dependency.zip")) + androidTestProtoImport(files("zip/android-test-import-dependency.zip")) + + // legacy android variants + debugProto(files("zip/debug-dependency.zip")) + debugProtoImport(files("zip/debug-import-dependency.zip")) + + releaseProto(files("zip/release-dependency.zip")) + releaseProtoImport(files("zip/release-import-dependency.zip")) + + testDebugProto(files("zip/test-debug-dependency.zip")) + testDebugProtoImport(files("zip/test-debug-import-dependency.zip")) + + testReleaseProto(files("zip/test-release-dependency.zip")) + testReleaseProtoImport(files("zip/test-release-import-dependency.zip")) + + androidTestDebugProto(files("zip/android-test-debug-dependency.zip")) + androidTestDebugProtoImport(files("zip/android-test-debug-import-dependency.zip")) +} diff --git a/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_legacy_android_not_wired/zip/android-debug-dependency.zip b/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_legacy_android_not_wired/zip/android-debug-dependency.zip new file mode 100644 index 000000000..170ca4c65 Binary files /dev/null and b/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_legacy_android_not_wired/zip/android-debug-dependency.zip differ diff --git a/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_legacy_android_not_wired/zip/android-debug-import-dependency.zip b/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_legacy_android_not_wired/zip/android-debug-import-dependency.zip new file mode 100644 index 000000000..d266794d0 Binary files /dev/null and b/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_legacy_android_not_wired/zip/android-debug-import-dependency.zip differ diff --git a/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_legacy_android_not_wired/zip/android-instrumented-test-debug-dependency.zip b/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_legacy_android_not_wired/zip/android-instrumented-test-debug-dependency.zip new file mode 100644 index 000000000..5d120b780 Binary files /dev/null and b/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_legacy_android_not_wired/zip/android-instrumented-test-debug-dependency.zip differ diff --git a/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_legacy_android_not_wired/zip/android-instrumented-test-debug-import-dependency.zip b/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_legacy_android_not_wired/zip/android-instrumented-test-debug-import-dependency.zip new file mode 100644 index 000000000..e4797ea35 Binary files /dev/null and b/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_legacy_android_not_wired/zip/android-instrumented-test-debug-import-dependency.zip differ diff --git a/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_legacy_android_not_wired/zip/android-instrumented-test-dependency.zip b/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_legacy_android_not_wired/zip/android-instrumented-test-dependency.zip new file mode 100644 index 000000000..f3f52af56 Binary files /dev/null and b/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_legacy_android_not_wired/zip/android-instrumented-test-dependency.zip differ diff --git a/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_legacy_android_not_wired/zip/android-instrumented-test-import-dependency.zip b/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_legacy_android_not_wired/zip/android-instrumented-test-import-dependency.zip new file mode 100644 index 000000000..7f81cdf9b Binary files /dev/null and b/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_legacy_android_not_wired/zip/android-instrumented-test-import-dependency.zip differ diff --git a/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_legacy_android_not_wired/zip/android-main-dependency.zip b/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_legacy_android_not_wired/zip/android-main-dependency.zip new file mode 100644 index 000000000..1b8be9413 Binary files /dev/null and b/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_legacy_android_not_wired/zip/android-main-dependency.zip differ diff --git a/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_legacy_android_not_wired/zip/android-main-import-dependency.zip b/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_legacy_android_not_wired/zip/android-main-import-dependency.zip new file mode 100644 index 000000000..db33717cb Binary files /dev/null and b/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_legacy_android_not_wired/zip/android-main-import-dependency.zip differ diff --git a/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_legacy_android_not_wired/zip/android-release-dependency.zip b/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_legacy_android_not_wired/zip/android-release-dependency.zip new file mode 100644 index 000000000..6daaeb60f Binary files /dev/null and b/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_legacy_android_not_wired/zip/android-release-dependency.zip differ diff --git a/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_legacy_android_not_wired/zip/android-release-import-dependency.zip b/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_legacy_android_not_wired/zip/android-release-import-dependency.zip new file mode 100644 index 000000000..ea2377613 Binary files /dev/null and b/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_legacy_android_not_wired/zip/android-release-import-dependency.zip differ diff --git a/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_legacy_android_not_wired/zip/android-test-debug-dependency.zip b/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_legacy_android_not_wired/zip/android-test-debug-dependency.zip new file mode 100644 index 000000000..474b2849d Binary files /dev/null and b/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_legacy_android_not_wired/zip/android-test-debug-dependency.zip differ diff --git a/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_legacy_android_not_wired/zip/android-test-debug-import-dependency.zip b/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_legacy_android_not_wired/zip/android-test-debug-import-dependency.zip new file mode 100644 index 000000000..09462b160 Binary files /dev/null and b/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_legacy_android_not_wired/zip/android-test-debug-import-dependency.zip differ diff --git a/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_legacy_android_not_wired/zip/android-test-dependency.zip b/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_legacy_android_not_wired/zip/android-test-dependency.zip new file mode 100644 index 000000000..003b00ccc Binary files /dev/null and b/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_legacy_android_not_wired/zip/android-test-dependency.zip differ diff --git a/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_legacy_android_not_wired/zip/android-test-import-dependency.zip b/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_legacy_android_not_wired/zip/android-test-import-dependency.zip new file mode 100644 index 000000000..66ec2b257 Binary files /dev/null and b/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_legacy_android_not_wired/zip/android-test-import-dependency.zip differ diff --git a/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_legacy_android_not_wired/zip/android-unit-test-debug-dependency.zip b/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_legacy_android_not_wired/zip/android-unit-test-debug-dependency.zip new file mode 100644 index 000000000..b8f6e77c7 Binary files /dev/null and b/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_legacy_android_not_wired/zip/android-unit-test-debug-dependency.zip differ diff --git a/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_legacy_android_not_wired/zip/android-unit-test-debug-import-dependency.zip b/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_legacy_android_not_wired/zip/android-unit-test-debug-import-dependency.zip new file mode 100644 index 000000000..8e3d505ab Binary files /dev/null and b/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_legacy_android_not_wired/zip/android-unit-test-debug-import-dependency.zip differ diff --git a/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_legacy_android_not_wired/zip/android-unit-test-dependency.zip b/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_legacy_android_not_wired/zip/android-unit-test-dependency.zip new file mode 100644 index 000000000..23ca25887 Binary files /dev/null and b/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_legacy_android_not_wired/zip/android-unit-test-dependency.zip differ diff --git a/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_legacy_android_not_wired/zip/android-unit-test-import-dependency.zip b/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_legacy_android_not_wired/zip/android-unit-test-import-dependency.zip new file mode 100644 index 000000000..5f4122220 Binary files /dev/null and b/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_legacy_android_not_wired/zip/android-unit-test-import-dependency.zip differ diff --git a/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_legacy_android_not_wired/zip/android-unit-test-release-dependency.zip b/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_legacy_android_not_wired/zip/android-unit-test-release-dependency.zip new file mode 100644 index 000000000..0908c3d71 Binary files /dev/null and b/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_legacy_android_not_wired/zip/android-unit-test-release-dependency.zip differ diff --git a/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_legacy_android_not_wired/zip/android-unit-test-release-import-dependency.zip b/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_legacy_android_not_wired/zip/android-unit-test-release-import-dependency.zip new file mode 100644 index 000000000..1e4c446f2 Binary files /dev/null and b/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_legacy_android_not_wired/zip/android-unit-test-release-import-dependency.zip differ diff --git a/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_legacy_android_not_wired/zip/common-main-dependency.zip b/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_legacy_android_not_wired/zip/common-main-dependency.zip new file mode 100644 index 000000000..226ba4934 Binary files /dev/null and b/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_legacy_android_not_wired/zip/common-main-dependency.zip differ diff --git a/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_legacy_android_not_wired/zip/common-main-import-dependency.zip b/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_legacy_android_not_wired/zip/common-main-import-dependency.zip new file mode 100644 index 000000000..d7ce64fc9 Binary files /dev/null and b/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_legacy_android_not_wired/zip/common-main-import-dependency.zip differ diff --git a/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_legacy_android_not_wired/zip/common-test-dependency.zip b/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_legacy_android_not_wired/zip/common-test-dependency.zip new file mode 100644 index 000000000..fafff5890 Binary files /dev/null and b/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_legacy_android_not_wired/zip/common-test-dependency.zip differ diff --git a/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_legacy_android_not_wired/zip/common-test-import-dependency.zip b/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_legacy_android_not_wired/zip/common-test-import-dependency.zip new file mode 100644 index 000000000..4f463794b Binary files /dev/null and b/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_legacy_android_not_wired/zip/common-test-import-dependency.zip differ diff --git a/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_legacy_android_not_wired/zip/debug-dependency.zip b/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_legacy_android_not_wired/zip/debug-dependency.zip new file mode 100644 index 000000000..86bb2e511 Binary files /dev/null and b/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_legacy_android_not_wired/zip/debug-dependency.zip differ diff --git a/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_legacy_android_not_wired/zip/debug-import-dependency.zip b/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_legacy_android_not_wired/zip/debug-import-dependency.zip new file mode 100644 index 000000000..e255a4815 Binary files /dev/null and b/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_legacy_android_not_wired/zip/debug-import-dependency.zip differ diff --git a/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_legacy_android_not_wired/zip/jvm-main-dependency.zip b/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_legacy_android_not_wired/zip/jvm-main-dependency.zip new file mode 100644 index 000000000..90644d21f Binary files /dev/null and b/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_legacy_android_not_wired/zip/jvm-main-dependency.zip differ diff --git a/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_legacy_android_not_wired/zip/jvm-main-import-dependency.zip b/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_legacy_android_not_wired/zip/jvm-main-import-dependency.zip new file mode 100644 index 000000000..61fd9a88d Binary files /dev/null and b/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_legacy_android_not_wired/zip/jvm-main-import-dependency.zip differ diff --git a/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_legacy_android_not_wired/zip/jvm-test-dependency.zip b/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_legacy_android_not_wired/zip/jvm-test-dependency.zip new file mode 100644 index 000000000..6ffba2629 Binary files /dev/null and b/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_legacy_android_not_wired/zip/jvm-test-dependency.zip differ diff --git a/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_legacy_android_not_wired/zip/jvm-test-import-dependency.zip b/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_legacy_android_not_wired/zip/jvm-test-import-dependency.zip new file mode 100644 index 000000000..3437c1f46 Binary files /dev/null and b/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_legacy_android_not_wired/zip/jvm-test-import-dependency.zip differ diff --git a/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_legacy_android_not_wired/zip/main-dependency.zip b/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_legacy_android_not_wired/zip/main-dependency.zip new file mode 100644 index 000000000..39402ac5a Binary files /dev/null and b/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_legacy_android_not_wired/zip/main-dependency.zip differ diff --git a/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_legacy_android_not_wired/zip/main-import-dependency.zip b/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_legacy_android_not_wired/zip/main-import-dependency.zip new file mode 100644 index 000000000..970e93158 Binary files /dev/null and b/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_legacy_android_not_wired/zip/main-import-dependency.zip differ diff --git a/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_legacy_android_not_wired/zip/release-dependency.zip b/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_legacy_android_not_wired/zip/release-dependency.zip new file mode 100644 index 000000000..e7b3feb6e Binary files /dev/null and b/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_legacy_android_not_wired/zip/release-dependency.zip differ diff --git a/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_legacy_android_not_wired/zip/release-import-dependency.zip b/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_legacy_android_not_wired/zip/release-import-dependency.zip new file mode 100644 index 000000000..7ad520895 Binary files /dev/null and b/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_legacy_android_not_wired/zip/release-import-dependency.zip differ diff --git a/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_legacy_android_not_wired/zip/test-debug-dependency.zip b/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_legacy_android_not_wired/zip/test-debug-dependency.zip new file mode 100644 index 000000000..3f57104bf Binary files /dev/null and b/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_legacy_android_not_wired/zip/test-debug-dependency.zip differ diff --git a/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_legacy_android_not_wired/zip/test-debug-import-dependency.zip b/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_legacy_android_not_wired/zip/test-debug-import-dependency.zip new file mode 100644 index 000000000..f15b21721 Binary files /dev/null and b/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_legacy_android_not_wired/zip/test-debug-import-dependency.zip differ diff --git a/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_legacy_android_not_wired/zip/test-dependency.zip b/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_legacy_android_not_wired/zip/test-dependency.zip new file mode 100644 index 000000000..5b372e614 Binary files /dev/null and b/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_legacy_android_not_wired/zip/test-dependency.zip differ diff --git a/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_legacy_android_not_wired/zip/test-fixtures-debug-dependency.zip b/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_legacy_android_not_wired/zip/test-fixtures-debug-dependency.zip new file mode 100644 index 000000000..0697179a8 Binary files /dev/null and b/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_legacy_android_not_wired/zip/test-fixtures-debug-dependency.zip differ diff --git a/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_legacy_android_not_wired/zip/test-fixtures-debug-import-dependency.zip b/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_legacy_android_not_wired/zip/test-fixtures-debug-import-dependency.zip new file mode 100644 index 000000000..3da5dd47d Binary files /dev/null and b/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_legacy_android_not_wired/zip/test-fixtures-debug-import-dependency.zip differ diff --git a/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_legacy_android_not_wired/zip/test-fixtures-dependency.zip b/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_legacy_android_not_wired/zip/test-fixtures-dependency.zip new file mode 100644 index 000000000..0c2cda598 Binary files /dev/null and b/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_legacy_android_not_wired/zip/test-fixtures-dependency.zip differ diff --git a/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_legacy_android_not_wired/zip/test-fixtures-import-dependency.zip b/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_legacy_android_not_wired/zip/test-fixtures-import-dependency.zip new file mode 100644 index 000000000..bce910651 Binary files /dev/null and b/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_legacy_android_not_wired/zip/test-fixtures-import-dependency.zip differ diff --git a/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_legacy_android_not_wired/zip/test-fixtures-release-dependency.zip b/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_legacy_android_not_wired/zip/test-fixtures-release-dependency.zip new file mode 100644 index 000000000..0ba7a12f3 Binary files /dev/null and b/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_legacy_android_not_wired/zip/test-fixtures-release-dependency.zip differ diff --git a/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_legacy_android_not_wired/zip/test-fixtures-release-import-dependency.zip b/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_legacy_android_not_wired/zip/test-fixtures-release-import-dependency.zip new file mode 100644 index 000000000..2f22a97de Binary files /dev/null and b/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_legacy_android_not_wired/zip/test-fixtures-release-import-dependency.zip differ diff --git a/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_legacy_android_not_wired/zip/test-import-dependency.zip b/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_legacy_android_not_wired/zip/test-import-dependency.zip new file mode 100644 index 000000000..c35ced988 Binary files /dev/null and b/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_legacy_android_not_wired/zip/test-import-dependency.zip differ diff --git a/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_legacy_android_not_wired/zip/test-release-dependency.zip b/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_legacy_android_not_wired/zip/test-release-dependency.zip new file mode 100644 index 000000000..f3eb69927 Binary files /dev/null and b/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_legacy_android_not_wired/zip/test-release-dependency.zip differ diff --git a/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_legacy_android_not_wired/zip/test-release-import-dependency.zip b/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_legacy_android_not_wired/zip/test-release-import-dependency.zip new file mode 100644 index 000000000..92c1da678 Binary files /dev/null and b/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_kmp_hierarchy_legacy_android_not_wired/zip/test-release-import-dependency.zip differ diff --git a/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_proto_codegen/build.gradle.kts b/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_proto_codegen/build.gradle.kts new file mode 100644 index 000000000..66c755b02 --- /dev/null +++ b/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_proto_codegen/build.gradle.kts @@ -0,0 +1,22 @@ +/* + * Copyright 2023-2025 JetBrains s.r.o and contributors. Use of this source code is governed by the Apache 2.0 license. + */ + +import org.gradle.kotlin.dsl.version + +plugins { + kotlin("multiplatform") version "" + id("org.jetbrains.kotlinx.rpc.plugin") version "" +} + +kotlin { + jvm() +} + +rpc { + protoc() +} + +dependencies { + commonMainProto(files("zip/dependency-protos.zip")) +} diff --git a/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_proto_codegen/src/commonMain/proto/some.proto b/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_proto_codegen/src/commonMain/proto/some.proto new file mode 100644 index 000000000..c0b46f49a --- /dev/null +++ b/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_proto_codegen/src/commonMain/proto/some.proto @@ -0,0 +1,8 @@ +syntax = "proto3"; + +import "dependency.proto"; + +message Some { + string content = 1; + dependency.DependencyMessage dep = 2; +} diff --git a/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_proto_codegen/zip/dependency-protos.zip b/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_proto_codegen/zip/dependency-protos.zip new file mode 100644 index 000000000..e612110d1 Binary files /dev/null and b/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_proto_codegen/zip/dependency-protos.zip differ diff --git a/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_proto_codegen_kmp_dsl/build.gradle.kts b/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_proto_codegen_kmp_dsl/build.gradle.kts new file mode 100644 index 000000000..7571fc5dd --- /dev/null +++ b/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_proto_codegen_kmp_dsl/build.gradle.kts @@ -0,0 +1,27 @@ +/* + * Copyright 2023-2025 JetBrains s.r.o and contributors. Use of this source code is governed by the Apache 2.0 license. + */ + +import org.gradle.kotlin.dsl.version +import kotlinx.rpc.protoc.* + +plugins { + kotlin("multiplatform") version "" + id("org.jetbrains.kotlinx.rpc.plugin") version "" +} + +kotlin { + jvm() + + sourceSets { + commonMain { + dependencies { + proto(files("zip/common-main-dependency.zip")) + } + } + } +} + +rpc { + protoc() +} diff --git a/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_proto_codegen_kmp_dsl/src/commonMain/proto/some.proto b/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_proto_codegen_kmp_dsl/src/commonMain/proto/some.proto new file mode 100644 index 000000000..d6118d37b --- /dev/null +++ b/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_proto_codegen_kmp_dsl/src/commonMain/proto/some.proto @@ -0,0 +1,8 @@ +syntax = "proto3"; + +import "commonMainDep.proto"; + +message Some { + string content = 1; + dependency.CommonMainDep dep = 2; +} diff --git a/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_proto_codegen_kmp_dsl/zip/common-main-dependency.zip b/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_proto_codegen_kmp_dsl/zip/common-main-dependency.zip new file mode 100644 index 000000000..71a307b5a Binary files /dev/null and b/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_proto_codegen_kmp_dsl/zip/common-main-dependency.zip differ diff --git a/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_proto_import/build.gradle.kts b/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_proto_import/build.gradle.kts new file mode 100644 index 000000000..cf3a2e7d0 --- /dev/null +++ b/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_proto_import/build.gradle.kts @@ -0,0 +1,22 @@ +/* + * Copyright 2023-2025 JetBrains s.r.o and contributors. Use of this source code is governed by the Apache 2.0 license. + */ + +import org.gradle.kotlin.dsl.version + +plugins { + kotlin("multiplatform") version "" + id("org.jetbrains.kotlinx.rpc.plugin") version "" +} + +kotlin { + jvm() +} + +rpc { + protoc() +} + +dependencies { + commonMainProtoImport(files("zip/dependency-protos.zip")) +} diff --git a/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_proto_import/src/commonMain/proto/some.proto b/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_proto_import/src/commonMain/proto/some.proto new file mode 100644 index 000000000..c0b46f49a --- /dev/null +++ b/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_proto_import/src/commonMain/proto/some.proto @@ -0,0 +1,8 @@ +syntax = "proto3"; + +import "dependency.proto"; + +message Some { + string content = 1; + dependency.DependencyMessage dep = 2; +} diff --git a/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_proto_import/zip/dependency-protos.zip b/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_proto_import/zip/dependency-protos.zip new file mode 100644 index 000000000..e612110d1 Binary files /dev/null and b/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_proto_import/zip/dependency-protos.zip differ diff --git a/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_proto_import_kmp_dsl/build.gradle.kts b/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_proto_import_kmp_dsl/build.gradle.kts new file mode 100644 index 000000000..ef882dc88 --- /dev/null +++ b/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_proto_import_kmp_dsl/build.gradle.kts @@ -0,0 +1,27 @@ +/* + * Copyright 2023-2025 JetBrains s.r.o and contributors. Use of this source code is governed by the Apache 2.0 license. + */ + +import org.gradle.kotlin.dsl.version +import kotlinx.rpc.protoc.* + +plugins { + kotlin("multiplatform") version "" + id("org.jetbrains.kotlinx.rpc.plugin") version "" +} + +kotlin { + jvm() + + sourceSets { + commonMain { + dependencies { + protoImport(files("zip/dependency-protos.zip")) + } + } + } +} + +rpc { + protoc() +} diff --git a/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_proto_import_kmp_dsl/src/commonMain/proto/some.proto b/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_proto_import_kmp_dsl/src/commonMain/proto/some.proto new file mode 100644 index 000000000..c0b46f49a --- /dev/null +++ b/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_proto_import_kmp_dsl/src/commonMain/proto/some.proto @@ -0,0 +1,8 @@ +syntax = "proto3"; + +import "dependency.proto"; + +message Some { + string content = 1; + dependency.DependencyMessage dep = 2; +} diff --git a/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_proto_import_kmp_dsl/zip/dependency-protos.zip b/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_proto_import_kmp_dsl/zip/dependency-protos.zip new file mode 100644 index 000000000..e612110d1 Binary files /dev/null and b/gradle-plugin/src/test/resources/projects/GrpcKmpProjectTest/dependency_proto_import_kmp_dsl/zip/dependency-protos.zip differ