Add test to load all config presets (#20705)
This commit is contained in:
71
Content.IntegrationTests/Tests/ConfigPresetTests.cs
Normal file
71
Content.IntegrationTests/Tests/ConfigPresetTests.cs
Normal 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();
|
||||
}
|
||||
}
|
||||
@@ -1,3 +1,4 @@
|
||||
using System.Runtime.CompilerServices;
|
||||
|
||||
[assembly: InternalsVisibleTo("Content.Tests")]
|
||||
[assembly: InternalsVisibleTo("Content.IntegrationTests")]
|
||||
|
||||
@@ -21,20 +21,20 @@ using Content.Server.ServerUpdates;
|
||||
using Content.Server.Voting.Managers;
|
||||
using Content.Shared.CCVar;
|
||||
using Content.Shared.Kitchen;
|
||||
using Content.Shared.Localizations;
|
||||
using Robust.Server;
|
||||
using Robust.Shared.Configuration;
|
||||
using Robust.Server.ServerStatus;
|
||||
using Robust.Shared.Configuration;
|
||||
using Robust.Shared.ContentPack;
|
||||
using Robust.Shared.Prototypes;
|
||||
using Robust.Shared.Timing;
|
||||
using Robust.Shared.Utility;
|
||||
using Content.Shared.Localizations;
|
||||
|
||||
namespace Content.Server.Entry
|
||||
{
|
||||
public sealed class EntryPoint : GameServer
|
||||
{
|
||||
private const string ConfigPresetsDir = "/ConfigPresets/";
|
||||
internal const string ConfigPresetsDir = "/ConfigPresets/";
|
||||
private const string ConfigPresetsDirBuild = $"{ConfigPresetsDir}Build/";
|
||||
|
||||
private EuiManager _euiManager = default!;
|
||||
|
||||
Reference in New Issue
Block a user