Changes content integration tests to load content resources. (#4248)

* Changes content integration tests to load content resources.

* Content Integration tests override the GameControllerOptions and ServerOptions.
Only engine integration tests can change these!

* don't do component auto-registration by default in content integration tests

* Only use empty map in integration tests if CVar not overriden already.

* don't use nullable annotations in content integration tests...

* Fix integration tests

* Fix spawn test

* Move cvar overrides out of content

* Update submodule.
This commit is contained in:
Vera Aguilera Puerto
2021-07-03 15:23:01 +02:00
committed by GitHub
parent d10885742b
commit d5e34c6ad4
3 changed files with 47 additions and 12 deletions

View File

@@ -7,6 +7,8 @@ using Content.Server.IoC;
using Content.Shared.CCVar;
using Moq;
using NUnit.Framework;
using Robust.Client;
using Robust.Server;
using Robust.Server.Maps;
using Robust.Shared;
using Robust.Shared.ContentPack;
@@ -31,6 +33,13 @@ namespace Content.IntegrationTests
FailureLogLevel = LogLevel.Warning
};
// Load content resources, but not config and user data.
options.Options = new GameControllerOptions()
{
LoadContentResources = true,
LoadConfigAndUserData = false,
};
options.ContentStart = true;
options.ContentAssemblies = new[]
@@ -57,13 +66,6 @@ namespace Content.IntegrationTests
});
};
// Connecting to Discord is a massive waste of time.
// Basically just makes the CI logs a mess.
options.CVarOverrides[CVars.DiscordEnabled.Name] = "false";
// Avoid preloading textures in tests.
options.CVarOverrides.TryAdd(CVars.TexturePreloadingEnabled.Name, "false");
return base.StartClient(options);
}
@@ -74,6 +76,13 @@ namespace Content.IntegrationTests
FailureLogLevel = LogLevel.Warning
};
// Load content resources, but not config and user data.
options.Options = new ServerOptions()
{
LoadConfigAndUserData = false,
LoadContentResources = true,
};
options.ContentStart = true;
options.ContentAssemblies = new[]
@@ -105,7 +114,8 @@ namespace Content.IntegrationTests
// Disable holidays as some of them might mess with the map at round start.
options.CVarOverrides[CCVars.HolidaysEnabled.Name] = "false";
// Avoid loading a large map by default for integration tests.
// Avoid loading a large map by default for integration tests if none has been specified.
if(!options.CVarOverrides.ContainsKey(CCVars.GameMap.Name))
options.CVarOverrides[CCVars.GameMap.Name] = "Maps/Test/empty.yml";
return base.StartServer(options);
@@ -113,7 +123,14 @@ namespace Content.IntegrationTests
protected ServerIntegrationInstance StartServerDummyTicker(ServerIntegrationOptions options = null)
{
options ??= new ServerIntegrationOptions();
options ??= new ServerContentIntegrationOption();
// Load content resources, but not config and user data.
options.Options = new ServerOptions()
{
LoadConfigAndUserData = false,
LoadContentResources = true,
};
// Dummy game ticker.
options.CVarOverrides[CCVars.GameDummyTicker.Name] = "true";
@@ -229,6 +246,12 @@ namespace Content.IntegrationTests
FailureLogLevel = LogLevel.Warning;
}
public override GameControllerOptions Options { get; set; } = new()
{
LoadContentResources = true,
LoadConfigAndUserData = false,
};
public Action ContentBeforeIoC { get; set; }
}
@@ -239,6 +262,12 @@ namespace Content.IntegrationTests
FailureLogLevel = LogLevel.Warning;
}
public override ServerOptions Options { get; set; } = new()
{
LoadContentResources = true,
LoadConfigAndUserData = false,
};
public Action ContentBeforeIoC { get; set; }
}
}

View File

@@ -4,6 +4,7 @@ using System.Linq;
using System.Threading.Tasks;
using Content.Server.Battery.Components;
using Content.Server.PowerCell.Components;
using Content.Shared.CCVar;
using Content.Shared.Coordinates;
using NUnit.Framework;
using Robust.Shared.GameObjects;
@@ -21,7 +22,12 @@ namespace Content.IntegrationTests.Tests
[Test]
public async Task SpawnTest()
{
var server = StartServerDummyTicker();
var options = new ServerContentIntegrationOption()
{
CVarOverrides = {{CCVars.AIMaxUpdates.Name, int.MaxValue.ToString()}}
};
var server = StartServerDummyTicker(options);
await server.WaitIdleAsync();
var mapManager = server.ResolveDependency<IMapManager>();