ci(plugins): run the plugin self-tests and build the shipped plugin jars

The three framework-free test mains under plugins/*/test were never run by
anything — not CI, not the plugin builds — and the velocity/paper/limbo jars
were only ever compiled by deploy/bootstrap.sh on a live host. CI gains a
'plugins' job (JDK 21 plus the Gradle 8.14 the plugin Dockerfiles pin) running
plugins/test.sh: the three mains (InviteCardTest's jars fetched from Maven
Central, pinned and digest-checked) and the three production builds.

The first real run surfaced and fixed two untested assumptions: InviteCardTest's
documented javac line omitted examination-api (adventure-api's Component
signatures reference Examinable, so javac needs it too), and limbo's '+' version
default cannot resolve — LOOHP's repository serves no maven-metadata — so the
script resolves the current release off the Limbo CI artifact name (the same
source bootstrap reads) and plugins/README.md stops advertising a bare
'gradle -p plugins/limbo build' that can never work.

Verified in gradle:8.14-jdk21 on the VM: mains OK (32/36/48 checks);
velocity/paper/limbo BUILD SUCCESSFUL.
This commit is contained in:
Lemon-miaow committed 2026-09-24 00:19:56 +08:00
1 parent f5a76cf88a
commit c59b38775b
4 files changed
+131 -6

No files matched your search

@@ -15,13 +15,15 @@ import java.util.List;
* — a proxy console cannot render either, and a screenshot is not a check.
*
* <p>Hermetic and framework-free like {@link InviteBookTest}: it lives outside
* {@code src/main/java} so it never ships in the plugin jar, needs only adventure-api on
* the classpath, and a failed assertion throws so the process exits non-zero.
* {@code src/main/java} so it never ships in the plugin jar, needs only the Kyori jars
* on the classpath, and a failed assertion throws so the process exits non-zero.
*
* <p>Run: {@code javac -cp <adventure-api.jar> -d <out>
* <p>Run (all three jars on both classpaths — adventure-api's Component signatures
* reference Examinable, so javac needs examination-api too, not just the runtime):
* {@code javac -cp <adventure-api.jar>:<adventure-key.jar>:<examination-api.jar> -d <out>
* velocity/src/main/java/best/lolicon/felis/velocity/InviteCard.java
* velocity/test/best/lolicon/felis/velocity/InviteCardTest.java && java -cp
* <out>;<adventure-api.jar>;<adventure-key.jar>;<examination-api.jar>
* <out>:<adventure-api.jar>:<adventure-key.jar>:<examination-api.jar>
* best.lolicon.felis.velocity.InviteCardTest}.
*/
public final class InviteCardTest {