From 188bbe57d6f0ebe2f9ead02f2f5f60a70bc5e559 Mon Sep 17 00:00:00 2001 From: modmuss50 Date: Tue, 1 Jun 2021 18:13:25 +0100 Subject: [PATCH 1/3] Fix MergedNestedJarProvider not calling the child's prepare --- .../nesting/MergedNestedJarProvider.java | 11 +++- .../build/nesting/NestedJarPathProvider.java | 2 + .../unit/MergedNestedJarProviderTest.groovy | 55 +++++++++++++++++++ 3 files changed, 66 insertions(+), 2 deletions(-) create mode 100644 src/test/groovy/net/fabricmc/loom/test/unit/MergedNestedJarProviderTest.groovy diff --git a/src/main/java/net/fabricmc/loom/build/nesting/MergedNestedJarProvider.java b/src/main/java/net/fabricmc/loom/build/nesting/MergedNestedJarProvider.java index 1b93b44f..61b05eb6 100644 --- a/src/main/java/net/fabricmc/loom/build/nesting/MergedNestedJarProvider.java +++ b/src/main/java/net/fabricmc/loom/build/nesting/MergedNestedJarProvider.java @@ -29,12 +29,19 @@ import java.util.Arrays; import java.util.Collection; import java.util.stream.Collectors; -public record MergedNestedJarProvider(NestedJarProvider... parents) implements NestedJarProvider { +import org.gradle.api.Project; + +public record MergedNestedJarProvider(NestedJarProvider... children) implements NestedJarProvider { @Override public Collection provide() { - return Arrays.stream(parents) + return Arrays.stream(children) .map(NestedJarProvider::provide) .flatMap(Collection::stream) .collect(Collectors.toList()); } + + @Override + public void prepare(Project project) { + Arrays.stream(children).forEach(nestedJarProvider -> nestedJarProvider.prepare(project)); + } } diff --git a/src/main/java/net/fabricmc/loom/build/nesting/NestedJarPathProvider.java b/src/main/java/net/fabricmc/loom/build/nesting/NestedJarPathProvider.java index badb2656..184617ff 100644 --- a/src/main/java/net/fabricmc/loom/build/nesting/NestedJarPathProvider.java +++ b/src/main/java/net/fabricmc/loom/build/nesting/NestedJarPathProvider.java @@ -58,6 +58,8 @@ public final class NestedJarPathProvider implements NestedJarProvider { } private void validateFiles() { + Preconditions.checkNotNull(files, "null files to nest, was prepare called?"); + for (File file : files) { Preconditions.checkArgument(file.getName().endsWith(".jar"), String.format("Tried to nest %s but it is not a jar", file.getAbsolutePath())); Preconditions.checkArgument(file.exists(), String.format("Tried to nest jar %s but it does not exist", file.getAbsolutePath())); diff --git a/src/test/groovy/net/fabricmc/loom/test/unit/MergedNestedJarProviderTest.groovy b/src/test/groovy/net/fabricmc/loom/test/unit/MergedNestedJarProviderTest.groovy new file mode 100644 index 00000000..a31d9ccd --- /dev/null +++ b/src/test/groovy/net/fabricmc/loom/test/unit/MergedNestedJarProviderTest.groovy @@ -0,0 +1,55 @@ +/* + * This file is part of fabric-loom, licensed under the MIT License (MIT). + * + * Copyright (c) 2016, 2017, 2018 FabricMC + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ + +package net.fabricmc.loom.test.unit + +import net.fabricmc.loom.build.nesting.MergedNestedJarProvider +import net.fabricmc.loom.build.nesting.NestedJarProvider +import org.gradle.api.Project +import spock.lang.Specification + +class MergedNestedJarProviderTest extends Specification { + def "empty test"() { + given: + def nestedJarProvider = new MergedNestedJarProvider(new TestNestedJarProvider()) + when: + nestedJarProvider.prepare(null) + then: + nestedJarProvider.provide() != null + } + + private class TestNestedJarProvider implements NestedJarProvider { + private Collection files = null + + @Override + Collection provide() { + return files + } + + @Override + void prepare(Project project) { + files = [] + } + } +} From 50d6fd298d7ac450dea1b8475c43e73255e674b5 Mon Sep 17 00:00:00 2001 From: modmuss50 Date: Wed, 2 Jun 2021 09:06:26 +0100 Subject: [PATCH 2/3] Update mercury (#408) --- build.gradle | 2 +- .../net/fabricmc/loom/test/util/ProjectTestTrait.groovy | 2 +- src/test/resources/projects/java16/build.gradle | 1 + src/test/resources/projects/java16/gradle.properties | 7 ++++--- 4 files changed, 7 insertions(+), 5 deletions(-) diff --git a/build.gradle b/build.gradle index ff50ae2b..81a11c7c 100644 --- a/build.gradle +++ b/build.gradle @@ -85,7 +85,7 @@ dependencies { implementation ('org.benf:cfr:0.151') // source code remapping - implementation ('org.cadixdev:mercury:0.1.0-rc1') + implementation ('net.fabricmc:mercury:0.2.0') // Kapt integration compileOnly('org.jetbrains.kotlin:kotlin-gradle-plugin:1.5.0') diff --git a/src/test/groovy/net/fabricmc/loom/test/util/ProjectTestTrait.groovy b/src/test/groovy/net/fabricmc/loom/test/util/ProjectTestTrait.groovy index 2d0640a2..88cea9a9 100644 --- a/src/test/groovy/net/fabricmc/loom/test/util/ProjectTestTrait.groovy +++ b/src/test/groovy/net/fabricmc/loom/test/util/ProjectTestTrait.groovy @@ -29,7 +29,7 @@ import org.gradle.testkit.runner.GradleRunner trait ProjectTestTrait { final static String DEFAULT_GRADLE = "7.0.1" - final static String PRE_RELEASE_GRADLE = "7.2-20210527220045+0000" + final static String PRE_RELEASE_GRADLE = "7.2-20210531220051+0000" static File gradleHome = File.createTempDir() File testProjectDir = File.createTempDir() diff --git a/src/test/resources/projects/java16/build.gradle b/src/test/resources/projects/java16/build.gradle index b97f5240..dbf1f7e6 100644 --- a/src/test/resources/projects/java16/build.gradle +++ b/src/test/resources/projects/java16/build.gradle @@ -15,6 +15,7 @@ dependencies { minecraft "com.mojang:minecraft:${project.minecraft_version}" mappings "net.fabricmc:yarn:${project.yarn_mappings}:v2" modImplementation "net.fabricmc:fabric-loader:${project.loader_version}" + modImplementation "net.fabricmc.fabric-api:fabric-api:${project.fabric_version}" } tasks.withType(JavaCompile).configureEach { diff --git a/src/test/resources/projects/java16/gradle.properties b/src/test/resources/projects/java16/gradle.properties index 0d8b3c77..24ef9a92 100644 --- a/src/test/resources/projects/java16/gradle.properties +++ b/src/test/resources/projects/java16/gradle.properties @@ -1,8 +1,9 @@ org.gradle.jvmargs=-Xmx1G -minecraft_version=21w19a -yarn_mappings=21w19a+build.1 -loader_version=0.11.2 +minecraft_version=1.17-pre3 +yarn_mappings=1.17-pre3+build.1 +loader_version=0.11.3 +fabric_version=0.34.8+1.17 mod_version = 1.0.0 maven_group = com.example From 4763760984c3ed604151f1c2f59b14487ebfd884 Mon Sep 17 00:00:00 2001 From: modmuss50 Date: Wed, 2 Jun 2021 23:05:51 +0100 Subject: [PATCH 3/3] Revert "Update mercury (#408)" This reverts commit 50d6fd298d7ac450dea1b8475c43e73255e674b5. --- build.gradle | 2 +- .../net/fabricmc/loom/test/util/ProjectTestTrait.groovy | 2 +- src/test/resources/projects/java16/build.gradle | 1 - src/test/resources/projects/java16/gradle.properties | 7 +++---- 4 files changed, 5 insertions(+), 7 deletions(-) diff --git a/build.gradle b/build.gradle index 81a11c7c..ff50ae2b 100644 --- a/build.gradle +++ b/build.gradle @@ -85,7 +85,7 @@ dependencies { implementation ('org.benf:cfr:0.151') // source code remapping - implementation ('net.fabricmc:mercury:0.2.0') + implementation ('org.cadixdev:mercury:0.1.0-rc1') // Kapt integration compileOnly('org.jetbrains.kotlin:kotlin-gradle-plugin:1.5.0') diff --git a/src/test/groovy/net/fabricmc/loom/test/util/ProjectTestTrait.groovy b/src/test/groovy/net/fabricmc/loom/test/util/ProjectTestTrait.groovy index 88cea9a9..2d0640a2 100644 --- a/src/test/groovy/net/fabricmc/loom/test/util/ProjectTestTrait.groovy +++ b/src/test/groovy/net/fabricmc/loom/test/util/ProjectTestTrait.groovy @@ -29,7 +29,7 @@ import org.gradle.testkit.runner.GradleRunner trait ProjectTestTrait { final static String DEFAULT_GRADLE = "7.0.1" - final static String PRE_RELEASE_GRADLE = "7.2-20210531220051+0000" + final static String PRE_RELEASE_GRADLE = "7.2-20210527220045+0000" static File gradleHome = File.createTempDir() File testProjectDir = File.createTempDir() diff --git a/src/test/resources/projects/java16/build.gradle b/src/test/resources/projects/java16/build.gradle index dbf1f7e6..b97f5240 100644 --- a/src/test/resources/projects/java16/build.gradle +++ b/src/test/resources/projects/java16/build.gradle @@ -15,7 +15,6 @@ dependencies { minecraft "com.mojang:minecraft:${project.minecraft_version}" mappings "net.fabricmc:yarn:${project.yarn_mappings}:v2" modImplementation "net.fabricmc:fabric-loader:${project.loader_version}" - modImplementation "net.fabricmc.fabric-api:fabric-api:${project.fabric_version}" } tasks.withType(JavaCompile).configureEach { diff --git a/src/test/resources/projects/java16/gradle.properties b/src/test/resources/projects/java16/gradle.properties index 24ef9a92..0d8b3c77 100644 --- a/src/test/resources/projects/java16/gradle.properties +++ b/src/test/resources/projects/java16/gradle.properties @@ -1,9 +1,8 @@ org.gradle.jvmargs=-Xmx1G -minecraft_version=1.17-pre3 -yarn_mappings=1.17-pre3+build.1 -loader_version=0.11.3 -fabric_version=0.34.8+1.17 +minecraft_version=21w19a +yarn_mappings=21w19a+build.1 +loader_version=0.11.2 mod_version = 1.0.0 maven_group = com.example