diff --git a/buildSrc/src/test/java/BukkitArtifactVerifierTest.java b/buildSrc/src/test/java/BukkitArtifactVerifierTest.java index 21366f603..bb25a5e39 100644 --- a/buildSrc/src/test/java/BukkitArtifactVerifierTest.java +++ b/buildSrc/src/test/java/BukkitArtifactVerifierTest.java @@ -20,8 +20,15 @@ import static org.junit.Assert.assertTrue; public class BukkitArtifactVerifierTest { private static final String PLUGIN_DESCRIPTOR = "plugin.yml"; + private static final String SLIMJAR_DEPENDENCIES = "slimjar.dat"; + private static final String SLIMJAR_RESOLUTIONS = "slimjar-resolutions.dat"; private static final String NMS_BINDING = "art/arcane/iris/core/nms/v26_2_R1/NMSBinding"; - private static final List REQUIRED_ENTRIES = List.of(PLUGIN_DESCRIPTOR, NMS_BINDING + ".class"); + private static final List REQUIRED_ENTRIES = List.of( + PLUGIN_DESCRIPTOR, + SLIMJAR_DEPENDENCIES, + SLIMJAR_RESOLUTIONS, + NMS_BINDING + ".class" + ); private static final int LOCALES = 2; private static final int CAFFEINE_FACTORIES = 2; private static final int MATTER_SLICES = 1; @@ -48,6 +55,30 @@ public class BukkitArtifactVerifierTest { assertTrue(failure.getMessage().contains(PLUGIN_DESCRIPTOR)); } + @Test + public void rejectsMissingSlimJarDependencyManifest() throws Exception { + Map entries = validEntries(); + entries.remove(SLIMJAR_DEPENDENCIES); + File artifact = createArtifact(entries); + + GradleException failure = assertThrows(GradleException.class, + () -> BukkitArtifactVerifier.verify(artifact, REQUIRED_ENTRIES, LOCALES, CAFFEINE_FACTORIES, + MATTER_SLICES)); + assertTrue(failure.getMessage().contains(SLIMJAR_DEPENDENCIES)); + } + + @Test + public void rejectsMissingSlimJarResolutionManifest() throws Exception { + Map entries = validEntries(); + entries.remove(SLIMJAR_RESOLUTIONS); + File artifact = createArtifact(entries); + + GradleException failure = assertThrows(GradleException.class, + () -> BukkitArtifactVerifier.verify(artifact, REQUIRED_ENTRIES, LOCALES, CAFFEINE_FACTORIES, + MATTER_SLICES)); + assertTrue(failure.getMessage().contains(SLIMJAR_RESOLUTIONS)); + } + @Test public void rejectsExcludedClassThatIsStillReferenced() throws Exception { Map entries = validEntries(); @@ -119,6 +150,8 @@ public class BukkitArtifactVerifierTest { private Map validEntries() { Map entries = new LinkedHashMap<>(); entries.put(PLUGIN_DESCRIPTOR, "name: Iris\n".getBytes(StandardCharsets.UTF_8)); + entries.put(SLIMJAR_DEPENDENCIES, new byte[]{1}); + entries.put(SLIMJAR_RESOLUTIONS, new byte[]{1}); entries.put("languages/de_DE.json", "{}".getBytes(StandardCharsets.UTF_8)); entries.put("languages/fr_FR.json", "{}".getBytes(StandardCharsets.UTF_8)); entries.put(NMS_BINDING + ".class", diff --git a/core/build.gradle b/core/build.gradle index 9f2a2eb09..5eb79db79 100644 --- a/core/build.gradle +++ b/core/build.gradle @@ -236,8 +236,10 @@ tasks.named('test', Test).configure { configurations.matching { it.name.startsWith('slim') }.all { } -def runningTestTasks = gradle.startParameter.taskNames.any { String taskName -> taskName.toLowerCase().contains('test') } -if (runningTestTasks) { +List requestedTasks = gradle.startParameter.taskNames +boolean runningOnlyTestTasks = !requestedTasks.isEmpty() + && requestedTasks.every { String taskName -> taskName.toLowerCase().contains('test') } +if (runningOnlyTestTasks) { TaskProvider processResourcesTask = tasks.named('processResources') tasks.named('classes').configure { Task classesTask -> Set dependencies = new LinkedHashSet(classesTask.getDependsOn())