Lortseam hace 4 años
padre
commit
0a26b90bc2

+ 14 - 1
lib/build.gradle

@@ -34,7 +34,20 @@ remapJar {
 	input.set(shadowJar.archiveFile)
 }
 
-test {
+// Disable default test task
+test.enabled = false
+
+task testClient(type: Test) {
+	systemProperty "fabric.dli.env", "client"
+}
+check.dependsOn testClient
+
+task testServer(type: Test) {
+	systemProperty "fabric.dli.env", "server"
+}
+check.dependsOn testServer
+
+tasks.withType(Test) {
 	useJUnitPlatform()
 }
 

+ 23 - 7
lib/src/test/java/me/lortseam/completeconfig/extension/FabricLoaderExtension.java

@@ -1,6 +1,7 @@
 package me.lortseam.completeconfig.extension;
 
 import com.google.common.jimfs.Jimfs;
+import net.fabricmc.api.EnvType;
 import net.fabricmc.loader.api.FabricLoader;
 import org.junit.jupiter.api.extension.BeforeAllCallback;
 import org.junit.jupiter.api.extension.ExtensionContext;
@@ -9,17 +10,32 @@ import static org.mockito.Mockito.*;
 
 public class FabricLoaderExtension implements BeforeAllCallback {
 
-    private static boolean mocked = false;
+    private static boolean initialized = false;
 
     @Override
     public void beforeAll(ExtensionContext context) {
-        if (!mocked) {
-            FabricLoader loader = mock(FabricLoader.class);
-            when(loader.isModLoaded(any(String.class))).thenReturn(true);
-            when(loader.getConfigDir()).thenReturn(Jimfs.newFileSystem().getPath(""));
-            mockStatic(FabricLoader.class).when(FabricLoader::getInstance).thenReturn(loader);
-            mocked = true;
+        if (initialized) return;
+        init();
+        initialized = true;
+    }
+
+    private void init() {
+        FabricLoader loader = mock(FabricLoader.class);
+        switch (System.clearProperty("fabric.dli.env")) {
+            case "client":
+                when(loader.getEnvironmentType()).thenReturn(EnvType.CLIENT);
+                break;
+
+            case "server":
+                when(loader.getEnvironmentType()).thenReturn(EnvType.SERVER);
+                break;
+
+            default:
+                throw new IllegalArgumentException("Unknown environment property");
         }
+        when(loader.isModLoaded(any(String.class))).thenReturn(true);
+        when(loader.getConfigDir()).thenReturn(Jimfs.newFileSystem().getPath(""));
+        mockStatic(FabricLoader.class).when(FabricLoader::getInstance).thenReturn(loader);
     }
 
 }