From a05a2b40b6b92bbc613661d9406521ed1f599d6e Mon Sep 17 00:00:00 2001 From: TelepathicGrunt <40846040+TelepathicGrunt@users.noreply.github.com> Date: Wed, 29 May 2024 06:53:19 -0400 Subject: [PATCH] Add gametest for startup configs Requires https://github.com/neoforged/FancyModLoader/pull/150#issuecomment-2134028746 to be merged before gametest merge --- .../neoforge/debug/fml/StartupConfigTest.java | 72 +++++++++++++++++++ .../resources/META-INF/neoforge.mods.toml | 5 +- 2 files changed, 76 insertions(+), 1 deletion(-) create mode 100644 tests/src/main/java/net/neoforged/neoforge/debug/fml/StartupConfigTest.java diff --git a/tests/src/main/java/net/neoforged/neoforge/debug/fml/StartupConfigTest.java b/tests/src/main/java/net/neoforged/neoforge/debug/fml/StartupConfigTest.java new file mode 100644 index 0000000000..2329b5976e --- /dev/null +++ b/tests/src/main/java/net/neoforged/neoforge/debug/fml/StartupConfigTest.java @@ -0,0 +1,72 @@ +/* + * Copyright (c) NeoForged and contributors + * SPDX-License-Identifier: LGPL-2.1-only + */ + +package net.neoforged.neoforge.debug.fml; + +import net.minecraft.gametest.framework.GameTest; +import net.neoforged.fml.ModContainer; +import net.neoforged.fml.common.Mod; +import net.neoforged.fml.config.ModConfig; +import net.neoforged.neoforge.common.ModConfigSpec; +import net.neoforged.testframework.annotation.TestHolder; +import net.neoforged.testframework.gametest.EmptyTemplate; +import net.neoforged.testframework.gametest.ExtendedGameTestHelper; + +public class StartupConfigTest { + private static final String MOD_ID = "startup_config_test"; + private static boolean WasLoadedAtInitStartupConfig = false; + private static boolean WasLoadedAtInitCommonConfig = false; + private static boolean WasLoadedAtInitServerConfig = false; + private static boolean WasLoadedAtInitClientConfig = false; + + @GameTest + @EmptyTemplate + @TestHolder(description = "Tests the initial loading state of configs") + static void testStartupConfigs(ExtendedGameTestHelper helper) { + helper.assertTrue(WasLoadedAtInitStartupConfig, "Startup Config was supposed to be loaded at mod init."); + helper.assertFalse(WasLoadedAtInitCommonConfig, "Common Config was NOT supposed to be loaded at mod init."); + helper.assertFalse(WasLoadedAtInitServerConfig, "Server Config was NOT supposed to be loaded at mod init."); + helper.assertFalse(WasLoadedAtInitClientConfig, "Client Config was NOT supposed to be loaded at mod init."); + helper.succeed(); + } + + @Mod(value = MOD_ID) + public static class StartupConfigTestMod { + public StartupConfigTestMod(ModContainer modContainer) { + modContainer.registerConfig(ModConfig.Type.STARTUP, StartupConfig.SPEC); + modContainer.registerConfig(ModConfig.Type.COMMON, CommonConfig.SPEC); + modContainer.registerConfig(ModConfig.Type.SERVER, ServerConfig.SPEC); + modContainer.registerConfig(ModConfig.Type.CLIENT, ClientConfig.SPEC); + WasLoadedAtInitStartupConfig = StartupConfig.SPEC.isLoaded(); + WasLoadedAtInitCommonConfig = CommonConfig.SPEC.isLoaded(); + WasLoadedAtInitServerConfig = ServerConfig.SPEC.isLoaded(); + WasLoadedAtInitClientConfig = ClientConfig.SPEC.isLoaded(); + } + + public static class StartupConfig { + private static final ModConfigSpec.Builder BUILDER = new ModConfigSpec.Builder(); + private static final ModConfigSpec.BooleanValue TEST_MARKER = BUILDER.define("testMarker1", true); + static final ModConfigSpec SPEC = BUILDER.build(); + } + + public static class CommonConfig { + private static final ModConfigSpec.Builder BUILDER = new ModConfigSpec.Builder(); + private static final ModConfigSpec.BooleanValue TEST_MARKER = BUILDER.define("testMarker2", true); + static final ModConfigSpec SPEC = BUILDER.build(); + } + + public static class ServerConfig { + private static final ModConfigSpec.Builder BUILDER = new ModConfigSpec.Builder(); + private static final ModConfigSpec.BooleanValue TEST_MARKER = BUILDER.define("testMarker3", true); + static final ModConfigSpec SPEC = BUILDER.build(); + } + + public static class ClientConfig { + private static final ModConfigSpec.Builder BUILDER = new ModConfigSpec.Builder(); + private static final ModConfigSpec.BooleanValue TEST_MARKER = BUILDER.define("testMarker4", true); + static final ModConfigSpec SPEC = BUILDER.build(); + } + } +} diff --git a/tests/src/main/resources/META-INF/neoforge.mods.toml b/tests/src/main/resources/META-INF/neoforge.mods.toml index 70d23d99cb..4fcaf7d043 100644 --- a/tests/src/main/resources/META-INF/neoforge.mods.toml +++ b/tests/src/main/resources/META-INF/neoforge.mods.toml @@ -35,7 +35,10 @@ license="LGPL v2.1" modId="finalize_spawn_fix_test" [[mods]] - modId="multiple_entrypoints_test" +modId="multiple_entrypoints_test" + +[[mods]] + modId="startup_config_test" [[mods]] modId="ordered_test_1"