Make resources configuration lenient
This prevents resolution failures if resources configuration ends up selecting java-api variants ^KT-66393
This commit is contained in:
committed by
Space Team
parent
947d4c57e7
commit
1a4eaf796d
+7
-6
@@ -41,12 +41,13 @@ enum class KotlinTargetResourcesResolutionStrategy {
|
|||||||
}.files
|
}.files
|
||||||
}
|
}
|
||||||
|
|
||||||
ResourcesConfiguration -> compilation.internal.configurations.resourcesConfiguration
|
ResourcesConfiguration -> compilation.internal.configurations.resourcesConfiguration?.let { resourcesConfiguration ->
|
||||||
?: return compilation.project.files().also {
|
resourcesConfiguration.incoming.artifactView { it.isLenient = true }.files
|
||||||
compilation.project.reportDiagnostic(
|
} ?: return compilation.project.files().also {
|
||||||
KotlinToolingDiagnostics.MissingResourcesConfigurationForTarget(compilation.target.name)
|
compilation.project.reportDiagnostic(
|
||||||
)
|
KotlinToolingDiagnostics.MissingResourcesConfigurationForTarget(compilation.target.name)
|
||||||
}
|
)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+8
-17
@@ -14,7 +14,6 @@ import org.gradle.api.artifacts.ResolveException
|
|||||||
import org.gradle.api.attributes.Attribute
|
import org.gradle.api.attributes.Attribute
|
||||||
import org.gradle.api.attributes.Usage
|
import org.gradle.api.attributes.Usage
|
||||||
import org.gradle.api.internal.project.ProjectInternal
|
import org.gradle.api.internal.project.ProjectInternal
|
||||||
import org.gradle.internal.component.NoMatchingConfigurationSelectionException
|
|
||||||
import org.gradle.kotlin.dsl.project
|
import org.gradle.kotlin.dsl.project
|
||||||
import org.gradle.testfixtures.ProjectBuilder
|
import org.gradle.testfixtures.ProjectBuilder
|
||||||
import org.jetbrains.kotlin.gradle.dependencyResolutionTests.mavenCentralCacheRedirector
|
import org.jetbrains.kotlin.gradle.dependencyResolutionTests.mavenCentralCacheRedirector
|
||||||
@@ -30,7 +29,6 @@ import org.jetbrains.kotlin.gradle.plugin.mpp.resources.resourcesPublicationExte
|
|||||||
import org.jetbrains.kotlin.gradle.plugin.usageByName
|
import org.jetbrains.kotlin.gradle.plugin.usageByName
|
||||||
import org.jetbrains.kotlin.gradle.targets.js.dsl.ExperimentalWasmDsl
|
import org.jetbrains.kotlin.gradle.targets.js.dsl.ExperimentalWasmDsl
|
||||||
import org.jetbrains.kotlin.gradle.util.*
|
import org.jetbrains.kotlin.gradle.util.*
|
||||||
import org.jetbrains.kotlin.gradle.utils.buildOrNull
|
|
||||||
import org.jetbrains.kotlin.util.assertThrows
|
import org.jetbrains.kotlin.util.assertThrows
|
||||||
import org.junit.Test
|
import org.junit.Test
|
||||||
import java.io.File
|
import java.io.File
|
||||||
@@ -67,17 +65,11 @@ class KotlinTargetVariantResourcesResolutionTests {
|
|||||||
|
|
||||||
@Test
|
@Test
|
||||||
fun `test direct dependency - between different native targets - with resources configuration`() {
|
fun `test direct dependency - between different native targets - with resources configuration`() {
|
||||||
directDependencyOnResourcesProducer(
|
testDirectDependencyOnResourcesProducer(
|
||||||
producerTarget = { linuxX64() },
|
producerTarget = { linuxX64() },
|
||||||
consumerTarget = { linuxArm64() },
|
consumerTarget = { linuxArm64() },
|
||||||
strategy = KotlinTargetResourcesResolutionStrategy.ResourcesConfiguration,
|
resolutionStrategy = KotlinTargetResourcesResolutionStrategy.ResourcesConfiguration,
|
||||||
assert = { consumer, _ ->
|
expectedResult = { _, _ -> emptySet() },
|
||||||
assertThrows<ResolveException> {
|
|
||||||
KotlinTargetResourcesResolutionStrategy.ResourcesConfiguration.resourceArchives(
|
|
||||||
consumer.multiplatformExtension.linuxArm64().compilations.getByName("main")
|
|
||||||
).files
|
|
||||||
}
|
|
||||||
},
|
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -390,12 +382,11 @@ class KotlinTargetVariantResourcesResolutionTests {
|
|||||||
listOf(rootProject, producer, consumer).forEach { it.evaluate() }
|
listOf(rootProject, producer, consumer).forEach { it.evaluate() }
|
||||||
producer.publishFakeResources(producer.multiplatformExtension.linuxArm64())
|
producer.publishFakeResources(producer.multiplatformExtension.linuxArm64())
|
||||||
|
|
||||||
assert(
|
assertEquals(
|
||||||
assertThrows<ResolveException> {
|
hashSetOf(producer.buildFile("kotlin-multiplatform-resources/zip-for-publication/linuxArm64/producer.kotlin_resources.zip")),
|
||||||
resolutionStrategy.resourceArchives(
|
resolutionStrategy.resourceArchives(
|
||||||
consumer.multiplatformExtension.linuxArm64().compilations.getByName("main")
|
consumer.multiplatformExtension.linuxArm64().compilations.getByName("main")
|
||||||
).files
|
).files
|
||||||
}.cause?.cause is NoMatchingConfigurationSelectionException
|
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user