Skip to content

Commit

Permalink
Cleanup and add test
Browse files Browse the repository at this point in the history
  • Loading branch information
jpenilla committed Dec 18, 2023
1 parent d3131fb commit aed0c24
Show file tree
Hide file tree
Showing 6 changed files with 67 additions and 20 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -30,9 +30,7 @@
import org.gradle.api.Project;
import org.gradle.api.artifacts.Configuration;
import org.gradle.api.artifacts.ConfigurationContainer;
import org.gradle.api.artifacts.ModuleDependency;
import org.gradle.api.artifacts.dsl.DependencyHandler;
import org.gradle.api.attributes.Category;
import org.gradle.api.plugins.JavaPlugin;

import net.fabricmc.loom.LoomGradleExtension;
Expand Down Expand Up @@ -83,23 +81,8 @@ public void run() {
registerNonTransitive(Constants.Configurations.LOADER_DEPENDENCIES, Role.RESOLVABLE);

registerNonTransitive(Constants.Configurations.MINECRAFT, Role.NONE);
registerNonTransitive(Constants.Configurations.INCLUDE, Role.RESOLVABLE).configure(configuration -> {
configuration.withDependencies(dependencySet -> {
dependencySet.all(dependency -> {
if (!(dependency instanceof ModuleDependency module)) {
return;
}

final Category category = module.getAttributes().getAttribute(Category.CATEGORY_ATTRIBUTE);

if (category != null && (category.getName().equals(Category.REGULAR_PLATFORM) || category.getName().equals(Category.ENFORCED_PLATFORM))) {
return;
}

module.setTransitive(false);
});
});
});
// We don't need to make this non-transitive due to the way we resolve it. Also, doing so would break platform dependencies.
register(Constants.Configurations.INCLUDE, Role.RESOLVABLE);
registerNonTransitive(Constants.Configurations.MAPPING_CONSTANTS, Role.RESOLVABLE);

register(Constants.Configurations.NAMED_ELEMENTS, Role.CONSUMABLE).configure(configuration -> {
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
package net.fabricmc.loom.test.integration

import net.fabricmc.loom.test.util.GradleProjectTestTrait
import spock.lang.Specification
import spock.lang.Unroll

import static net.fabricmc.loom.test.LoomTestConstants.STANDARD_TEST_VERSIONS
import static org.gradle.testkit.runner.TaskOutcome.SUCCESS

class IncludedJarsTest extends Specification implements GradleProjectTestTrait {
@Unroll
def "included jars (gradle #version)"() {
setup:
def gradle = gradleProject(project: "includedJars", version: version)
when:
def result = gradle.run(tasks: ["remapJar"])
then:
result.task(":remapJar").outcome == SUCCESS
// Assert directly declared dependencies are present
gradle.hasOutputZipEntry("includedJars.jar", "META-INF/jars/log4j-core-2.22.0.jar")
gradle.hasOutputZipEntry("includedJars.jar", "META-INF/jars/adventure-text-serializer-gson-4.14.0.jar")
// But not transitives.
!gradle.hasOutputZipEntry("includedJars.jar", "META-INF/jars/log4j-api-2.22.0.jar")
!gradle.hasOutputZipEntry("includedJars.jar", "META-INF/jars/adventure-api-4.14.0.jar")
where:
version << STANDARD_TEST_VERSIONS
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,7 @@ class MultiProjectTest extends Specification implements GradleProjectTestTrait {

gradle.hasOutputZipEntry("multiproject-1.0.0.jar", "META-INF/jars/example-1.0.0.jar")
gradle.hasOutputZipEntry("multiproject-1.0.0.jar", "META-INF/jars/core-1.0.0.jar")
gradle.hasOutputZipEntry("multiproject-1.0.0.jar", "META-INF/jars/fabric-api-base-0.2.1+9354966b7d.jar")
gradle.hasOutputZipEntry("multiproject-1.0.0.jar", "META-INF/jars/fabric-api-base-0.3.0+f74f7c7d7d.jar")

where:
version << STANDARD_TEST_VERSIONS
Expand Down
21 changes: 21 additions & 0 deletions src/test/resources/projects/includedJars/build.gradle
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
plugins {
id 'fabric-loom'
}

repositories {
mavenCentral()
}

dependencies {
minecraft 'com.mojang:minecraft:1.18.2'
mappings 'net.fabricmc:yarn:1.18.2+build.1:v2'
modImplementation 'net.fabricmc:fabric-loader:0.13.3'

include 'org.apache.logging.log4j:log4j-core:2.22.0'

// Test bom/platform dependencies
include platform('net.kyori:adventure-bom:4.14.0')

// bom provides version
include 'net.kyori:adventure-text-serializer-gson'
}
1 change: 1 addition & 0 deletions src/test/resources/projects/includedJars/settings.gradle
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
rootProject.name = 'includedJars'
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
{
"schemaVersion": 1,
"id": "modid",
"version": "0.0.0",

"name": "Example Mod",
"description": "This is an example description! Tell everyone what your mod is about!",
"environment": "*"
}

0 comments on commit aed0c24

Please sign in to comment.