Skip to content

Commit

Permalink
Check more attributes in GMM (GradleUp#1158)
Browse files Browse the repository at this point in the history
  • Loading branch information
Goooler authored Jan 14, 2025
1 parent 3e6f192 commit 19b7439
Showing 1 changed file with 35 additions and 18 deletions.
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
package com.github.jengelman.gradle.plugins.shadow

import assertk.all
import assertk.assertThat
import assertk.assertions.contains
import assertk.assertions.containsOnly
import assertk.assertions.isEmpty
import assertk.assertions.isEqualTo
Expand All @@ -25,6 +27,8 @@ import kotlin.io.path.writeText
import org.apache.maven.model.Model
import org.apache.maven.model.io.xpp3.MavenXpp3Reader
import org.gradle.api.attributes.Bundling
import org.gradle.api.attributes.Category
import org.gradle.api.attributes.LibraryElements
import org.gradle.api.attributes.Usage
import org.gradle.api.plugins.JavaPlugin.API_ELEMENTS_CONFIGURATION_NAME
import org.gradle.api.plugins.JavaPlugin.RUNTIME_ELEMENTS_CONFIGURATION_NAME
Expand Down Expand Up @@ -220,31 +224,39 @@ class PublishingTest : BasePluginTest() {
assertThat(dependency.version).isEqualTo("1.0")
}
}

gmmAdapter.fromJson(repoPath("com/acme/maven/1.0/maven-1.0.module")).let { gmm ->
// apiElements, runtimeElements, shadowRuntimeElements
assertThat(gmm.variants.map { it.name }).containsOnly(
API_ELEMENTS_CONFIGURATION_NAME,
RUNTIME_ELEMENTS_CONFIGURATION_NAME,
SHADOW_RUNTIME_ELEMENTS_CONFIGURATION_NAME,
)

val apiVariant = gmm.variants.single { it.name == API_ELEMENTS_CONFIGURATION_NAME }
assertThat(apiVariant.attributes[Usage.USAGE_ATTRIBUTE.name]).isEqualTo(Usage.JAVA_API)
assertThat(apiVariant.attributes[Bundling.BUNDLING_ATTRIBUTE.name]).isEqualTo(Bundling.EXTERNAL)
assertThat(apiVariant.dependencies).isEmpty()

val runtimeVariant = gmm.variants.single { it.name == RUNTIME_ELEMENTS_CONFIGURATION_NAME }
assertThat(runtimeVariant.attributes[Usage.USAGE_ATTRIBUTE.name]).isEqualTo(Usage.JAVA_RUNTIME)
assertThat(runtimeVariant.attributes[Bundling.BUNDLING_ATTRIBUTE.name]).isEqualTo(Bundling.EXTERNAL)
assertThat(runtimeVariant.dependencies.map { it.module }).containsOnly("a", "b")

assertThat(gmm.variants.single { it.name == API_ELEMENTS_CONFIGURATION_NAME }).all {
transform { it.attributes }.all {
contains(Category.CATEGORY_ATTRIBUTE.name, Category.LIBRARY)
contains(Bundling.BUNDLING_ATTRIBUTE.name, Bundling.EXTERNAL)
contains(LibraryElements.LIBRARY_ELEMENTS_ATTRIBUTE.name, LibraryElements.JAR)
contains(Usage.USAGE_ATTRIBUTE.name, Usage.JAVA_API)
}
transform { it.dependencies }.isEmpty()
}
assertThat(gmm.variants.single { it.name == RUNTIME_ELEMENTS_CONFIGURATION_NAME }).all {
transform { it.attributes }.all {
contains(Category.CATEGORY_ATTRIBUTE.name, Category.LIBRARY)
contains(Bundling.BUNDLING_ATTRIBUTE.name, Bundling.EXTERNAL)
contains(LibraryElements.LIBRARY_ELEMENTS_ATTRIBUTE.name, LibraryElements.JAR)
contains(Usage.USAGE_ATTRIBUTE.name, Usage.JAVA_RUNTIME)
}
transform { it.dependencies.map { dep -> dep.module } }.containsOnly("a", "b")
}
assertShadowVariantCommon(gmm)
}
assertPomCommon(repoPath("com/acme/maven-all/1.0/maven-all-1.0.pom"))

assertPomCommon(repoPath("com/acme/maven-all/1.0/maven-all-1.0.pom"))
gmmAdapter.fromJson(repoPath("com/acme/maven-all/1.0/maven-all-1.0.module")).let { gmm ->
assertThat(gmm.variants).single().transform { it.name }.isEqualTo(SHADOW_RUNTIME_ELEMENTS_CONFIGURATION_NAME)
assertThat(gmm.variants.map { it.name }).containsOnly(
SHADOW_RUNTIME_ELEMENTS_CONFIGURATION_NAME,
)
assertShadowVariantCommon(gmm)
}
}
Expand Down Expand Up @@ -307,10 +319,15 @@ class PublishingTest : BasePluginTest() {
}

private fun assertShadowVariantCommon(gmm: GradleModuleMetadata) {
val variant = gmm.variants.single { it.name == SHADOW_RUNTIME_ELEMENTS_CONFIGURATION_NAME }
assertThat(variant.attributes[Usage.USAGE_ATTRIBUTE.name]).isEqualTo(Usage.JAVA_RUNTIME)
assertThat(variant.attributes[Bundling.BUNDLING_ATTRIBUTE.name]).isEqualTo(Bundling.SHADOWED)
assertThat(variant.dependencies).single().transform { it.module }.isEqualTo("b")
assertThat(gmm.variants.single { it.name == SHADOW_RUNTIME_ELEMENTS_CONFIGURATION_NAME }).all {
transform { it.attributes }.all {
contains(Category.CATEGORY_ATTRIBUTE.name, Category.LIBRARY)
contains(Bundling.BUNDLING_ATTRIBUTE.name, Bundling.SHADOWED)
contains(LibraryElements.LIBRARY_ELEMENTS_ATTRIBUTE.name, LibraryElements.JAR)
contains(Usage.USAGE_ATTRIBUTE.name, Usage.JAVA_RUNTIME)
}
transform { it.dependencies.map { dep -> dep.module } }.containsOnly("b")
}
}

private fun assertShadowJarCommon(jarPath: JarPath) {
Expand Down

0 comments on commit 19b7439

Please sign in to comment.