Fix forcemap not bypassing requirements (#29426)
* Fix forcemap not bypassing requirements * Add integration test for forcemap
This commit is contained in:
80
Content.IntegrationTests/Tests/Commands/ForceMapTest.cs
Normal file
80
Content.IntegrationTests/Tests/Commands/ForceMapTest.cs
Normal file
@@ -0,0 +1,80 @@
|
||||
using Content.Shared.CCVar;
|
||||
using Robust.Shared.Configuration;
|
||||
using Robust.Shared.Console;
|
||||
|
||||
namespace Content.IntegrationTests.Tests.Commands;
|
||||
|
||||
[TestFixture]
|
||||
public sealed class ForceMapTest
|
||||
{
|
||||
private const string DefaultMapName = "Empty";
|
||||
private const string BadMapName = "asdf_asd-fa__sdfAsd_f"; // Hopefully no one ever names a map this...
|
||||
private const string TestMapEligibleName = "ForceMapTestEligible";
|
||||
private const string TestMapIneligibleName = "ForceMapTestIneligible";
|
||||
|
||||
[TestPrototypes]
|
||||
private static readonly string TestMaps = @$"
|
||||
- type: gameMap
|
||||
id: {TestMapIneligibleName}
|
||||
mapName: {TestMapIneligibleName}
|
||||
mapPath: /Maps/Test/empty.yml
|
||||
minPlayers: 20
|
||||
maxPlayers: 80
|
||||
stations:
|
||||
Empty:
|
||||
stationProto: StandardNanotrasenStation
|
||||
components:
|
||||
- type: StationNameSetup
|
||||
mapNameTemplate: ""Empty""
|
||||
|
||||
- type: gameMap
|
||||
id: {TestMapEligibleName}
|
||||
mapName: {TestMapEligibleName}
|
||||
mapPath: /Maps/Test/empty.yml
|
||||
minPlayers: 0
|
||||
stations:
|
||||
Empty:
|
||||
stationProto: StandardNanotrasenStation
|
||||
components:
|
||||
- type: StationNameSetup
|
||||
mapNameTemplate: ""Empty""
|
||||
";
|
||||
|
||||
[Test]
|
||||
public async Task TestForceMapCommand()
|
||||
{
|
||||
await using var pair = await PoolManager.GetServerClient();
|
||||
var server = pair.Server;
|
||||
|
||||
var entMan = server.EntMan;
|
||||
var configManager = server.ResolveDependency<IConfigurationManager>();
|
||||
var consoleHost = server.ResolveDependency<IConsoleHost>();
|
||||
|
||||
await server.WaitAssertion(() =>
|
||||
{
|
||||
// Make sure we're set to the default map
|
||||
Assert.That(configManager.GetCVar(CCVars.GameMap), Is.EqualTo(DefaultMapName),
|
||||
$"Test didn't start on expected map ({DefaultMapName})!");
|
||||
|
||||
// Try changing to a map that doesn't exist
|
||||
consoleHost.ExecuteCommand($"forcemap {BadMapName}");
|
||||
Assert.That(configManager.GetCVar(CCVars.GameMap), Is.EqualTo(DefaultMapName),
|
||||
$"Forcemap succeeded with a map that does not exist ({BadMapName})!");
|
||||
|
||||
// Try changing to a valid map
|
||||
consoleHost.ExecuteCommand($"forcemap {TestMapEligibleName}");
|
||||
Assert.That(configManager.GetCVar(CCVars.GameMap), Is.EqualTo(TestMapEligibleName),
|
||||
$"Forcemap failed with a valid map ({TestMapEligibleName})");
|
||||
|
||||
// Try changing to a map that exists but is ineligible
|
||||
consoleHost.ExecuteCommand($"forcemap {TestMapIneligibleName}");
|
||||
Assert.That(configManager.GetCVar(CCVars.GameMap), Is.EqualTo(TestMapIneligibleName),
|
||||
$"Forcemap failed with valid but ineligible map ({TestMapIneligibleName})!");
|
||||
});
|
||||
|
||||
// Cleanup
|
||||
configManager.SetCVar(CCVars.GameMap, DefaultMapName);
|
||||
|
||||
await pair.CleanReturnAsync();
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user