Skip to content

Commit e8dfa16

Browse files
authored
Added USAGE attribute to all Kover configurations
Fixes #678 PR #680
1 parent 0b7846c commit e8dfa16

File tree

5 files changed

+41
-0
lines changed

5 files changed

+41
-0
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
/*
2+
* Copyright 2017-2024 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license.
3+
*/
4+
5+
package kotlinx.kover.gradle.aggregation.commons.artifacts
6+
7+
import org.gradle.api.attributes.*
8+
9+
internal interface KoverUsageAttr: Usage {
10+
companion object {
11+
const val VALUE = "kover"
12+
}
13+
}

kover-gradle-plugin/src/main/kotlin/kotlinx/kover/gradle/aggregation/project/KoverProjectGradlePlugin.kt

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
package kotlinx.kover.gradle.aggregation.project
66

77
import kotlinx.kover.features.jvm.KoverFeatures
8+
import kotlinx.kover.gradle.aggregation.commons.artifacts.*
89
import kotlinx.kover.gradle.aggregation.commons.artifacts.CompilationInfo
910
import kotlinx.kover.gradle.aggregation.commons.artifacts.KoverContentAttr
1011
import kotlinx.kover.gradle.aggregation.commons.artifacts.asConsumer
@@ -25,10 +26,12 @@ import kotlinx.kover.gradle.plugin.commons.KoverCriticalException
2526
import org.gradle.api.Plugin
2627
import org.gradle.api.Project
2728
import org.gradle.api.Task
29+
import org.gradle.api.attributes.Usage
2830
import org.gradle.api.file.ConfigurableFileCollection
2931
import org.gradle.api.tasks.compile.JavaCompile
3032
import org.gradle.api.tasks.testing.Test
3133
import org.gradle.kotlin.dsl.create
34+
import org.gradle.kotlin.dsl.named
3235
import org.gradle.kotlin.dsl.register
3336
import org.gradle.kotlin.dsl.withType
3437
import java.io.File
@@ -49,6 +52,7 @@ internal class KoverProjectGradlePlugin : Plugin<Project> {
4952
val jarConfig = configurations.create("agentJarSource") {
5053
asConsumer()
5154
attributes {
55+
attribute(Usage.USAGE_ATTRIBUTE, objects.named(KoverUsageAttr.VALUE))
5256
attribute(KoverContentAttr.ATTRIBUTE, KoverContentAttr.AGENT_JAR)
5357
}
5458
extendsFrom(koverJarDependency)
@@ -138,6 +142,7 @@ internal class KoverProjectGradlePlugin : Plugin<Project> {
138142
configurations.register("KoverArtifactProducer") {
139143
asProducer()
140144
attributes {
145+
attribute(Usage.USAGE_ATTRIBUTE, objects.named(KoverUsageAttr.VALUE))
141146
attribute(KoverContentAttr.ATTRIBUTE, KoverContentAttr.LOCAL_ARTIFACT)
142147
}
143148

@@ -165,6 +170,7 @@ internal class KoverProjectGradlePlugin : Plugin<Project> {
165170
configurations.register("AgentJar") {
166171
asProducer()
167172
attributes {
173+
attribute(Usage.USAGE_ATTRIBUTE, objects.named(KoverUsageAttr.VALUE))
168174
attribute(KoverContentAttr.ATTRIBUTE, KoverContentAttr.AGENT_JAR)
169175
}
170176

kover-gradle-plugin/src/main/kotlin/kotlinx/kover/gradle/aggregation/settings/KoverSettingsGradlePlugin.kt

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
package kotlinx.kover.gradle.aggregation.settings
66

77
import kotlinx.kover.gradle.aggregation.commons.artifacts.KoverContentAttr
8+
import kotlinx.kover.gradle.aggregation.commons.artifacts.KoverUsageAttr
89
import kotlinx.kover.gradle.aggregation.commons.artifacts.asConsumer
910
import kotlinx.kover.gradle.aggregation.commons.artifacts.asDependency
1011
import kotlinx.kover.gradle.aggregation.commons.names.KoverPaths
@@ -16,11 +17,13 @@ import kotlinx.kover.gradle.aggregation.settings.tasks.KoverHtmlReportTask
1617
import kotlinx.kover.gradle.aggregation.settings.tasks.KoverXmlReportTask
1718
import org.gradle.api.Plugin
1819
import org.gradle.api.Project
20+
import org.gradle.api.attributes.Usage
1921
import org.gradle.api.initialization.ProjectDescriptor
2022
import org.gradle.api.initialization.Settings
2123
import org.gradle.api.model.ObjectFactory
2224
import org.gradle.kotlin.dsl.apply
2325
import org.gradle.kotlin.dsl.create
26+
import org.gradle.kotlin.dsl.named
2427
import org.gradle.kotlin.dsl.register
2528
import org.gradle.kotlin.dsl.support.serviceOf
2629

@@ -42,6 +45,9 @@ internal class KoverSettingsGradlePlugin: Plugin<Settings> {
4245

4346
val agentDependency = configurations.create(SettingsNames.DEPENDENCY_AGENT) {
4447
asDependency()
48+
attributes {
49+
attribute(Usage.USAGE_ATTRIBUTE, objects.named(KoverUsageAttr.VALUE))
50+
}
4551
}
4652
dependencies.add(agentDependency.name, rootProject)
4753

@@ -58,6 +64,9 @@ internal class KoverSettingsGradlePlugin: Plugin<Settings> {
5864

5965
val dependencyConfig = configurations.create(KOVER_DEPENDENCY_NAME) {
6066
asDependency()
67+
attributes {
68+
attribute(Usage.USAGE_ATTRIBUTE, objects.named(KoverUsageAttr.VALUE))
69+
}
6170
}
6271
val rootDependencies = dependencies
6372
settings.rootProject.walkSubprojects { descriptor ->
@@ -67,6 +76,7 @@ internal class KoverSettingsGradlePlugin: Plugin<Settings> {
6776
val artifacts = configurations.create("koverArtifactsCollector") {
6877
asConsumer()
6978
attributes {
79+
attribute(Usage.USAGE_ATTRIBUTE, objects.named(KoverUsageAttr.VALUE))
7080
attribute(KoverContentAttr.ATTRIBUTE, KoverContentAttr.LOCAL_ARTIFACT)
7181
}
7282
extendsFrom(dependencyConfig)

kover-gradle-plugin/src/main/kotlin/kotlinx/kover/gradle/plugin/appliers/PrepareKover.kt

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,12 +4,14 @@
44

55
package kotlinx.kover.gradle.plugin.appliers
66

7+
import kotlinx.kover.gradle.aggregation.commons.artifacts.KoverUsageAttr
78
import kotlinx.kover.gradle.plugin.appliers.tasks.VariantReportsSet
89
import kotlinx.kover.gradle.plugin.commons.*
910
import kotlinx.kover.gradle.plugin.dsl.internal.KoverProjectExtensionImpl
1011
import kotlinx.kover.gradle.plugin.tasks.services.KoverAgentJarTask
1112
import kotlinx.kover.gradle.plugin.tools.CoverageToolFactory
1213
import org.gradle.api.Project
14+
import org.gradle.api.attributes.Usage
1315
import org.gradle.kotlin.dsl.create
1416
import org.gradle.kotlin.dsl.named
1517
import org.gradle.kotlin.dsl.register
@@ -21,6 +23,9 @@ import org.gradle.kotlin.dsl.register
2123
internal fun prepare(project: Project): KoverContext {
2224
val koverBucketConfiguration = project.configurations.create(KOVER_DEPENDENCY_NAME) {
2325
asBucket()
26+
attributes {
27+
attribute(Usage.USAGE_ATTRIBUTE, project.objects.named(KoverUsageAttr.VALUE))
28+
}
2429
}
2530

2631
// Project always consumes its own artifacts
@@ -48,6 +53,7 @@ internal fun prepare(project: Project): KoverContext {
4853
attributes {
4954
// common Kover artifact attributes
5055
attribute(VariantNameAttr.ATTRIBUTE, project.objects.named("!kover##__empty__##"))
56+
attribute(Usage.USAGE_ATTRIBUTE, project.objects.named(KoverUsageAttr.VALUE))
5157
attribute(ProjectPathAttr.ATTRIBUTE, project.objects.named(project.path))
5258
}
5359
}

kover-gradle-plugin/src/main/kotlin/kotlinx/kover/gradle/plugin/appliers/artifacts/AbstractVariantArtifacts.kt

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44

55
package kotlinx.kover.gradle.plugin.appliers.artifacts
66

7+
import kotlinx.kover.gradle.aggregation.commons.artifacts.KoverUsageAttr
78
import kotlinx.kover.gradle.plugin.commons.*
89
import kotlinx.kover.gradle.plugin.dsl.internal.KoverVariantConfigImpl
910
import kotlinx.kover.gradle.plugin.appliers.origin.VariantOrigin
@@ -13,6 +14,7 @@ import kotlinx.kover.gradle.plugin.tools.CoverageTool
1314
import org.gradle.api.NamedDomainObjectProvider
1415
import org.gradle.api.Project
1516
import org.gradle.api.artifacts.Configuration
17+
import org.gradle.api.attributes.Usage
1618
import org.gradle.api.provider.Provider
1719
import org.gradle.api.tasks.TaskProvider
1820
import org.gradle.kotlin.dsl.named
@@ -49,6 +51,7 @@ internal sealed class AbstractVariantArtifacts(
4951
asProducer()
5052
attributes {
5153
// common Kover artifact attributes
54+
attribute(Usage.USAGE_ATTRIBUTE, project.objects.named(KoverUsageAttr.VALUE))
5255
attribute(VariantNameAttr.ATTRIBUTE, project.objects.named(variantName))
5356
attribute(ProjectPathAttr.ATTRIBUTE, project.objects.named(project.path))
5457
}
@@ -61,6 +64,9 @@ internal sealed class AbstractVariantArtifacts(
6164

6265
consumerConfiguration = project.configurations.register(externalArtifactConfigurationName(variantName)) {
6366
asConsumer()
67+
attributes {
68+
attribute(Usage.USAGE_ATTRIBUTE, project.objects.named(KoverUsageAttr.VALUE))
69+
}
6470
if (koverBucketConfiguration != null) {
6571
extendsFrom(koverBucketConfiguration)
6672
}

0 commit comments

Comments
 (0)