Skip to content

Commit

Permalink
Add gametest for startup configs
Browse files Browse the repository at this point in the history
Requires neoforged/FancyModLoader#150 (comment) to be merged before gametest merge
  • Loading branch information
TelepathicGrunt committed May 29, 2024
1 parent 4854412 commit a05a2b4
Show file tree
Hide file tree
Showing 2 changed files with 76 additions and 1 deletion.
Original file line number Diff line number Diff line change
@@ -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();
}
}
}
5 changes: 4 additions & 1 deletion tests/src/main/resources/META-INF/neoforge.mods.toml
Original file line number Diff line number Diff line change
Expand Up @@ -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"
Expand Down

0 comments on commit a05a2b4

Please sign in to comment.