9
0
mirror of https://github.com/Winds-Studio/Leaf.git synced 2025-12-23 17:09:29 +00:00
Files
Leaf/leaf-server/paper-patches/features/0008-Leaf-JUnit-test-suite.patch
2025-07-12 16:03:27 +08:00

112 lines
4.0 KiB
Diff

From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: Dreeam <61569423+Dreeam-qwq@users.noreply.github.com>
Date: Sat, 12 Jul 2025 15:33:40 +0800
Subject: [PATCH] Leaf JUnit test suite
diff --git a/src/test/java/org/bukkit/support/environment/LeafTest.java b/src/test/java/org/bukkit/support/environment/LeafTest.java
new file mode 100644
index 0000000000000000000000000000000000000000..d8741167ee7003265540bb3010eb7b9587a181ce
--- /dev/null
+++ b/src/test/java/org/bukkit/support/environment/LeafTest.java
@@ -0,0 +1,22 @@
+package org.bukkit.support.environment;
+
+import org.junit.jupiter.api.Tag;
+import org.junit.jupiter.api.extension.ExtendWith;
+import org.bukkit.support.extension.LeafExtension;
+import org.bukkit.support.extension.VanillaFeatureExtension;
+
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+/**
+ * Indicates that a class or method should be tested when tested Leaf JUnit tests.
+ * All Minecraft feature flags set will be used.
+ */
+@Target({ElementType.TYPE, ElementType.METHOD})
+@Retention(RetentionPolicy.RUNTIME)
+@Tag("LeafTest")
+@ExtendWith({LeafExtension.class})
+public @interface LeafTest {
+}
diff --git a/src/test/java/org/bukkit/support/extension/LeafExtension.java b/src/test/java/org/bukkit/support/extension/LeafExtension.java
new file mode 100644
index 0000000000000000000000000000000000000000..1b66f5fdb4af3cf1d1f01dc219577ab6b6f52f4e
--- /dev/null
+++ b/src/test/java/org/bukkit/support/extension/LeafExtension.java
@@ -0,0 +1,50 @@
+package org.bukkit.support.extension;
+
+import java.util.HashMap;
+import java.util.Map;
+import net.minecraft.world.flag.FeatureFlags;
+import org.bukkit.Bukkit;
+import org.bukkit.Keyed;
+import org.bukkit.Registry;
+import org.bukkit.Server;
+import org.bukkit.craftbukkit.CraftRegistry;
+import org.bukkit.support.DummyServerHelper;
+import org.bukkit.support.RegistryHelper;
+import org.junit.jupiter.api.extension.ExtensionContext;
+
+/**
+ * Identical with {@link org.bukkit.support.extension.AllFeaturesExtension}
+ */
+public class LeafExtension extends BaseExtension {
+
+ private static final Map<Class<? extends Keyed>, Registry<?>> realRegistries = new HashMap<>();
+
+ public LeafExtension() {
+ super("LeafTest");
+ }
+
+ public static <T extends Keyed> Registry<T> getRealRegistry(Class<T> clazz) {
+ return (Registry<T>) LeafExtension.realRegistries.get(clazz);
+ }
+
+ public static Map<Class<? extends Keyed>, Registry<?>> getRealRegistries() {
+ return LeafExtension.realRegistries;
+ }
+
+ @Override
+ public void init(ExtensionContext extensionContext) {
+ RegistryHelper.setup(FeatureFlags.REGISTRY.allFlags());
+
+ Server server = DummyServerHelper.setup();
+
+ Bukkit.setServer(server);
+
+ // Paper - Add RegistryAccess for managing registries - replaced with registry access
+
+ CraftRegistry.setMinecraftRegistry(RegistryHelper.getRegistry());
+ }
+
+ @Override
+ void runBeforeEach(ExtensionContext extensionContext) {
+ }
+}
diff --git a/src/test/java/org/bukkit/support/suite/LeafTestSuite.java b/src/test/java/org/bukkit/support/suite/LeafTestSuite.java
new file mode 100644
index 0000000000000000000000000000000000000000..28417468c8d5faeef37eeeb940f0cf9a90b7d9e8
--- /dev/null
+++ b/src/test/java/org/bukkit/support/suite/LeafTestSuite.java
@@ -0,0 +1,15 @@
+package org.bukkit.support.suite;
+
+import org.junit.platform.suite.api.ConfigurationParameter;
+import org.junit.platform.suite.api.IncludeTags;
+import org.junit.platform.suite.api.SelectPackages;
+import org.junit.platform.suite.api.Suite;
+import org.junit.platform.suite.api.SuiteDisplayName;
+
+@Suite(failIfNoTests = false)
+@SuiteDisplayName("Test suite for tests used by Leaf")
+@SelectPackages({"net.minecraft"})
+@IncludeTags("LeafTest")
+@ConfigurationParameter(key = "TestSuite", value = "LeafTest")
+public class LeafTestSuite {
+}