mirror of
https://github.com/VolmitSoftware/Iris.git
synced 2026-10-26 14:00:26 +00:00
Fixed startup lifecycle test
- The levels-ready startup test drives the parallel dimension restore instead of the removed per-dimension restore call
This commit is contained in:
1 parent
b8aa00b70e
commit
03c2630497
3 files changed
+14
-73
No files matched your search
@@ -1,28 +0,0 @@
|
|||||||
modLoader = "javafml"
|
|
||||||
loaderVersion = "[52,53)"
|
|
||||||
license = "GPL-3.0"
|
|
||||||
issueTrackerURL = "https://github.com/VolmitSoftware/Iris/issues"
|
|
||||||
|
|
||||||
[[mods]]
|
|
||||||
modId = "irisworldgen"
|
|
||||||
version = "${version}"
|
|
||||||
displayName = "Iris"
|
|
||||||
description = "Iris World Generation Engine (Forge adapter - native chunk generator, explicit Iris world datapack workflow, engine lifecycle)"
|
|
||||||
authors = "Arcane Arts (Volmit Software)"
|
|
||||||
credits = "cyberpwn, NextdoorPsycho, Vatuu"
|
|
||||||
displayURL = "https://docs.volmit.com/iris/"
|
|
||||||
logoFile = "assets/irisworldgen/icon.png"
|
|
||||||
|
|
||||||
[[dependencies.irisworldgen]]
|
|
||||||
modId = "forge"
|
|
||||||
mandatory = true
|
|
||||||
versionRange = "[52,53)"
|
|
||||||
ordering = "NONE"
|
|
||||||
side = "BOTH"
|
|
||||||
|
|
||||||
[[dependencies.irisworldgen]]
|
|
||||||
modId = "minecraft"
|
|
||||||
mandatory = true
|
|
||||||
versionRange = "[${minecraftVersion}]"
|
|
||||||
ordering = "NONE"
|
|
||||||
side = "BOTH"
|
|
||||||
+14
-8
@@ -9,10 +9,13 @@ import java.util.List;
|
|||||||
import java.util.concurrent.atomic.AtomicBoolean;
|
import java.util.concurrent.atomic.AtomicBoolean;
|
||||||
|
|
||||||
import static org.junit.Assert.assertTrue;
|
import static org.junit.Assert.assertTrue;
|
||||||
|
import static org.mockito.ArgumentMatchers.any;
|
||||||
|
import static org.mockito.ArgumentMatchers.eq;
|
||||||
import static org.mockito.Mockito.CALLS_REAL_METHODS;
|
import static org.mockito.Mockito.CALLS_REAL_METHODS;
|
||||||
import static org.mockito.Mockito.mock;
|
import static org.mockito.Mockito.mock;
|
||||||
import static org.mockito.Mockito.mockStatic;
|
import static org.mockito.Mockito.mockStatic;
|
||||||
import static org.mockito.Mockito.times;
|
import static org.mockito.Mockito.times;
|
||||||
|
import static org.mockito.Mockito.verify;
|
||||||
import static org.mockito.Mockito.when;
|
import static org.mockito.Mockito.when;
|
||||||
|
|
||||||
public class ModdedStartupLifecycleTest {
|
public class ModdedStartupLifecycleTest {
|
||||||
@@ -22,6 +25,7 @@ public class ModdedStartupLifecycleTest {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
|
@SuppressWarnings("unchecked")
|
||||||
public void restoresAfterWorldsLoadWithoutRepeatingDuringServerTicks() {
|
public void restoresAfterWorldsLoadWithoutRepeatingDuringServerTicks() {
|
||||||
NativeModdedServer server = mock(NativeModdedServer.class);
|
NativeModdedServer server = mock(NativeModdedServer.class);
|
||||||
AtomicBoolean worldsRefreshed = new AtomicBoolean();
|
AtomicBoolean worldsRefreshed = new AtomicBoolean();
|
||||||
@@ -32,28 +36,30 @@ public class ModdedStartupLifecycleTest {
|
|||||||
when(server.hasPlayerList()).thenReturn(true);
|
when(server.hasPlayerList()).thenReturn(true);
|
||||||
ModdedDimensionRegistryStore.PersistentDimension dimension =
|
ModdedDimensionRegistryStore.PersistentDimension dimension =
|
||||||
new ModdedDimensionRegistryStore.PersistentDimension("iris:moon", "overworld", "overworld", 1337L);
|
new ModdedDimensionRegistryStore.PersistentDimension("iris:moon", "overworld", "overworld", 1337L);
|
||||||
|
ModdedDimensionInjection<Object, Object, Object> restore = mock(ModdedDimensionInjection.class);
|
||||||
|
when(restore.finish()).thenAnswer(invocation -> {
|
||||||
|
assertTrue(worldsRefreshed.get());
|
||||||
|
return List.of();
|
||||||
|
});
|
||||||
|
|
||||||
try (MockedStatic<ModdedStartup> startup = mockStatic(ModdedStartup.class, CALLS_REAL_METHODS);
|
try (MockedStatic<ModdedStartup> startup = mockStatic(ModdedStartup.class, CALLS_REAL_METHODS);
|
||||||
MockedStatic<ModdedDimensionRegistryStore> store = mockStatic(ModdedDimensionRegistryStore.class);
|
MockedStatic<ModdedDimensionRegistryStore> store = mockStatic(ModdedDimensionRegistryStore.class);
|
||||||
MockedStatic<ModdedDimensionManager> manager = mockStatic(ModdedDimensionManager.class);
|
MockedStatic<ModdedDimensionInjection> injection = mockStatic(ModdedDimensionInjection.class);
|
||||||
MockedStatic<ModdedForcedDatapack> datapack = mockStatic(ModdedForcedDatapack.class);
|
MockedStatic<ModdedForcedDatapack> datapack = mockStatic(ModdedForcedDatapack.class);
|
||||||
MockedStatic<ModdedMixinAudit> audit = mockStatic(ModdedMixinAudit.class);
|
MockedStatic<ModdedMixinAudit> audit = mockStatic(ModdedMixinAudit.class);
|
||||||
MockedStatic<ModdedIrisLog> log = mockStatic(ModdedIrisLog.class)) {
|
MockedStatic<ModdedIrisLog> log = mockStatic(ModdedIrisLog.class)) {
|
||||||
startup.when(ModdedStartup::prepareForStartup).thenAnswer(invocation -> null);
|
startup.when(ModdedStartup::prepareForStartup).thenAnswer(invocation -> null);
|
||||||
store.when(() -> ModdedDimensionRegistryStore.loadForStartup(server)).thenReturn(List.of(dimension));
|
store.when(() -> ModdedDimensionRegistryStore.loadForStartup(server)).thenReturn(List.of(dimension));
|
||||||
manager.when(() -> ModdedDimensionManager.restorePersistent(server, "iris:moon", "overworld", "overworld", 1337L))
|
injection.when(() -> ModdedDimensionInjection.start(eq(List.of(dimension)), any())).thenReturn(restore);
|
||||||
.thenAnswer(invocation -> {
|
|
||||||
assertTrue(worldsRefreshed.get());
|
|
||||||
return null;
|
|
||||||
});
|
|
||||||
|
|
||||||
ModdedLifecycleCallbacks.create().levelsReady().accept(server);
|
ModdedLifecycleCallbacks.create().levelsReady().accept(server);
|
||||||
|
|
||||||
manager.verify(() -> ModdedDimensionManager.restorePersistent(server, "iris:moon", "overworld", "overworld", 1337L));
|
verify(restore).finish();
|
||||||
ModdedStartup.runOnce(server);
|
ModdedStartup.runOnce(server);
|
||||||
ModdedStartup.runOnce(server);
|
ModdedStartup.runOnce(server);
|
||||||
store.verify(() -> ModdedDimensionRegistryStore.loadForStartup(server), times(1));
|
store.verify(() -> ModdedDimensionRegistryStore.loadForStartup(server), times(1));
|
||||||
manager.verify(() -> ModdedDimensionManager.restorePersistent(server, "iris:moon", "overworld", "overworld", 1337L), times(1));
|
injection.verify(() -> ModdedDimensionInjection.start(any(), any()), times(1));
|
||||||
|
verify(restore, times(1)).finish();
|
||||||
datapack.verify(ModdedForcedDatapack::verifyInjected, times(1));
|
datapack.verify(ModdedForcedDatapack::verifyInjected, times(1));
|
||||||
audit.verify(ModdedMixinAudit::runOnce, times(1));
|
audit.verify(ModdedMixinAudit::runOnce, times(1));
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,37 +0,0 @@
|
|||||||
modLoader = "javafml"
|
|
||||||
loaderVersion = "[3,)"
|
|
||||||
license = "GPL-3.0"
|
|
||||||
issueTrackerURL = "https://github.com/VolmitSoftware/Iris/issues"
|
|
||||||
|
|
||||||
[[mixins]]
|
|
||||||
config = "volmlib.entity.mixins.json"
|
|
||||||
|
|
||||||
[[mixins]]
|
|
||||||
config = "volmlib.client.mixins.json"
|
|
||||||
|
|
||||||
[[accessTransformers]]
|
|
||||||
file = "META-INF/accesstransformer.cfg"
|
|
||||||
|
|
||||||
[[mods]]
|
|
||||||
modId = "irisworldgen"
|
|
||||||
version = "${version}"
|
|
||||||
displayName = "Iris"
|
|
||||||
description = "Iris World Generation Engine (NeoForge adapter - native chunk generator, explicit Iris world datapack workflow, engine lifecycle)"
|
|
||||||
authors = "Arcane Arts (Volmit Software)"
|
|
||||||
credits = "cyberpwn, NextdoorPsycho, Vatuu"
|
|
||||||
displayURL = "https://docs.volmit.com/iris/"
|
|
||||||
logoFile = "assets/irisworldgen/icon.png"
|
|
||||||
|
|
||||||
[[dependencies.irisworldgen]]
|
|
||||||
modId = "neoforge"
|
|
||||||
type = "required"
|
|
||||||
versionRange = "[21.1,21.2)"
|
|
||||||
ordering = "NONE"
|
|
||||||
side = "BOTH"
|
|
||||||
|
|
||||||
[[dependencies.irisworldgen]]
|
|
||||||
modId = "minecraft"
|
|
||||||
type = "required"
|
|
||||||
versionRange = "[${minecraftVersion}]"
|
|
||||||
ordering = "NONE"
|
|
||||||
side = "BOTH"
|
|
||||||
Reference in new issue
Block a user