Add test to load all config presets (#20705)

This commit is contained in:
DrSmugleaf
2023-10-06 19:31:08 -07:00
committed by GitHub
parent 427cae2d25
commit a0341ec53e
3 changed files with 75 additions and 3 deletions

View File

@@ -0,0 +1,71 @@
using System.Collections.Generic;
using System.IO;
using Content.Server.Entry;
using Robust.Shared.Configuration;
using Robust.Shared.ContentPack;
namespace Content.IntegrationTests.Tests;
[TestFixture]
public sealed class ConfigPresetTests
{
[Test]
public async Task TestLoadAll()
{
var pair = await PoolManager.GetServerClient();
var server = pair.Server;
var resources = server.ResolveDependency<IResourceManager>();
var config = server.ResolveDependency<IConfigurationManager>();
await server.WaitPost(() =>
{
var originalCVars = new List<(string, object)>();
foreach (var cvar in config.GetRegisteredCVars())
{
var value = config.GetCVar<object>(cvar);
originalCVars.Add((cvar, value));
}
var originalCvarsStream = new MemoryStream();
config.SaveToTomlStream(originalCvarsStream, config.GetRegisteredCVars());
originalCvarsStream.Position = 0;
var presets = resources.ContentFindFiles(EntryPoint.ConfigPresetsDir);
Assert.Multiple(() =>
{
foreach (var preset in presets)
{
var stream = resources.ContentFileRead(preset);
Assert.DoesNotThrow(() => config.LoadDefaultsFromTomlStream(stream));
}
});
config.LoadDefaultsFromTomlStream(originalCvarsStream);
foreach (var originalCVar in originalCVars)
{
var (name, originalValue) = originalCVar;
var newValue = config.GetCVar<object>(name);
var originalValueType = originalValue.GetType();
var newValueType = newValue.GetType();
if (originalValueType.IsEnum || newValueType.IsEnum)
{
originalValue = Enum.ToObject(originalValueType, originalValue);
newValue = Enum.ToObject(originalValueType, newValue);
}
if (originalValueType == typeof(float) || newValueType == typeof(float))
{
originalValue = Convert.ToSingle(originalValue);
newValue = Convert.ToSingle(newValue);
}
if (!Equals(newValue, originalValue))
Assert.Fail($"CVar {name} was not reset to its original value.");
}
});
await pair.CleanReturnAsync();
}
}

View File

@@ -1,3 +1,4 @@
using System.Runtime.CompilerServices; using System.Runtime.CompilerServices;
[assembly: InternalsVisibleTo("Content.Tests")] [assembly: InternalsVisibleTo("Content.Tests")]
[assembly: InternalsVisibleTo("Content.IntegrationTests")]

View File

@@ -21,20 +21,20 @@ using Content.Server.ServerUpdates;
using Content.Server.Voting.Managers; using Content.Server.Voting.Managers;
using Content.Shared.CCVar; using Content.Shared.CCVar;
using Content.Shared.Kitchen; using Content.Shared.Kitchen;
using Content.Shared.Localizations;
using Robust.Server; using Robust.Server;
using Robust.Shared.Configuration;
using Robust.Server.ServerStatus; using Robust.Server.ServerStatus;
using Robust.Shared.Configuration;
using Robust.Shared.ContentPack; using Robust.Shared.ContentPack;
using Robust.Shared.Prototypes; using Robust.Shared.Prototypes;
using Robust.Shared.Timing; using Robust.Shared.Timing;
using Robust.Shared.Utility; using Robust.Shared.Utility;
using Content.Shared.Localizations;
namespace Content.Server.Entry namespace Content.Server.Entry
{ {
public sealed class EntryPoint : GameServer public sealed class EntryPoint : GameServer
{ {
private const string ConfigPresetsDir = "/ConfigPresets/"; internal const string ConfigPresetsDir = "/ConfigPresets/";
private const string ConfigPresetsDirBuild = $"{ConfigPresetsDir}Build/"; private const string ConfigPresetsDirBuild = $"{ConfigPresetsDir}Build/";
private EuiManager _euiManager = default!; private EuiManager _euiManager = default!;