Skip to content

Commit

Permalink
Error if only one of the two Parchment mapping versions is set
Browse files Browse the repository at this point in the history
  • Loading branch information
shartte committed Aug 13, 2024
1 parent 3a2ea70 commit b276a59
Show file tree
Hide file tree
Showing 2 changed files with 58 additions and 2 deletions.
12 changes: 10 additions & 2 deletions src/main/java/net/neoforged/moddevgradle/dsl/Parchment.java
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package net.neoforged.moddevgradle.dsl;

import net.neoforged.moddevgradle.internal.utils.PropertyUtils;
import org.gradle.api.GradleException;
import org.gradle.api.Project;
import org.gradle.api.provider.Property;
import org.gradle.api.tasks.Input;
Expand All @@ -18,8 +19,15 @@ public abstract class Parchment {
public Parchment(Project project) {
getParchmentArtifact().convention(
project.getProviders().gradleProperty("neoForge.parchment.parchmentArtifact").orElse(
getMinecraftVersion()
.zip(getMappingsVersion(), (minecraftVersion, mappingVersion) -> {
getMinecraftVersion().orElse("")
.zip(getMappingsVersion().orElse(""), (minecraftVersion, mappingVersion) -> {
if (!minecraftVersion.isEmpty() && mappingVersion.isEmpty()) {
throw new GradleException("If you set neoForge.parchment.minecraftVersion, you also must set mappingVersion");
} else if (minecraftVersion.isEmpty() && !mappingVersion.isEmpty()) {
throw new GradleException("If you set neoForge.parchment.mappingVersion, you also must set minecraftVersion");
} else if (minecraftVersion.isEmpty() && mappingVersion.isEmpty()) {
return null;
}
return "org.parchmentmc.data"
+ ":" + "parchment-" + minecraftVersion
+ ":" + mappingVersion
Expand Down
48 changes: 48 additions & 0 deletions src/test/java/net/neoforged/moddevgradle/dsl/ParchmentTest.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
package net.neoforged.moddevgradle.dsl;

import org.gradle.api.Project;
import org.gradle.testfixtures.ProjectBuilder;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;

import static org.assertj.core.api.Assertions.assertThatThrownBy;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertFalse;

class ParchmentTest {
Project project;
Parchment parchment;

@BeforeEach
void setUp() {
project = ProjectBuilder.builder().build();
parchment = project.getObjects().newInstance(Parchment.class, project);
}

@Test
void testNothingSetMeansNoArtifactAndNoError() {
assertFalse(parchment.getParchmentArtifact().isPresent());
assertFalse(parchment.getEnabled().get());
}

@Test
void testSettingOnlyMinecraftVersionCausesError() {
parchment.getMinecraftVersion().set("1.2.3");
assertThatThrownBy(() -> parchment.getParchmentArtifact().isPresent())
.hasRootCauseMessage("If you set neoForge.parchment.minecraftVersion, you also must set mappingVersion");
}

@Test
void testSettingOnlyMappingVersionCausesError() {
parchment.getMappingsVersion().set("1.2.3");
assertThatThrownBy(() -> parchment.getParchmentArtifact().isPresent())
.hasRootCauseMessage("If you set neoForge.parchment.mappingVersion, you also must set minecraftVersion");
}

@Test
void testSettingBothMinecraftVersionAndMappingVersionResultsInArtifact() {
parchment.getMappingsVersion().set("1.2.3");
parchment.getMinecraftVersion().set("2.3.4");
assertEquals("org.parchmentmc.data:parchment-2.3.4:1.2.3@zip", parchment.getParchmentArtifact().get());
}
}

0 comments on commit b276a59

Please sign in to comment.