diff --git a/package/package/src/test/java/net/runelite/pluginhub/packager/PluginTest.java b/package/package/src/test/java/net/runelite/pluginhub/packager/PluginTest.java index 3aa33c51ff22..be0d6236ad40 100644 --- a/package/package/src/test/java/net/runelite/pluginhub/packager/PluginTest.java +++ b/package/package/src/test/java/net/runelite/pluginhub/packager/PluginTest.java @@ -29,6 +29,8 @@ import java.io.FileOutputStream; import java.io.IOException; import java.nio.charset.StandardCharsets; +import java.util.Arrays; +import java.util.Comparator; import java.util.Properties; import lombok.extern.slf4j.Slf4j; import net.runelite.pluginhub.uploader.Util; @@ -70,6 +72,27 @@ public void testCommitMustBeComplete() throws DisabledPluginException, IOExcepti } } + @Test + public void testAllPluginDescriptorsParse() throws IOException, PluginBuildException + { + File[] descriptors = new File("plugins").listFiles(File::isFile); + Assert.assertNotNull(descriptors); + Assert.assertTrue(descriptors.length > 0); + Arrays.sort(descriptors, Comparator.comparing(File::getName)); + + for (File descriptor : descriptors) + { + try (Plugin ignored = new Plugin(descriptor)) + { + // Constructor validation is enough; building each plugin is covered by the packager flow. + } + catch (DisabledPluginException ignored) + { + // Disabled and unavailable descriptors are intentionally short-circuited by the packager. + } + } + } + @Test public void testExamplePluginCompiles() throws DisabledPluginException, PluginBuildException, IOException, InterruptedException { diff --git a/plugins/grand-flip-out b/plugins/grand-flip-out new file mode 100644 index 000000000000..d68fcc708b2a --- /dev/null +++ b/plugins/grand-flip-out @@ -0,0 +1,3 @@ +repository=https://github.com/Tunatroll/grand-flip-out.git +commit=1d2649de4cb8cdac32a771b6e6fcb9396e32fdc1 +warning=This plugin submits your IP address to a 3rd-party server not controlled or verified by RuneLite developers.