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:
Brian Neumann-Fopiano committed 2026-10-16 10:44:12 -04:00
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"
@@ -9,10 +9,13 @@ import java.util.List;
import java.util.concurrent.atomic.AtomicBoolean;
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.mock;
import static org.mockito.Mockito.mockStatic;
import static org.mockito.Mockito.times;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
public class ModdedStartupLifecycleTest {
@@ -22,6 +25,7 @@ public class ModdedStartupLifecycleTest {
}
@Test
@SuppressWarnings("unchecked")
public void restoresAfterWorldsLoadWithoutRepeatingDuringServerTicks() {
NativeModdedServer server = mock(NativeModdedServer.class);
AtomicBoolean worldsRefreshed = new AtomicBoolean();
@@ -32,28 +36,30 @@ public class ModdedStartupLifecycleTest {
when(server.hasPlayerList()).thenReturn(true);
ModdedDimensionRegistryStore.PersistentDimension dimension =
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);
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<ModdedMixinAudit> audit = mockStatic(ModdedMixinAudit.class);
MockedStatic<ModdedIrisLog> log = mockStatic(ModdedIrisLog.class)) {
startup.when(ModdedStartup::prepareForStartup).thenAnswer(invocation -> null);
store.when(() -> ModdedDimensionRegistryStore.loadForStartup(server)).thenReturn(List.of(dimension));
manager.when(() -> ModdedDimensionManager.restorePersistent(server, "iris:moon", "overworld", "overworld", 1337L))
.thenAnswer(invocation -> {
assertTrue(worldsRefreshed.get());
return null;
});
injection.when(() -> ModdedDimensionInjection.start(eq(List.of(dimension)), any())).thenReturn(restore);
ModdedLifecycleCallbacks.create().levelsReady().accept(server);
manager.verify(() -> ModdedDimensionManager.restorePersistent(server, "iris:moon", "overworld", "overworld", 1337L));
verify(restore).finish();
ModdedStartup.runOnce(server);
ModdedStartup.runOnce(server);
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));
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"