mirror of
https://github.com/VolmitSoftware/Iris.git
synced 2026-10-20 07:24:16 +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 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"
|
||||
Reference in new issue
Block a user