Gametest Part 2: Preliminary refactor every test to use GameTest as the framework. (#43207)

* Pass 1.

* i'm FREE

* Prevent hangups.

* okay fine here's an attribute for settings, will polish later and prolly remove the overridable thing.

* sigh.

* fix singular trigger bug so LatheTest doesn't flake.

* Remove SystemAttribute usage.

* Poke

* I used the shotgun. You know why? Cause the shot gun doesn’t miss, and unlike the shitty hybrid taser it stops a criminal in their tracks in two hits. Bang, bang, and they’re fucking done. I use four shots just to make damn sure. Because, once again, I’m not there to coddle a buncha criminal scum sucking f------, I’m there to 1) Survive the fucking round. 2) Guard the armory. So you can absolutely get fucked. If I get unbanned, which I won’t, you can guarantee I will continue to use the shotgun to apprehend criminals. Because it’s quick, clean and effective as fuck. Why in the seven hells would I fuck around with the disabler shots, which take half a clip just to bring someone down, or with the tazer bolts which are slow as balls, impossible to aim and do about next to jack shit, fuck all. The shotgun is the superior law enforcement weapon. Because it stops crime. And it stops crime by reducing the number of criminals roaming the fucking halls.

* Change the faulty store test into two tests, one of which is ignored for failing.
This commit is contained in:
Moony
2026-04-01 09:06:26 -07:00
committed by GitHub
parent 4b9e7352d5
commit d42adbf05d
163 changed files with 1005 additions and 1317 deletions
@@ -1,5 +1,6 @@
#nullable enable #nullable enable
using System; using System;
using System.IO;
using System.Runtime.CompilerServices; using System.Runtime.CompilerServices;
using System.Threading.Tasks; using System.Threading.Tasks;
using BenchmarkDotNet.Attributes; using BenchmarkDotNet.Attributes;
@@ -44,7 +45,7 @@ public class ComponentQueryBenchmark
ProgramShared.PathOffset = "../../../../"; ProgramShared.PathOffset = "../../../../";
PoolManager.Startup(typeof(QueryBenchSystem).Assembly); PoolManager.Startup(typeof(QueryBenchSystem).Assembly);
_pair = PoolManager.GetServerClient().GetAwaiter().GetResult(); _pair = PoolManager.GetServerClient(testContext: new ExternalTestContext("Benchmark", StreamWriter.Null)).GetAwaiter().GetResult();
_entMan = _pair.Server.ResolveDependency<IEntityManager>(); _entMan = _pair.Server.ResolveDependency<IEntityManager>();
_itemQuery = _entMan.GetEntityQuery<ItemComponent>(); _itemQuery = _entMan.GetEntityQuery<ItemComponent>();
+2 -1
View File
@@ -1,3 +1,4 @@
using System.IO;
using System.Threading.Tasks; using System.Threading.Tasks;
using BenchmarkDotNet.Attributes; using BenchmarkDotNet.Attributes;
using Content.IntegrationTests; using Content.IntegrationTests;
@@ -68,7 +69,7 @@ public class DeltaPressureBenchmark
{ {
ProgramShared.PathOffset = "../../../../"; ProgramShared.PathOffset = "../../../../";
PoolManager.Startup(); PoolManager.Startup();
_pair = await PoolManager.GetServerClient(); _pair = await PoolManager.GetServerClient(testContext: new ExternalTestContext("Benchmark", StreamWriter.Null));
var server = _pair.Server; var server = _pair.Server;
var mapdata = await _pair.CreateTestMap(); var mapdata = await _pair.CreateTestMap();
+2 -1
View File
@@ -1,4 +1,5 @@
using System.Collections.Generic; using System.Collections.Generic;
using System.IO;
using System.Threading.Tasks; using System.Threading.Tasks;
using BenchmarkDotNet.Attributes; using BenchmarkDotNet.Attributes;
using Content.IntegrationTests; using Content.IntegrationTests;
@@ -69,7 +70,7 @@ public class DestructibleBenchmark
{ {
ProgramShared.PathOffset = "../../../../"; ProgramShared.PathOffset = "../../../../";
PoolManager.Startup(); PoolManager.Startup();
_pair = await PoolManager.GetServerClient(); _pair = await PoolManager.GetServerClient(testContext: new ExternalTestContext("Benchmark", StreamWriter.Null));
var server = _pair.Server; var server = _pair.Server;
_entMan = server.ResolveDependency<IEntityManager>(); _entMan = server.ResolveDependency<IEntityManager>();
@@ -1,4 +1,5 @@
using System.Collections.Generic; using System.Collections.Generic;
using System.IO;
using System.Threading.Tasks; using System.Threading.Tasks;
using BenchmarkDotNet.Attributes; using BenchmarkDotNet.Attributes;
using Content.IntegrationTests; using Content.IntegrationTests;
@@ -60,7 +61,7 @@ public class DeviceNetworkingBenchmark
{ {
ProgramShared.PathOffset = "../../../../"; ProgramShared.PathOffset = "../../../../";
PoolManager.Startup(typeof(DeviceNetworkingBenchmark).Assembly); PoolManager.Startup(typeof(DeviceNetworkingBenchmark).Assembly);
_pair = await PoolManager.GetServerClient(); _pair = await PoolManager.GetServerClient(testContext: new ExternalTestContext("Benchmark", StreamWriter.Null));
var server = _pair.Server; var server = _pair.Server;
await server.WaitPost(() => await server.WaitPost(() =>
+2 -1
View File
@@ -1,3 +1,4 @@
using System.IO;
using System.Threading.Tasks; using System.Threading.Tasks;
using BenchmarkDotNet.Attributes; using BenchmarkDotNet.Attributes;
using Content.IntegrationTests; using Content.IntegrationTests;
@@ -51,7 +52,7 @@ public class GasReactionBenchmark
{ {
ProgramShared.PathOffset = "../../../../"; ProgramShared.PathOffset = "../../../../";
PoolManager.Startup(); PoolManager.Startup();
_pair = await PoolManager.GetServerClient(); _pair = await PoolManager.GetServerClient(testContext: new ExternalTestContext("Benchmark", StreamWriter.Null));
var server = _pair.Server; var server = _pair.Server;
// Create test map and grid // Create test map and grid
+3 -2
View File
@@ -1,4 +1,5 @@
using System.Threading.Tasks; using System.IO;
using System.Threading.Tasks;
using BenchmarkDotNet.Attributes; using BenchmarkDotNet.Attributes;
using Content.IntegrationTests; using Content.IntegrationTests;
using Content.IntegrationTests.Pair; using Content.IntegrationTests.Pair;
@@ -27,7 +28,7 @@ public class HeatCapacityBenchmark
{ {
ProgramShared.PathOffset = "../../../../"; ProgramShared.PathOffset = "../../../../";
PoolManager.Startup(); PoolManager.Startup();
_pair = await PoolManager.GetServerClient(); _pair = await PoolManager.GetServerClient(testContext: new ExternalTestContext("Benchmark", StreamWriter.Null));
await _pair.Connect(); await _pair.Connect();
_cEntMan = _pair.Client.ResolveDependency<IEntityManager>(); _cEntMan = _pair.Client.ResolveDependency<IEntityManager>();
_sEntMan = _pair.Server.ResolveDependency<IEntityManager>(); _sEntMan = _pair.Server.ResolveDependency<IEntityManager>();
+2 -1
View File
@@ -1,5 +1,6 @@
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.IO;
using System.Linq; using System.Linq;
using System.Threading.Tasks; using System.Threading.Tasks;
using BenchmarkDotNet.Attributes; using BenchmarkDotNet.Attributes;
@@ -29,7 +30,7 @@ public class MapLoadBenchmark
ProgramShared.PathOffset = "../../../../"; ProgramShared.PathOffset = "../../../../";
PoolManager.Startup(); PoolManager.Startup();
_pair = PoolManager.GetServerClient().GetAwaiter().GetResult(); _pair = PoolManager.GetServerClient(testContext: new ExternalTestContext("Benchmark", StreamWriter.Null)).GetAwaiter().GetResult();
var server = _pair.Server; var server = _pair.Server;
Paths = server.ResolveDependency<IPrototypeManager>() Paths = server.ResolveDependency<IPrototypeManager>()
+2 -1
View File
@@ -1,5 +1,6 @@
#nullable enable #nullable enable
using System; using System;
using System.IO;
using System.Linq; using System.Linq;
using System.Threading.Tasks; using System.Threading.Tasks;
using BenchmarkDotNet.Attributes; using BenchmarkDotNet.Attributes;
@@ -50,7 +51,7 @@ public class PvsBenchmark
#endif #endif
PoolManager.Startup(); PoolManager.Startup();
_pair = PoolManager.GetServerClient().GetAwaiter().GetResult(); _pair = PoolManager.GetServerClient(testContext: new ExternalTestContext("Benchmark", StreamWriter.Null)).GetAwaiter().GetResult();
_entMan = _pair.Server.ResolveDependency<IEntityManager>(); _entMan = _pair.Server.ResolveDependency<IEntityManager>();
_pair.Server.CfgMan.SetCVar(CVars.NetPVS, true); _pair.Server.CfgMan.SetCVar(CVars.NetPVS, true);
_pair.Server.CfgMan.SetCVar(CVars.ThreadParallelCount, 0); _pair.Server.CfgMan.SetCVar(CVars.ThreadParallelCount, 0);
+2 -1
View File
@@ -1,4 +1,5 @@
#nullable enable #nullable enable
using System.IO;
using System.Runtime.CompilerServices; using System.Runtime.CompilerServices;
using System.Threading.Tasks; using System.Threading.Tasks;
using BenchmarkDotNet.Attributes; using BenchmarkDotNet.Attributes;
@@ -21,7 +22,7 @@ public class RaiseEventBenchmark
{ {
ProgramShared.PathOffset = "../../../../"; ProgramShared.PathOffset = "../../../../";
PoolManager.Startup(typeof(BenchSystem).Assembly); PoolManager.Startup(typeof(BenchSystem).Assembly);
_pair = PoolManager.GetServerClient().GetAwaiter().GetResult(); _pair = PoolManager.GetServerClient(testContext: new ExternalTestContext("Benchmark", StreamWriter.Null)).GetAwaiter().GetResult();
var entMan = _pair.Server.EntMan; var entMan = _pair.Server.EntMan;
var fact = _pair.Server.ResolveDependency<IComponentFactory>(); var fact = _pair.Server.ResolveDependency<IComponentFactory>();
var bus = (EntityEventBus)entMan.EventBus; var bus = (EntityEventBus)entMan.EventBus;
@@ -1,4 +1,5 @@
using System.Threading.Tasks; using System.IO;
using System.Threading.Tasks;
using BenchmarkDotNet.Attributes; using BenchmarkDotNet.Attributes;
using Content.IntegrationTests; using Content.IntegrationTests;
using Content.IntegrationTests.Pair; using Content.IntegrationTests.Pair;
@@ -36,7 +37,7 @@ public class SpawnEquipDeleteBenchmark
{ {
ProgramShared.PathOffset = "../../../../"; ProgramShared.PathOffset = "../../../../";
PoolManager.Startup(); PoolManager.Startup();
_pair = await PoolManager.GetServerClient(); _pair = await PoolManager.GetServerClient(testContext: new ExternalTestContext("Benchmark", StreamWriter.Null));
var server = _pair.Server; var server = _pair.Server;
var mapData = await _pair.CreateTestMap(); var mapData = await _pair.CreateTestMap();
@@ -1,16 +1,17 @@
#nullable enable
using System.Collections.Generic; using System.Collections.Generic;
using Content.IntegrationTests.Fixtures;
using Content.IntegrationTests.Fixtures.Attributes;
using Content.Shared.Access; using Content.Shared.Access;
using Content.Shared.Access.Components; using Content.Shared.Access.Components;
using Content.Shared.Access.Systems; using Content.Shared.Access.Systems;
using Robust.Shared.GameObjects; using Robust.Shared.GameObjects;
using Robust.Shared.Map;
using Robust.Shared.Prototypes; using Robust.Shared.Prototypes;
namespace Content.IntegrationTests.Tests.Access namespace Content.IntegrationTests.Tests.Access
{ {
[TestFixture]
[TestOf(typeof(AccessReaderComponent))] [TestOf(typeof(AccessReaderComponent))]
public sealed class AccessReaderTest public sealed class AccessReaderTest : GameTest
{ {
[TestPrototypes] [TestPrototypes]
private const string Prototypes = @" private const string Prototypes = @"
@@ -21,91 +22,85 @@ namespace Content.IntegrationTests.Tests.Access
- type: AccessReader - type: AccessReader
"; ";
[SidedDependency(Side.Server)] private readonly AccessReaderSystem _system = null!;
[Test] [Test]
[RunOnSide(Side.Server)]
public async Task TestTags() public async Task TestTags()
{ {
await using var pair = await PoolManager.GetServerClient(); var ent = SSpawn("TestAccessReader");
var server = pair.Server; var reader = new Entity<AccessReaderComponent>(ent, SComp<AccessReaderComponent>(ent));
var entityManager = server.ResolveDependency<IEntityManager>();
await server.WaitAssertion(() => // test empty
Assert.Multiple(() =>
{ {
var system = entityManager.System<AccessReaderSystem>(); Assert.That(_system.AreAccessTagsAllowed(new List<ProtoId<AccessLevelPrototype>> { "Foo" }, reader), Is.True);
var ent = entityManager.SpawnEntity("TestAccessReader", MapCoordinates.Nullspace); Assert.That(_system.AreAccessTagsAllowed(new List<ProtoId<AccessLevelPrototype>> { "Bar" }, reader), Is.True);
var reader = new Entity<AccessReaderComponent>(ent, entityManager.GetComponent<AccessReaderComponent>(ent)); Assert.That(_system.AreAccessTagsAllowed(Array.Empty<ProtoId<AccessLevelPrototype>>(), reader), Is.True);
// test empty
Assert.Multiple(() =>
{
Assert.That(system.AreAccessTagsAllowed(new List<ProtoId<AccessLevelPrototype>> { "Foo" }, reader), Is.True);
Assert.That(system.AreAccessTagsAllowed(new List<ProtoId<AccessLevelPrototype>> { "Bar" }, reader), Is.True);
Assert.That(system.AreAccessTagsAllowed(Array.Empty<ProtoId<AccessLevelPrototype>>(), reader), Is.True);
});
// test deny
system.AddDenyTag(reader, "A");
Assert.Multiple(() =>
{
Assert.That(system.AreAccessTagsAllowed(new List<ProtoId<AccessLevelPrototype>> { "Foo" }, reader), Is.True);
Assert.That(system.AreAccessTagsAllowed(new List<ProtoId<AccessLevelPrototype>> { "A" }, reader), Is.False);
Assert.That(system.AreAccessTagsAllowed(new List<ProtoId<AccessLevelPrototype>> { "A", "Foo" }, reader), Is.False);
Assert.That(system.AreAccessTagsAllowed(Array.Empty<ProtoId<AccessLevelPrototype>>(), reader), Is.True);
});
system.ClearDenyTags(reader);
// test one list
system.TryAddAccess(reader, "A");
Assert.Multiple(() =>
{
Assert.That(system.AreAccessTagsAllowed(new List<ProtoId<AccessLevelPrototype>> { "A" }, reader), Is.True);
Assert.That(system.AreAccessTagsAllowed(new List<ProtoId<AccessLevelPrototype>> { "B" }, reader), Is.False);
Assert.That(system.AreAccessTagsAllowed(new List<ProtoId<AccessLevelPrototype>> { "A", "B" }, reader), Is.True);
Assert.That(system.AreAccessTagsAllowed(Array.Empty<ProtoId<AccessLevelPrototype>>(), reader), Is.False);
});
system.TryClearAccesses(reader);
// test one list - two items
system.TryAddAccess(reader, new HashSet<ProtoId<AccessLevelPrototype>> { "A", "B" });
Assert.Multiple(() =>
{
Assert.That(system.AreAccessTagsAllowed(new List<ProtoId<AccessLevelPrototype>> { "A" }, reader), Is.False);
Assert.That(system.AreAccessTagsAllowed(new List<ProtoId<AccessLevelPrototype>> { "B" }, reader), Is.False);
Assert.That(system.AreAccessTagsAllowed(new List<ProtoId<AccessLevelPrototype>> { "A", "B" }, reader), Is.True);
Assert.That(system.AreAccessTagsAllowed(Array.Empty<ProtoId<AccessLevelPrototype>>(), reader), Is.False);
});
system.TryClearAccesses(reader);
// test two list
var accesses = new List<HashSet<ProtoId<AccessLevelPrototype>>>() {
new HashSet<ProtoId<AccessLevelPrototype>> () { "A" },
new HashSet<ProtoId<AccessLevelPrototype>> () { "B", "C" }
};
system.TryAddAccesses(reader, accesses);
Assert.Multiple(() =>
{
Assert.That(system.AreAccessTagsAllowed(new List<ProtoId<AccessLevelPrototype>> { "A" }, reader), Is.True);
Assert.That(system.AreAccessTagsAllowed(new List<ProtoId<AccessLevelPrototype>> { "B" }, reader), Is.False);
Assert.That(system.AreAccessTagsAllowed(new List<ProtoId<AccessLevelPrototype>> { "A", "B" }, reader), Is.True);
Assert.That(system.AreAccessTagsAllowed(new List<ProtoId<AccessLevelPrototype>> { "C", "B" }, reader), Is.True);
Assert.That(system.AreAccessTagsAllowed(new List<ProtoId<AccessLevelPrototype>> { "C", "B", "A" }, reader), Is.True);
Assert.That(system.AreAccessTagsAllowed(Array.Empty<ProtoId<AccessLevelPrototype>>(), reader), Is.False);
});
system.TryClearAccesses(reader);
// test deny list
system.TryAddAccess(reader, new HashSet<ProtoId<AccessLevelPrototype>> { "A" });
system.AddDenyTag(reader, "B");
Assert.Multiple(() =>
{
Assert.That(system.AreAccessTagsAllowed(new List<ProtoId<AccessLevelPrototype>> { "A" }, reader), Is.True);
Assert.That(system.AreAccessTagsAllowed(new List<ProtoId<AccessLevelPrototype>> { "B" }, reader), Is.False);
Assert.That(system.AreAccessTagsAllowed(new List<ProtoId<AccessLevelPrototype>> { "A", "B" }, reader), Is.False);
Assert.That(system.AreAccessTagsAllowed(Array.Empty<ProtoId<AccessLevelPrototype>>(), reader), Is.False);
});
system.TryClearAccesses(reader);
system.ClearDenyTags(reader);
}); });
await pair.CleanReturnAsync();
// test deny
_system.AddDenyTag(reader, "A");
Assert.Multiple(() =>
{
Assert.That(_system.AreAccessTagsAllowed(new List<ProtoId<AccessLevelPrototype>> { "Foo" }, reader), Is.True);
Assert.That(_system.AreAccessTagsAllowed(new List<ProtoId<AccessLevelPrototype>> { "A" }, reader), Is.False);
Assert.That(_system.AreAccessTagsAllowed(new List<ProtoId<AccessLevelPrototype>> { "A", "Foo" }, reader), Is.False);
Assert.That(_system.AreAccessTagsAllowed(Array.Empty<ProtoId<AccessLevelPrototype>>(), reader), Is.True);
});
_system.ClearDenyTags(reader);
// test one list
_system.TryAddAccess(reader, "A");
Assert.Multiple(() =>
{
Assert.That(_system.AreAccessTagsAllowed(new List<ProtoId<AccessLevelPrototype>> { "A" }, reader), Is.True);
Assert.That(_system.AreAccessTagsAllowed(new List<ProtoId<AccessLevelPrototype>> { "B" }, reader), Is.False);
Assert.That(_system.AreAccessTagsAllowed(new List<ProtoId<AccessLevelPrototype>> { "A", "B" }, reader), Is.True);
Assert.That(_system.AreAccessTagsAllowed(Array.Empty<ProtoId<AccessLevelPrototype>>(), reader), Is.False);
});
_system.TryClearAccesses(reader);
// test one list - two items
_system.TryAddAccess(reader, new HashSet<ProtoId<AccessLevelPrototype>> { "A", "B" });
Assert.Multiple(() =>
{
Assert.That(_system.AreAccessTagsAllowed(new List<ProtoId<AccessLevelPrototype>> { "A" }, reader), Is.False);
Assert.That(_system.AreAccessTagsAllowed(new List<ProtoId<AccessLevelPrototype>> { "B" }, reader), Is.False);
Assert.That(_system.AreAccessTagsAllowed(new List<ProtoId<AccessLevelPrototype>> { "A", "B" }, reader), Is.True);
Assert.That(_system.AreAccessTagsAllowed(Array.Empty<ProtoId<AccessLevelPrototype>>(), reader), Is.False);
});
_system.TryClearAccesses(reader);
// test two list
var accesses = new List<HashSet<ProtoId<AccessLevelPrototype>>>() {
new HashSet<ProtoId<AccessLevelPrototype>> () { "A" },
new HashSet<ProtoId<AccessLevelPrototype>> () { "B", "C" }
};
_system.TryAddAccesses(reader, accesses);
Assert.Multiple(() =>
{
Assert.That(_system.AreAccessTagsAllowed(new List<ProtoId<AccessLevelPrototype>> { "A" }, reader), Is.True);
Assert.That(_system.AreAccessTagsAllowed(new List<ProtoId<AccessLevelPrototype>> { "B" }, reader), Is.False);
Assert.That(_system.AreAccessTagsAllowed(new List<ProtoId<AccessLevelPrototype>> { "A", "B" }, reader), Is.True);
Assert.That(_system.AreAccessTagsAllowed(new List<ProtoId<AccessLevelPrototype>> { "C", "B" }, reader), Is.True);
Assert.That(_system.AreAccessTagsAllowed(new List<ProtoId<AccessLevelPrototype>> { "C", "B", "A" }, reader), Is.True);
Assert.That(_system.AreAccessTagsAllowed(Array.Empty<ProtoId<AccessLevelPrototype>>(), reader), Is.False);
});
_system.TryClearAccesses(reader);
// test deny list
_system.TryAddAccess(reader, new HashSet<ProtoId<AccessLevelPrototype>> { "A" });
_system.AddDenyTag(reader, "B");
Assert.Multiple(() =>
{
Assert.That(_system.AreAccessTagsAllowed(new List<ProtoId<AccessLevelPrototype>> { "A" }, reader), Is.True);
Assert.That(_system.AreAccessTagsAllowed(new List<ProtoId<AccessLevelPrototype>> { "B" }, reader), Is.False);
Assert.That(_system.AreAccessTagsAllowed(new List<ProtoId<AccessLevelPrototype>> { "A", "B" }, reader), Is.False);
Assert.That(_system.AreAccessTagsAllowed(Array.Empty<ProtoId<AccessLevelPrototype>>(), reader), Is.False);
});
_system.TryClearAccesses(reader);
_system.ClearDenyTags(reader);
} }
} }
@@ -1,4 +1,7 @@
#nullable enable
using System.Linq; using System.Linq;
using Content.IntegrationTests.Fixtures;
using Content.IntegrationTests.Fixtures.Attributes;
using Content.Shared.Actions; using Content.Shared.Actions;
using Content.Shared.Eye; using Content.Shared.Eye;
using Robust.Server.GameObjects; using Robust.Server.GameObjects;
@@ -7,15 +10,18 @@ using Robust.Shared.GameObjects;
namespace Content.IntegrationTests.Tests.Actions; namespace Content.IntegrationTests.Tests.Actions;
[TestFixture] [TestFixture]
public sealed class ActionPvsDetachTest public sealed class ActionPvsDetachTest : GameTest
{ {
[SidedDependency(Side.Server)] private readonly SharedActionsSystem _sActionsSys = null!;
[SidedDependency(Side.Client)] private readonly SharedActionsSystem _cActionsSys = null!;
[Test] [Test]
public async Task TestActionDetach() public async Task TestActionDetach()
{ {
await using var pair = await PoolManager.GetServerClient(new PoolSettings { Connected = true }); var pair = Pair;
var (server, client) = pair; var (server, client) = (Server, Client);
var sys = server.System<SharedActionsSystem>(); var sys = _sActionsSys;
var cSys = client.System<SharedActionsSystem>(); var cSys = _cActionsSys;
// Spawn mob that has some actions // Spawn mob that has some actions
EntityUid ent = default; EntityUid ent = default;
@@ -60,6 +66,5 @@ public sealed class ActionPvsDetachTest
Assert.That(cSys.GetActions(cEnt).Count(), Is.EqualTo(initActions)); Assert.That(cSys.GetActions(cEnt).Count(), Is.EqualTo(initActions));
await server.WaitPost(() => server.EntMan.DeleteEntity(map.MapUid)); await server.WaitPost(() => server.EntMan.DeleteEntity(map.MapUid));
await pair.CleanReturnAsync();
} }
} }
@@ -1,4 +1,6 @@
#nullable enable
using System.Linq; using System.Linq;
using Content.IntegrationTests.Fixtures;
using Content.Shared.Actions; using Content.Shared.Actions;
using Content.Shared.Actions.Components; using Content.Shared.Actions.Components;
using Content.Shared.CombatMode; using Content.Shared.CombatMode;
@@ -11,15 +13,17 @@ namespace Content.IntegrationTests.Tests.Actions;
/// This tests checks that actions properly get added to an entity's actions component.. /// This tests checks that actions properly get added to an entity's actions component..
/// </summary> /// </summary>
[TestFixture] [TestFixture]
public sealed class ActionsAddedTest public sealed class ActionsAddedTest : GameTest
{ {
public override PoolSettings PoolSettings => new PoolSettings { Connected = true, DummyTicker = false };
// TODO add magboot test (inventory action) // TODO add magboot test (inventory action)
// TODO add ghost toggle-fov test (client-side action) // TODO add ghost toggle-fov test (client-side action)
[Test] [Test]
public async Task TestCombatActionsAdded() public async Task TestCombatActionsAdded()
{ {
await using var pair = await PoolManager.GetServerClient(new PoolSettings { Connected = true, DummyTicker = false }); var pair = Pair;
var server = pair.Server; var server = pair.Server;
var client = pair.Client; var client = pair.Client;
var sEntMan = server.ResolveDependency<IEntityManager>(); var sEntMan = server.ResolveDependency<IEntityManager>();
@@ -67,7 +71,5 @@ public sealed class ActionsAddedTest
// required, because integration tests do not respect the [NonSerialized] attribute and will simply events by reference. // required, because integration tests do not respect the [NonSerialized] attribute and will simply events by reference.
Assert.That(ReferenceEquals(sAct.Comp, cAct.Comp), Is.False); Assert.That(ReferenceEquals(sAct.Comp, cAct.Comp), Is.False);
Assert.That(ReferenceEquals(sQuery.GetComponent(sAct).Event, cQuery.GetComponent(cAct).Event), Is.False); Assert.That(ReferenceEquals(sQuery.GetComponent(sAct).Event, cQuery.GetComponent(cAct).Event), Is.False);
await pair.CleanReturnAsync();
} }
} }
@@ -1,5 +1,7 @@
using System.Collections.Generic; #nullable enable
using System.Collections.Generic;
using System.Linq; using System.Linq;
using Content.IntegrationTests.Fixtures;
using Content.Server.Administration.Logs; using Content.Server.Administration.Logs;
using Content.Server.Database; using Content.Server.Database;
using Content.Server.GameTicking; using Content.Server.GameTicking;
@@ -12,9 +14,9 @@ namespace Content.IntegrationTests.Tests.Administration.Logs;
[TestFixture] [TestFixture]
[TestOf(typeof(AdminLogSystem))] [TestOf(typeof(AdminLogSystem))]
public sealed class AddTests public sealed class AddTests : GameTest
{ {
public static PoolSettings LogTestSettings = new() public override PoolSettings PoolSettings => new()
{ {
AdminLogsEnabled = true, AdminLogsEnabled = true,
DummyTicker = false, DummyTicker = false,
@@ -24,7 +26,7 @@ public sealed class AddTests
[Test] [Test]
public async Task AddAndGetSingleLog() public async Task AddAndGetSingleLog()
{ {
await using var pair = await PoolManager.GetServerClient(LogTestSettings); var pair = Pair;
var server = pair.Server; var server = pair.Server;
var sEntities = server.ResolveDependency<IEntityManager>(); var sEntities = server.ResolveDependency<IEntityManager>();
@@ -33,7 +35,7 @@ public sealed class AddTests
var guid = Guid.NewGuid(); var guid = Guid.NewGuid();
await pair.CreateTestMap(); await pair.CreateTestMap();
var coordinates = pair.TestMap.GridCoords; var coordinates = pair.TestMap!.GridCoords;
await server.WaitPost(() => await server.WaitPost(() =>
{ {
var entity = sEntities.SpawnEntity(null, coordinates); var entity = sEntities.SpawnEntity(null, coordinates);
@@ -62,14 +64,12 @@ public sealed class AddTests
return false; return false;
}); });
await pair.CleanReturnAsync();
} }
[Test] [Test]
public async Task AddAndGetUnformattedLog() public async Task AddAndGetUnformattedLog()
{ {
await using var pair = await PoolManager.GetServerClient(LogTestSettings); var pair = Pair;
var server = pair.Server; var server = pair.Server;
var sDatabase = server.ResolveDependency<IServerDbManager>(); var sDatabase = server.ResolveDependency<IServerDbManager>();
@@ -127,15 +127,13 @@ public sealed class AddTests
json.Dispose(); json.Dispose();
} }
await pair.CleanReturnAsync();
} }
[Test] [Test]
[TestCase(500)] [TestCase(500)]
public async Task BulkAddLogs(int amount) public async Task BulkAddLogs(int amount)
{ {
await using var pair = await PoolManager.GetServerClient(LogTestSettings); var pair = Pair;
var server = pair.Server; var server = pair.Server;
var sEntities = server.ResolveDependency<IEntityManager>(); var sEntities = server.ResolveDependency<IEntityManager>();
@@ -158,14 +156,12 @@ public sealed class AddTests
var messages = await sAdminLogSystem.CurrentRoundLogs(); var messages = await sAdminLogSystem.CurrentRoundLogs();
return messages.Count >= amount; return messages.Count >= amount;
}); });
await pair.CleanReturnAsync();
} }
[Test] [Test]
public async Task AddPlayerSessionLog() public async Task AddPlayerSessionLog()
{ {
await using var pair = await PoolManager.GetServerClient(LogTestSettings); var pair = Pair;
var server = pair.Server; var server = pair.Server;
var sPlayers = server.ResolveDependency<IPlayerManager>(); var sPlayers = server.ResolveDependency<IPlayerManager>();
@@ -195,20 +191,91 @@ public sealed class AddTests
Assert.That(logs.First().Players, Does.Contain(playerGuid)); Assert.That(logs.First().Players, Does.Contain(playerGuid));
return true; return true;
}); });
await pair.CleanReturnAsync();
} }
[Test]
public async Task DuplicatePlayerDoesNotThrowTest()
{
var pair = Pair;
var server = pair.Server;
var sPlayers = server.ResolveDependency<IPlayerManager>();
var sAdminLogSystem = server.ResolveDependency<IAdminLogManager>();
var guid = Guid.NewGuid();
await server.WaitPost(() =>
{
var player = sPlayers.Sessions.Single();
sAdminLogSystem.Add(LogType.Unknown, $"{player} {player} test log: {guid}");
});
await PoolManager.WaitUntil(server, async () =>
{
var logs = await sAdminLogSystem.CurrentRoundLogs(new LogFilter
{
Search = guid.ToString()
});
if (logs.Count == 0)
{
return false;
}
return true;
});
}
[Test]
public async Task DuplicatePlayerIdDoesNotThrowTest()
{
var pair = Pair;
var server = pair.Server;
var sPlayers = server.ResolveDependency<IPlayerManager>();
var sAdminLogSystem = server.ResolveDependency<IAdminLogManager>();
var guid = Guid.NewGuid();
await server.WaitPost(() =>
{
var player = sPlayers.Sessions.Single();
sAdminLogSystem.Add(LogType.Unknown, $"{player:first} {player:second} test log: {guid}");
});
await PoolManager.WaitUntil(server, async () =>
{
var logs = await sAdminLogSystem.CurrentRoundLogs(new LogFilter
{
Search = guid.ToString()
});
if (logs.Count == 0)
{
return false;
}
return true;
});
}
}
public sealed class PreRoundAddTests : GameTest
{
public override PoolSettings PoolSettings => new PoolSettings
{
Dirty = true,
InLobby = true,
AdminLogsEnabled = true
};
[Test] [Test]
public async Task PreRoundAddAndGetSingle() public async Task PreRoundAddAndGetSingle()
{ {
var setting = new PoolSettings var pair = Pair;
{
Dirty = true,
InLobby = true,
AdminLogsEnabled = true
};
await using var pair = await PoolManager.GetServerClient(setting);
var server = pair.Server; var server = pair.Server;
var sDatabase = server.ResolveDependency<IServerDbManager>(); var sDatabase = server.ResolveDependency<IServerDbManager>();
@@ -262,81 +329,6 @@ public sealed class AddTests
json.Dispose(); json.Dispose();
} }
await pair.CleanReturnAsync();
} }
[Test]
public async Task DuplicatePlayerDoesNotThrowTest()
{
await using var pair = await PoolManager.GetServerClient(LogTestSettings);
var server = pair.Server;
var sPlayers = server.ResolveDependency<IPlayerManager>();
var sAdminLogSystem = server.ResolveDependency<IAdminLogManager>();
var guid = Guid.NewGuid();
await server.WaitPost(() =>
{
var player = sPlayers.Sessions.Single();
sAdminLogSystem.Add(LogType.Unknown, $"{player} {player} test log: {guid}");
});
await PoolManager.WaitUntil(server, async () =>
{
var logs = await sAdminLogSystem.CurrentRoundLogs(new LogFilter
{
Search = guid.ToString()
});
if (logs.Count == 0)
{
return false;
}
return true;
});
await pair.CleanReturnAsync();
Assert.Pass();
}
[Test]
public async Task DuplicatePlayerIdDoesNotThrowTest()
{
await using var pair = await PoolManager.GetServerClient(LogTestSettings);
var server = pair.Server;
var sPlayers = server.ResolveDependency<IPlayerManager>();
var sAdminLogSystem = server.ResolveDependency<IAdminLogManager>();
var guid = Guid.NewGuid();
await server.WaitPost(() =>
{
var player = sPlayers.Sessions.Single();
sAdminLogSystem.Add(LogType.Unknown, $"{player:first} {player:second} test log: {guid}");
});
await PoolManager.WaitUntil(server, async () =>
{
var logs = await sAdminLogSystem.CurrentRoundLogs(new LogFilter
{
Search = guid.ToString()
});
if (logs.Count == 0)
{
return false;
}
return true;
});
await pair.CleanReturnAsync();
Assert.Pass();
}
} }
@@ -1,3 +1,4 @@
using Content.IntegrationTests.Fixtures;
using Content.Server.Administration.Logs; using Content.Server.Administration.Logs;
using Content.Shared.Administration.Logs; using Content.Shared.Administration.Logs;
using Content.Shared.Database; using Content.Shared.Database;
@@ -7,14 +8,21 @@ namespace Content.IntegrationTests.Tests.Administration.Logs;
[TestFixture] [TestFixture]
[TestOf(typeof(AdminLogSystem))] [TestOf(typeof(AdminLogSystem))]
public sealed class FilterTests public sealed class FilterTests : GameTest
{ {
public override PoolSettings PoolSettings => new()
{
AdminLogsEnabled = true,
DummyTicker = false,
Connected = true
};
[Test] [Test]
[TestCase(DateOrder.Ascending)] [TestCase(DateOrder.Ascending)]
[TestCase(DateOrder.Descending)] [TestCase(DateOrder.Descending)]
public async Task Date(DateOrder order) public async Task Date(DateOrder order)
{ {
await using var pair = await PoolManager.GetServerClient(AddTests.LogTestSettings); var pair = Pair;
var server = pair.Server; var server = pair.Server;
var sEntities = server.ResolveDependency<IEntityManager>(); var sEntities = server.ResolveDependency<IEntityManager>();
@@ -96,6 +104,5 @@ public sealed class FilterTests
return firstFound && secondFound; return firstFound && secondFound;
}); });
await pair.CleanReturnAsync();
} }
} }
@@ -1,5 +1,6 @@
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq; using System.Linq;
using Content.IntegrationTests.Fixtures;
using Content.Server.Administration.Logs; using Content.Server.Administration.Logs;
using Content.Server.GameTicking; using Content.Server.GameTicking;
using Content.Shared.Database; using Content.Shared.Database;
@@ -11,12 +12,19 @@ namespace Content.IntegrationTests.Tests.Administration.Logs;
[TestFixture] [TestFixture]
[TestOf(typeof(AdminLogSystem))] [TestOf(typeof(AdminLogSystem))]
public sealed class QueryTests public sealed class QueryTests : GameTest
{ {
public override PoolSettings PoolSettings => new()
{
AdminLogsEnabled = true,
DummyTicker = false,
Connected = true
};
[Test] [Test]
public async Task QuerySingleLog() public async Task QuerySingleLog()
{ {
await using var pair = await PoolManager.GetServerClient(AddTests.LogTestSettings); var pair = Pair;
var server = pair.Server; var server = pair.Server;
var sSystems = server.ResolveDependency<IEntitySystemManager>(); var sSystems = server.ResolveDependency<IEntitySystemManager>();
@@ -55,7 +63,5 @@ public sealed class QueryTests
return false; return false;
}); });
await pair.CleanReturnAsync();
} }
} }
@@ -1,3 +1,4 @@
using Content.IntegrationTests.Fixtures;
using Content.Shared.Atmos.Monitor; using Content.Shared.Atmos.Monitor;
using Robust.Shared.Prototypes; using Robust.Shared.Prototypes;
@@ -5,7 +6,7 @@ namespace Content.IntegrationTests.Tests.Atmos
{ {
[TestFixture] [TestFixture]
[TestOf(typeof(AtmosAlarmThreshold))] [TestOf(typeof(AtmosAlarmThreshold))]
public sealed class AlarmThresholdTest public sealed class AlarmThresholdTest : GameTest
{ {
private const string AlarmThresholdTestDummyId = "AlarmThresholdTestDummy"; private const string AlarmThresholdTestDummyId = "AlarmThresholdTestDummy";
@@ -26,7 +27,7 @@ namespace Content.IntegrationTests.Tests.Atmos
[Test] [Test]
public async Task TestAlarmThreshold() public async Task TestAlarmThreshold()
{ {
await using var pair = await PoolManager.GetServerClient(); var pair = Pair;
var server = pair.Server; var server = pair.Server;
var prototypeManager = server.ResolveDependency<IPrototypeManager>(); var prototypeManager = server.ResolveDependency<IPrototypeManager>();
@@ -136,7 +137,6 @@ namespace Content.IntegrationTests.Tests.Atmos
Assert.That(alarmType, Is.EqualTo(AtmosAlarmType.Normal)); Assert.That(alarmType, Is.EqualTo(AtmosAlarmType.Normal));
} }
}); });
await pair.CleanReturnAsync();
} }
} }
} }
@@ -1,4 +1,5 @@
using System.Linq; using System.Linq;
using Content.IntegrationTests.Fixtures;
using Content.Server.Atmos.EntitySystems; using Content.Server.Atmos.EntitySystems;
using Content.Shared.Atmos; using Content.Shared.Atmos;
using Content.Shared.Atmos.Prototypes; using Content.Shared.Atmos.Prototypes;
@@ -6,12 +7,12 @@ using Content.Shared.Atmos.Prototypes;
namespace Content.IntegrationTests.Tests.Atmos; namespace Content.IntegrationTests.Tests.Atmos;
[TestOf(typeof(Atmospherics))] [TestOf(typeof(Atmospherics))]
public sealed class ConstantsTest public sealed class ConstantsTest : GameTest
{ {
[Test] [Test]
public async Task TotalGasesTest() public async Task TotalGasesTest()
{ {
await using var pair = await PoolManager.GetServerClient(); var pair = Pair;
var server = pair.Server; var server = pair.Server;
var entityManager = server.EntMan; var entityManager = server.EntMan;
var protoManager = server.ProtoMan; var protoManager = server.ProtoMan;
@@ -42,7 +43,6 @@ public sealed class ConstantsTest
} }
}); });
}); });
await pair.CleanReturnAsync();
} }
} }
@@ -1,4 +1,5 @@
using System.Linq; using System.Linq;
using Content.IntegrationTests.Fixtures;
using Content.Shared.Atmos; using Content.Shared.Atmos;
using Content.Shared.Atmos.Components; using Content.Shared.Atmos.Components;
using Robust.Shared.GameObjects; using Robust.Shared.GameObjects;
@@ -8,7 +9,7 @@ namespace Content.IntegrationTests.Tests.Atmos;
[TestFixture] [TestFixture]
[TestOf(typeof(Atmospherics))] [TestOf(typeof(Atmospherics))]
public sealed class GasArrayTest public sealed class GasArrayTest : GameTest
{ {
private const string GasTankTestDummyId = "GasTankTestDummy"; private const string GasTankTestDummyId = "GasTankTestDummy";
@@ -42,7 +43,7 @@ public sealed class GasArrayTest
[Test] [Test]
public async Task TestGasArrayDeserialization() public async Task TestGasArrayDeserialization()
{ {
await using var pair = await PoolManager.GetServerClient(); var pair = Pair;
var server = pair.Server; var server = pair.Server;
var compFactory = server.ResolveDependency<IComponentFactory>(); var compFactory = server.ResolveDependency<IComponentFactory>();
@@ -80,6 +81,5 @@ public sealed class GasArrayTest
} }
}); });
}); });
await pair.CleanReturnAsync();
} }
} }
@@ -1,4 +1,5 @@
using Content.Server.Atmos; using Content.IntegrationTests.Fixtures;
using Content.Server.Atmos;
using Content.Server.Atmos.EntitySystems; using Content.Server.Atmos.EntitySystems;
using Content.Shared.Atmos; using Content.Shared.Atmos;
using Robust.Shared.GameObjects; using Robust.Shared.GameObjects;
@@ -7,12 +8,12 @@ namespace Content.IntegrationTests.Tests.Atmos
{ {
[TestFixture] [TestFixture]
[TestOf(typeof(GasMixture))] [TestOf(typeof(GasMixture))]
public sealed class GasMixtureTest public sealed class GasMixtureTest : GameTest
{ {
[Test] [Test]
public async Task TestMerge() public async Task TestMerge()
{ {
await using var pair = await PoolManager.GetServerClient(); var pair = Pair;
var server = pair.Server; var server = pair.Server;
var atmosphereSystem = server.ResolveDependency<IEntitySystemManager>().GetEntitySystem<AtmosphereSystem>(); var atmosphereSystem = server.ResolveDependency<IEntitySystemManager>().GetEntitySystem<AtmosphereSystem>();
@@ -56,8 +57,6 @@ namespace Content.IntegrationTests.Tests.Atmos
Assert.That(a.GetMoles(Gas.Oxygen), Is.EqualTo(50)); Assert.That(a.GetMoles(Gas.Oxygen), Is.EqualTo(50));
}); });
}); });
await pair.CleanReturnAsync();
} }
[Test] [Test]
@@ -69,7 +68,7 @@ namespace Content.IntegrationTests.Tests.Atmos
[TestCase(Atmospherics.BreathPercentage)] [TestCase(Atmospherics.BreathPercentage)]
public async Task RemoveRatio(float ratio) public async Task RemoveRatio(float ratio)
{ {
await using var pair = await PoolManager.GetServerClient(); var pair = Pair;
var server = pair.Server; var server = pair.Server;
await server.WaitAssertion(() => await server.WaitAssertion(() =>
@@ -103,8 +102,6 @@ namespace Content.IntegrationTests.Tests.Atmos
Assert.That(a.GetMoles(Gas.Nitrogen), Is.EqualTo(100 - b.GetMoles(Gas.Nitrogen))); Assert.That(a.GetMoles(Gas.Nitrogen), Is.EqualTo(100 - b.GetMoles(Gas.Nitrogen)));
}); });
}); });
await pair.CleanReturnAsync();
} }
} }
} }
@@ -1,4 +1,5 @@
using Content.Server.Atmos.EntitySystems; using Content.Server.Atmos.EntitySystems;
using Content.IntegrationTests.Fixtures;
using Content.Server.Atmos.Piping.EntitySystems; using Content.Server.Atmos.Piping.EntitySystems;
using Content.Shared.Atmos.Components; using Content.Shared.Atmos.Components;
using Robust.Shared.GameObjects; using Robust.Shared.GameObjects;
@@ -6,14 +7,14 @@ using Robust.Shared.GameObjects;
namespace Content.IntegrationTests.Tests.Atmos; namespace Content.IntegrationTests.Tests.Atmos;
[TestFixture] [TestFixture]
public sealed class GridJoinTest public sealed class GridJoinTest : GameTest
{ {
private const string CanisterProtoId = "AirCanister"; private const string CanisterProtoId = "AirCanister";
[Test] [Test]
public async Task TestGridJoinAtmosphere() public async Task TestGridJoinAtmosphere()
{ {
await using var pair = await PoolManager.GetServerClient(); var pair = Pair;
var server = pair.Server; var server = pair.Server;
var entMan = server.EntMan; var entMan = server.EntMan;
@@ -46,7 +47,5 @@ public sealed class GridJoinTest
// Make sure that the canister is now properly tracked as on-grid // Make sure that the canister is now properly tracked as on-grid
Assert.That(atmosDeviceSystem.IsJoinedOffGrid(canisterEnt), Is.False); Assert.That(atmosDeviceSystem.IsJoinedOffGrid(canisterEnt), Is.False);
}); });
await pair.CleanReturnAsync();
} }
} }
@@ -37,7 +37,7 @@ public sealed class SharedGasSpecificHeatsTest
{ {
Connected = true, Connected = true,
}; };
_pair = await PoolManager.GetServerClient(poolSettings); _pair = await PoolManager.GetServerClient(poolSettings, new NUnitTestContextWrap(TestContext.CurrentContext, TestContext.Out));
_sEntMan = Server.ResolveDependency<IEntityManager>(); _sEntMan = Server.ResolveDependency<IEntityManager>();
_cEntMan = Client.ResolveDependency<IEntityManager>(); _cEntMan = Client.ResolveDependency<IEntityManager>();
@@ -1,3 +1,4 @@
using Content.IntegrationTests.Fixtures;
using Content.Shared.Body; using Content.Shared.Body;
using Content.Shared.Gibbing; using Content.Shared.Gibbing;
using Robust.Shared.GameObjects; using Robust.Shared.GameObjects;
@@ -6,7 +7,7 @@ namespace Content.IntegrationTests.Tests.Body;
[TestFixture] [TestFixture]
[TestOf(typeof(GibbableOrganSystem))] [TestOf(typeof(GibbableOrganSystem))]
public sealed class GibletTest public sealed class GibletTest : GameTest
{ {
[TestPrototypes] [TestPrototypes]
private const string Prototypes = @" private const string Prototypes = @"
@@ -33,7 +34,7 @@ public sealed class GibletTest
[Test] [Test]
public async Task GibletCountTest() public async Task GibletCountTest()
{ {
await using var pair = await PoolManager.GetServerClient(); var pair = Pair;
var server = pair.Server; var server = pair.Server;
await server.WaitIdleAsync(); await server.WaitIdleAsync();
@@ -54,7 +55,5 @@ public sealed class GibletTest
Assert.That(entityManager.HasComponent<GibbableOrganComponent>(giblet), Is.True); Assert.That(entityManager.HasComponent<GibbableOrganComponent>(giblet), Is.True);
} }
}); });
await pair.CleanReturnAsync();
} }
} }
@@ -1,5 +1,6 @@
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq; using System.Linq;
using Content.IntegrationTests.Fixtures;
using Content.Shared.Body; using Content.Shared.Body;
using Content.Shared.Hands.Components; using Content.Shared.Hands.Components;
using Robust.Shared.Containers; using Robust.Shared.Containers;
@@ -9,7 +10,7 @@ namespace Content.IntegrationTests.Tests.Body;
[TestFixture] [TestFixture]
[TestOf(typeof(HandOrganSystem))] [TestOf(typeof(HandOrganSystem))]
public sealed class HandOrganTest public sealed class HandOrganTest : GameTest
{ {
[TestPrototypes] [TestPrototypes]
private const string Prototypes = @" private const string Prototypes = @"
@@ -46,7 +47,7 @@ public sealed class HandOrganTest
[Test] [Test]
public async Task HandInsertionAndRemovalTest() public async Task HandInsertionAndRemovalTest()
{ {
await using var pair = await PoolManager.GetServerClient(); var pair = Pair;
var server = pair.Server; var server = pair.Server;
await server.WaitIdleAsync(); await server.WaitIdleAsync();
@@ -81,7 +82,5 @@ public sealed class HandOrganTest
Assert.That(hands.Count, Is.EqualTo(expectedCount)); Assert.That(hands.Count, Is.EqualTo(expectedCount));
} }
}); });
await pair.CleanReturnAsync();
} }
} }
@@ -12,7 +12,7 @@ public sealed partial class BuckleTest
[Test] [Test]
public async Task BuckleInteractUnbuckleOther() public async Task BuckleInteractUnbuckleOther()
{ {
await using var pair = await PoolManager.GetServerClient(); var pair = Pair;
var server = pair.Server; var server = pair.Server;
var entMan = server.ResolveDependency<IServerEntityManager>(); var entMan = server.ResolveDependency<IServerEntityManager>();
@@ -55,14 +55,12 @@ public sealed partial class BuckleTest
Assert.That(strap.BuckledEntities, Does.Not.Contain(victim)); Assert.That(strap.BuckledEntities, Does.Not.Contain(victim));
}); });
}); });
await pair.CleanReturnAsync();
} }
[Test] [Test]
public async Task BuckleInteractBuckleUnbuckleSelf() public async Task BuckleInteractBuckleUnbuckleSelf()
{ {
await using var pair = await PoolManager.GetServerClient(); var pair = Pair;
var server = pair.Server; var server = pair.Server;
var entMan = server.ResolveDependency<IServerEntityManager>(); var entMan = server.ResolveDependency<IServerEntityManager>();
@@ -102,7 +100,5 @@ public sealed partial class BuckleTest
Assert.That(strap.BuckledEntities, Does.Not.Contain(user)); Assert.That(strap.BuckledEntities, Does.Not.Contain(user));
}); });
}); });
await pair.CleanReturnAsync();
} }
} }
@@ -1,4 +1,5 @@
using System.Numerics; using System.Numerics;
using Content.IntegrationTests.Fixtures;
using Content.Shared.Buckle; using Content.Shared.Buckle;
using Content.Shared.ActionBlocker; using Content.Shared.ActionBlocker;
using Content.Shared.Buckle.Components; using Content.Shared.Buckle.Components;
@@ -12,7 +13,7 @@ namespace Content.IntegrationTests.Tests.Buckle
[TestFixture] [TestFixture]
[TestOf(typeof(BuckleComponent))] [TestOf(typeof(BuckleComponent))]
[TestOf(typeof(StrapComponent))] [TestOf(typeof(StrapComponent))]
public sealed partial class BuckleTest public sealed partial class BuckleTest : GameTest
{ {
private const string BuckleDummyId = "BuckleDummy"; private const string BuckleDummyId = "BuckleDummy";
private const string StrapDummyId = "StrapDummy"; private const string StrapDummyId = "StrapDummy";
@@ -50,7 +51,7 @@ namespace Content.IntegrationTests.Tests.Buckle
[Test] [Test]
public async Task BuckleUnbuckleCooldownRangeTest() public async Task BuckleUnbuckleCooldownRangeTest()
{ {
await using var pair = await PoolManager.GetServerClient(); var pair = Pair;
var server = pair.Server; var server = pair.Server;
var testMap = await pair.CreateTestMap(); var testMap = await pair.CreateTestMap();
@@ -228,14 +229,12 @@ namespace Content.IntegrationTests.Tests.Buckle
Assert.That(strap.BuckledEntities, Is.Empty); Assert.That(strap.BuckledEntities, Is.Empty);
}); });
}); });
await pair.CleanReturnAsync();
} }
[Test] [Test]
public async Task BuckledDyingDropItemsTest() public async Task BuckledDyingDropItemsTest()
{ {
await using var pair = await PoolManager.GetServerClient(); var pair = Pair;
var server = pair.Server; var server = pair.Server;
var testMap = await pair.CreateTestMap(); var testMap = await pair.CreateTestMap();
@@ -298,14 +297,12 @@ namespace Content.IntegrationTests.Tests.Buckle
buckleSystem.Unbuckle(human, human); buckleSystem.Unbuckle(human, human);
Assert.That(buckle.Buckled, Is.False); Assert.That(buckle.Buckled, Is.False);
}); });
await pair.CleanReturnAsync();
} }
[Test] [Test]
public async Task ForceUnbuckleBuckleTest() public async Task ForceUnbuckleBuckleTest()
{ {
await using var pair = await PoolManager.GetServerClient(); var pair = Pair;
var server = pair.Server; var server = pair.Server;
var testMap = await pair.CreateTestMap(); var testMap = await pair.CreateTestMap();
@@ -373,7 +370,6 @@ namespace Content.IntegrationTests.Tests.Buckle
Assert.That(buckle.Buckled); Assert.That(buckle.Buckled);
}); });
}); });
await pair.CleanReturnAsync();
} }
} }
} }
+8 -19
View File
@@ -1,6 +1,7 @@
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq; using System.Linq;
using System.Numerics; using System.Numerics;
using Content.IntegrationTests.Fixtures;
using Content.Server.Cargo.Components; using Content.Server.Cargo.Components;
using Content.Server.Cargo.Systems; using Content.Server.Cargo.Systems;
using Content.Server.Nutrition.Components; using Content.Server.Nutrition.Components;
@@ -17,7 +18,7 @@ using Robust.Shared.Prototypes;
namespace Content.IntegrationTests.Tests; namespace Content.IntegrationTests.Tests;
[TestFixture] [TestFixture]
public sealed class CargoTest public sealed class CargoTest : GameTest
{ {
private static readonly HashSet<ProtoId<CargoProductPrototype>> Ignored = private static readonly HashSet<ProtoId<CargoProductPrototype>> Ignored =
[ [
@@ -28,7 +29,7 @@ public sealed class CargoTest
[Test] [Test]
public async Task NoCargoOrderArbitrage() public async Task NoCargoOrderArbitrage()
{ {
await using var pair = await PoolManager.GetServerClient(); var pair = Pair;
var server = pair.Server; var server = pair.Server;
var testMap = await pair.CreateTestMap(); var testMap = await pair.CreateTestMap();
@@ -54,13 +55,11 @@ public sealed class CargoTest
} }
}); });
}); });
await pair.CleanReturnAsync();
} }
[Test] [Test]
public async Task NoCargoBountyArbitrageTest() public async Task NoCargoBountyArbitrageTest()
{ {
await using var pair = await PoolManager.GetServerClient(); var pair = Pair;
var server = pair.Server; var server = pair.Server;
var testMap = await pair.CreateTestMap(); var testMap = await pair.CreateTestMap();
@@ -94,14 +93,12 @@ public sealed class CargoTest
mapSystem.DeleteMap(mapId); mapSystem.DeleteMap(mapId);
}); });
await pair.CleanReturnAsync();
} }
[Test] [Test]
public async Task NoStaticPriceAndStackPrice() public async Task NoStaticPriceAndStackPrice()
{ {
await using var pair = await PoolManager.GetServerClient(); var pair = Pair;
var server = pair.Server; var server = pair.Server;
var protoManager = server.ProtoMan; var protoManager = server.ProtoMan;
@@ -133,8 +130,6 @@ public sealed class CargoTest
} }
} }
}); });
await pair.CleanReturnAsync();
} }
/// <summary> /// <summary>
@@ -144,7 +139,7 @@ public sealed class CargoTest
[Test] [Test]
public async Task NoSliceableBountyArbitrageTest() public async Task NoSliceableBountyArbitrageTest()
{ {
await using var pair = await PoolManager.GetServerClient(); var pair = Pair;
var server = pair.Server; var server = pair.Server;
var testMap = await pair.CreateTestMap(); var testMap = await pair.CreateTestMap();
@@ -209,8 +204,6 @@ public sealed class CargoTest
} }
mapSystem.DeleteMap(mapId); mapSystem.DeleteMap(mapId);
}); });
await pair.CleanReturnAsync();
} }
[TestPrototypes] [TestPrototypes]
@@ -233,7 +226,7 @@ public sealed class CargoTest
[Test] [Test]
public async Task StackPrice() public async Task StackPrice()
{ {
await using var pair = await PoolManager.GetServerClient(); var pair = Pair;
var server = pair.Server; var server = pair.Server;
var entManager = server.ResolveDependency<IEntityManager>(); var entManager = server.ResolveDependency<IEntityManager>();
@@ -245,14 +238,12 @@ public sealed class CargoTest
var price = priceSystem.GetPrice(ent); var price = priceSystem.GetPrice(ent);
Assert.That(price, Is.EqualTo(100.0)); Assert.That(price, Is.EqualTo(100.0));
}); });
await pair.CleanReturnAsync();
} }
[Test] [Test]
public async Task MobPrice() public async Task MobPrice()
{ {
await using var pair = await PoolManager.GetServerClient(); var pair = Pair;
var componentFactory = pair.Server.ResolveDependency<IComponentFactory>(); var componentFactory = pair.Server.ResolveDependency<IComponentFactory>();
@@ -266,7 +257,5 @@ public sealed class CargoTest
} }
}); });
}); });
await pair.CleanReturnAsync();
} }
} }
@@ -1,3 +1,4 @@
using Content.IntegrationTests.Fixtures;
using Content.IntegrationTests.Tests.Interaction; using Content.IntegrationTests.Tests.Interaction;
using Content.Shared.Chemistry.Reagent; using Content.Shared.Chemistry.Reagent;
using Robust.Shared.Reflection; using Robust.Shared.Reflection;
@@ -8,12 +9,12 @@ namespace Content.IntegrationTests.Tests.Chemistry;
[TestFixture] [TestFixture]
[TestOf(typeof(ReagentData))] [TestOf(typeof(ReagentData))]
public sealed class ReagentDataTest public sealed class ReagentDataTest : GameTest
{ {
[Test] [Test]
public async Task ReagentDataIsSerializable() public async Task ReagentDataIsSerializable()
{ {
await using var pair = await PoolManager.GetServerClient(); var pair = Pair;
var reflection = pair.Server.ResolveDependency<IReflectionManager>(); var reflection = pair.Server.ResolveDependency<IReflectionManager>();
Assert.Multiple(() => Assert.Multiple(() =>
@@ -24,7 +25,5 @@ public sealed class ReagentDataTest
Assert.That(instance.HasCustomAttribute<SerializableAttribute>(), $"{instance} must have the serializable attribute."); Assert.That(instance.HasCustomAttribute<SerializableAttribute>(), $"{instance} must have the serializable attribute.");
} }
}); });
await pair.CleanReturnAsync();
} }
} }
@@ -1,3 +1,4 @@
using Content.IntegrationTests.Fixtures;
using Content.Shared.Chemistry.Components; using Content.Shared.Chemistry.Components;
using Content.Shared.Chemistry.EntitySystems; using Content.Shared.Chemistry.EntitySystems;
using Content.Shared.Chemistry.Reaction; using Content.Shared.Chemistry.Reaction;
@@ -9,7 +10,7 @@ namespace Content.IntegrationTests.Tests.Chemistry;
[TestFixture] [TestFixture]
[TestOf(typeof(ChemicalReactionSystem))] [TestOf(typeof(ChemicalReactionSystem))]
public sealed class SolutionRoundingTest public sealed class SolutionRoundingTest : GameTest
{ {
// This test tests two things: // This test tests two things:
// * A rounding error in reaction code while I was making chloral hydrate // * A rounding error in reaction code while I was making chloral hydrate
@@ -72,7 +73,7 @@ public sealed class SolutionRoundingTest
[Test] [Test]
public async Task Test() public async Task Test()
{ {
await using var pair = await PoolManager.GetServerClient(); var pair = Pair;
var server = pair.Server; var server = pair.Server;
var testMap = await pair.CreateTestMap(); var testMap = await pair.CreateTestMap();
@@ -121,7 +122,5 @@ public sealed class SolutionRoundingTest
Is.EqualTo((FixedPoint2) 30)); Is.EqualTo((FixedPoint2) 30));
}); });
}); });
await pair.CleanReturnAsync();
} }
} }
@@ -1,3 +1,4 @@
using Content.IntegrationTests.Fixtures;
using Content.Shared.Chemistry.Components; using Content.Shared.Chemistry.Components;
using Content.Shared.Chemistry.EntitySystems; using Content.Shared.Chemistry.EntitySystems;
using Content.Shared.FixedPoint; using Content.Shared.FixedPoint;
@@ -12,7 +13,7 @@ namespace Content.IntegrationTests.Tests.Chemistry;
// reactions can change this assumption // reactions can change this assumption
[TestFixture] [TestFixture]
[TestOf(typeof(SharedSolutionContainerSystem))] [TestOf(typeof(SharedSolutionContainerSystem))]
public sealed class SolutionSystemTests public sealed class SolutionSystemTests : GameTest
{ {
[TestPrototypes] [TestPrototypes]
private const string Prototypes = @" private const string Prototypes = @"
@@ -53,7 +54,7 @@ public sealed class SolutionSystemTests
[Test] [Test]
public async Task TryAddTwoNonReactiveReagent() public async Task TryAddTwoNonReactiveReagent()
{ {
await using var pair = await PoolManager.GetServerClient(); var pair = Pair;
var server = pair.Server; var server = pair.Server;
var entityManager = server.ResolveDependency<IEntityManager>(); var entityManager = server.ResolveDependency<IEntityManager>();
@@ -88,8 +89,6 @@ public sealed class SolutionSystemTests
Assert.That(oil, Is.EqualTo(oilQuantity)); Assert.That(oil, Is.EqualTo(oilQuantity));
}); });
}); });
await pair.CleanReturnAsync();
} }
// This test mimics current behavior // This test mimics current behavior
@@ -97,7 +96,7 @@ public sealed class SolutionSystemTests
[Test] [Test]
public async Task TryAddTooMuchNonReactiveReagent() public async Task TryAddTooMuchNonReactiveReagent()
{ {
await using var pair = await PoolManager.GetServerClient(); var pair = Pair;
var server = pair.Server; var server = pair.Server;
var testMap = await pair.CreateTestMap(); var testMap = await pair.CreateTestMap();
@@ -133,15 +132,13 @@ public sealed class SolutionSystemTests
Assert.That(oil, Is.EqualTo(FixedPoint2.Zero)); Assert.That(oil, Is.EqualTo(FixedPoint2.Zero));
}); });
}); });
await pair.CleanReturnAsync();
} }
// Unlike TryAddSolution this adds and two solution without then splits leaving only threshold in original // Unlike TryAddSolution this adds and two solution without then splits leaving only threshold in original
[Test] [Test]
public async Task TryMixAndOverflowTooMuchReagent() public async Task TryMixAndOverflowTooMuchReagent()
{ {
await using var pair = await PoolManager.GetServerClient(); var pair = Pair;
var server = pair.Server; var server = pair.Server;
@@ -188,15 +185,13 @@ public sealed class SolutionSystemTests
Assert.That(oilOverFlow, Is.EqualTo(oilQuantity - oilMix)); Assert.That(oilOverFlow, Is.EqualTo(oilQuantity - oilMix));
}); });
}); });
await pair.CleanReturnAsync();
} }
// TryMixAndOverflow will fail if Threshold larger than MaxVolume // TryMixAndOverflow will fail if Threshold larger than MaxVolume
[Test] [Test]
public async Task TryMixAndOverflowTooBigOverflow() public async Task TryMixAndOverflowTooBigOverflow()
{ {
await using var pair = await PoolManager.GetServerClient(); var pair = Pair;
var server = pair.Server; var server = pair.Server;
var entityManager = server.ResolveDependency<IEntityManager>(); var entityManager = server.ResolveDependency<IEntityManager>();
@@ -226,14 +221,12 @@ public sealed class SolutionSystemTests
.TryMixAndOverflow(solutionEnt.Value, oilAdded, threshold, out _), .TryMixAndOverflow(solutionEnt.Value, oilAdded, threshold, out _),
Is.False); Is.False);
}); });
await pair.CleanReturnAsync();
} }
[Test] [Test]
public async Task TestTemperatureCalculations() public async Task TestTemperatureCalculations()
{ {
await using var pair = await PoolManager.GetServerClient(); var pair = Pair;
var server = pair.Server; var server = pair.Server;
var protoMan = server.ResolveDependency<IPrototypeManager>(); var protoMan = server.ResolveDependency<IPrototypeManager>();
const float temp = 100.0f; const float temp = 100.0f;
@@ -264,7 +257,5 @@ public sealed class SolutionSystemTests
solutionOne.AddSolution(solutionTwo, protoMan); solutionOne.AddSolution(solutionTwo, protoMan);
Assert.That(solutionOne.GetHeatCapacity(protoMan) * solutionOne.Temperature, Is.EqualTo(thermalEnergyOne + thermalEnergyTwo)); Assert.That(solutionOne.GetHeatCapacity(protoMan) * solutionOne.Temperature, Is.EqualTo(thermalEnergyOne + thermalEnergyTwo));
}); });
await pair.CleanReturnAsync();
} }
} }
@@ -5,6 +5,7 @@ using Robust.Shared.Map;
using Robust.Shared.Prototypes; using Robust.Shared.Prototypes;
using Robust.Shared.Utility; using Robust.Shared.Utility;
using System.Linq; using System.Linq;
using Content.IntegrationTests.Fixtures;
using Content.IntegrationTests.Utility; using Content.IntegrationTests.Utility;
using Content.Shared.Chemistry.EntitySystems; using Content.Shared.Chemistry.EntitySystems;
@@ -12,7 +13,7 @@ namespace Content.IntegrationTests.Tests.Chemistry
{ {
[TestFixture] [TestFixture]
[TestOf(typeof(ReactionPrototype))] [TestOf(typeof(ReactionPrototype))]
public sealed class TryAllReactionsTest public sealed class TryAllReactionsTest : GameTest
{ {
[TestPrototypes] [TestPrototypes]
private const string Prototypes = @" private const string Prototypes = @"
@@ -33,7 +34,7 @@ namespace Content.IntegrationTests.Tests.Chemistry
[Description("Tries an individual reaction to see if it succeeds.")] [Description("Tries an individual reaction to see if it succeeds.")]
public async Task TryReaction(string reaction) public async Task TryReaction(string reaction)
{ {
await using var pair = await PoolManager.GetServerClient(); var pair = Pair;
var server = pair.Server; var server = pair.Server;
var entityManager = server.ResolveDependency<IEntityManager>(); var entityManager = server.ResolveDependency<IEntityManager>();
@@ -134,8 +135,6 @@ namespace Content.IntegrationTests.Tests.Chemistry
server.EntMan.DeleteEntity(beaker); server.EntMan.DeleteEntity(beaker);
}); });
await pair.CleanReturnAsync();
} }
} }
} }
@@ -1,35 +1,37 @@
using System.Linq; using System.Linq;
using Content.IntegrationTests.Fixtures;
using Content.Server.Administration.UI; using Content.Server.Administration.UI;
using Content.Server.EUI; using Content.Server.EUI;
using Robust.Server.Player; using Robust.Server.Player;
namespace Content.IntegrationTests.Tests.Cleanup; namespace Content.IntegrationTests.Tests.Cleanup;
public sealed class EuiManagerTest public sealed class EuiManagerTest : GameTest
{ {
public override PoolSettings PoolSettings => new PoolSettings
{
Connected = true,
Dirty = true
};
[Test] [Test]
[Retry(2)]
// Even though we are using the server EUI here, we actually want to see if the client EUIManager crashes
public async Task EuiManagerRecycleWithOpenWindowTest() public async Task EuiManagerRecycleWithOpenWindowTest()
{ {
// Even though we are using the server EUI here, we actually want to see if the client EUIManager crashes var pair = Pair;
for (var i = 0; i < 2; i++) var server = pair.Server;
var sPlayerManager = server.ResolveDependency<IPlayerManager>();
var eui = server.ResolveDependency<EuiManager>();
await server.WaitAssertion(() =>
{ {
await using var pair = await PoolManager.GetServerClient(new PoolSettings var clientSession = sPlayerManager.Sessions.Single();
{ var ui = new AdminAnnounceEui();
Connected = true, eui.OpenEui(ui, clientSession);
Dirty = true });
});
var server = pair.Server;
var sPlayerManager = server.ResolveDependency<IPlayerManager>(); await RunUntilSynced();
var eui = server.ResolveDependency<EuiManager>();
await server.WaitAssertion(() =>
{
var clientSession = sPlayerManager.Sessions.Single();
var ui = new AdminAnnounceEui();
eui.OpenEui(ui, clientSession);
});
await pair.CleanReturnAsync();
}
} }
} }
@@ -1,5 +1,6 @@
using System.Numerics; using System.Numerics;
using Content.Client.Clickable; using Content.Client.Clickable;
using Content.IntegrationTests.Fixtures;
using Robust.Client.GameObjects; using Robust.Client.GameObjects;
using Robust.Client.Graphics; using Robust.Client.Graphics;
using Robust.Shared.GameObjects; using Robust.Shared.GameObjects;
@@ -7,7 +8,7 @@ using Robust.Shared.GameObjects;
namespace Content.IntegrationTests.Tests namespace Content.IntegrationTests.Tests
{ {
[TestFixture] [TestFixture]
public sealed class ClickableTest public sealed class ClickableTest : GameTest
{ {
private const double DirSouth = 0; private const double DirSouth = 0;
private const double DirNorth = Math.PI; private const double DirNorth = Math.PI;
@@ -44,7 +45,7 @@ namespace Content.IntegrationTests.Tests
[TestCase("ClickTestRotatingCornerInvisibleNoRot", 0.25f, 0.25f, DirSouthEastJustShy, 1, ExpectedResult = true)] [TestCase("ClickTestRotatingCornerInvisibleNoRot", 0.25f, 0.25f, DirSouthEastJustShy, 1, ExpectedResult = true)]
public async Task<bool> Test(string prototype, float clickPosX, float clickPosY, double angle, float scale) public async Task<bool> Test(string prototype, float clickPosX, float clickPosY, double angle, float scale)
{ {
await using var pair = await PoolManager.GetServerClient(new PoolSettings { Connected = true }); var pair = Pair;
var server = pair.Server; var server = pair.Server;
var client = pair.Client; var client = pair.Client;
@@ -66,7 +67,7 @@ namespace Content.IntegrationTests.Tests
}); });
// Let client sync up. // Let client sync up.
await pair.RunTicksSync(5); await RunUntilSynced();
var hit = false; var hit = false;
var clientEnt = clientEntManager.GetEntity(serverEntManager.GetNetEntity(serverEnt)); var clientEnt = clientEntManager.GetEntity(serverEntManager.GetNetEntity(serverEnt));
@@ -89,8 +90,6 @@ namespace Content.IntegrationTests.Tests
serverEntManager.DeleteEntity(serverEnt); serverEntManager.DeleteEntity(serverEnt);
}); });
await pair.CleanReturnAsync();
return hit; return hit;
} }
} }
@@ -1,8 +1,9 @@
using Content.IntegrationTests.Fixtures;
using Content.Shared.Cloning; using Content.Shared.Cloning;
namespace Content.IntegrationTests.Tests.Cloning; namespace Content.IntegrationTests.Tests.Cloning;
public sealed class CloningSettingsPrototypeTest public sealed class CloningSettingsPrototypeTest : GameTest
{ {
/// <summary> /// <summary>
/// Checks that the components named in every <see cref="CloningSettingsPrototype"/> are valid components known to the server. /// Checks that the components named in every <see cref="CloningSettingsPrototype"/> are valid components known to the server.
@@ -12,7 +13,7 @@ public sealed class CloningSettingsPrototypeTest
[Test] [Test]
public async Task ValidatePrototypes() public async Task ValidatePrototypes()
{ {
await using var pair = await PoolManager.GetServerClient(); var pair = Pair;
var server = pair.Server; var server = pair.Server;
var protoMan = server.ProtoMan; var protoMan = server.ProtoMan;
var compFactory = server.EntMan.ComponentFactory; var compFactory = server.EntMan.ComponentFactory;
@@ -40,7 +41,5 @@ public sealed class CloningSettingsPrototypeTest
} }
}); });
}); });
await pair.CleanReturnAsync();
} }
} }
@@ -1,3 +1,4 @@
using Content.IntegrationTests.Fixtures;
using Content.Server.Maps; using Content.Server.Maps;
using Content.Shared.CCVar; using Content.Shared.CCVar;
using Robust.Shared.Configuration; using Robust.Shared.Configuration;
@@ -6,7 +7,7 @@ using Robust.Shared.Console;
namespace Content.IntegrationTests.Tests.Commands; namespace Content.IntegrationTests.Tests.Commands;
[TestFixture] [TestFixture]
public sealed class ForceMapTest public sealed class ForceMapTest : GameTest
{ {
private const string DefaultMapName = "Empty"; 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 BadMapName = "asdf_asd-fa__sdfAsd_f"; // Hopefully no one ever names a map this...
@@ -44,7 +45,7 @@ public sealed class ForceMapTest
[Test] [Test]
public async Task TestForceMapCommand() public async Task TestForceMapCommand()
{ {
await using var pair = await PoolManager.GetServerClient(); var pair = Pair;
var server = pair.Server; var server = pair.Server;
var entMan = server.EntMan; var entMan = server.EntMan;
@@ -82,7 +83,5 @@ public sealed class ForceMapTest
// Cleanup // Cleanup
configManager.SetCVar(CCVars.GameMap, DefaultMapName); configManager.SetCVar(CCVars.GameMap, DefaultMapName);
await pair.CleanReturnAsync();
} }
} }
@@ -1,5 +1,6 @@
#nullable enable #nullable enable
using System.Linq; using System.Linq;
using Content.IntegrationTests.Fixtures;
using Content.Server.Objectives; using Content.Server.Objectives;
using Content.Shared.Mind; using Content.Shared.Mind;
using Robust.Shared.GameObjects; using Robust.Shared.GameObjects;
@@ -7,7 +8,7 @@ using Robust.Shared.Player;
namespace Content.IntegrationTests.Tests.Commands; namespace Content.IntegrationTests.Tests.Commands;
public sealed class ObjectiveCommandsTest public sealed class ObjectiveCommandsTest : GameTest
{ {
private const string ObjectiveProtoId = "MindCommandsTestObjective"; private const string ObjectiveProtoId = "MindCommandsTestObjective";
@@ -27,6 +28,11 @@ public sealed class ObjectiveCommandsTest
- type: DieCondition - type: DieCondition
"""; """;
public override PoolSettings PoolSettings => new ()
{
Connected = false
};
/// <summary> /// <summary>
/// Creates a dummy session, and assigns it a mind, then /// Creates a dummy session, and assigns it a mind, then
/// tests using <c>addobjective</c>, <c>lsobjectives</c>, /// tests using <c>addobjective</c>, <c>lsobjectives</c>,
@@ -35,7 +41,7 @@ public sealed class ObjectiveCommandsTest
[Test] [Test]
public async Task AddListRemoveObjectiveTest() public async Task AddListRemoveObjectiveTest()
{ {
await using var pair = await PoolManager.GetServerClient(); var pair = Pair;
var server = pair.Server; var server = pair.Server;
var entMan = server.EntMan; var entMan = server.EntMan;
var playerMan = server.ResolveDependency<ISharedPlayerManager>(); var playerMan = server.ResolveDependency<ISharedPlayerManager>();
@@ -66,7 +72,5 @@ public sealed class ObjectiveCommandsTest
await pair.WaitCommand($"rmobjective {playerSession.Name} 0"); await pair.WaitCommand($"rmobjective {playerSession.Name} 0");
Assert.That(mindComp.Objectives, Is.Empty, "rmobjective failed to remove objective"); Assert.That(mindComp.Objectives, Is.Empty, "rmobjective failed to remove objective");
await pair.CleanReturnAsync();
} }
} }
@@ -1,4 +1,5 @@
using System.Linq; using System.Linq;
using Content.IntegrationTests.Fixtures;
using Content.Server.Database; using Content.Server.Database;
using Robust.Server.Console; using Robust.Server.Console;
using Robust.Server.Player; using Robust.Server.Player;
@@ -8,14 +9,14 @@ namespace Content.IntegrationTests.Tests.Commands
{ {
[TestFixture] [TestFixture]
[TestOf(typeof(PardonCommand))] [TestOf(typeof(PardonCommand))]
public sealed class PardonCommand public sealed class PardonCommand : GameTest
{ {
private static readonly TimeSpan MarginOfError = TimeSpan.FromMinutes(1); private static readonly TimeSpan MarginOfError = TimeSpan.FromMinutes(1);
[Test] [Test]
public async Task PardonTest() public async Task PardonTest()
{ {
await using var pair = await PoolManager.GetServerClient(new PoolSettings { Connected = true }); var pair = Pair;
var server = pair.Server; var server = pair.Server;
var client = pair.Client; var client = pair.Client;
@@ -148,8 +149,6 @@ namespace Content.IntegrationTests.Tests.Commands
await client.WaitPost(() => netMan.ClientConnect(null!, 0, null!)); await client.WaitPost(() => netMan.ClientConnect(null!, 0, null!));
await pair.RunTicksSync(5); await pair.RunTicksSync(5);
Assert.That(sPlayerManager.Sessions, Has.Length.EqualTo(1)); Assert.That(sPlayerManager.Sessions, Has.Length.EqualTo(1));
await pair.CleanReturnAsync();
} }
} }
} }
@@ -1,4 +1,5 @@
using Content.Shared.Administration.Systems; using Content.IntegrationTests.Fixtures;
using Content.Shared.Administration.Systems;
using Content.Shared.Damage; using Content.Shared.Damage;
using Content.Shared.Damage.Components; using Content.Shared.Damage.Components;
using Content.Shared.Damage.Prototypes; using Content.Shared.Damage.Prototypes;
@@ -14,7 +15,7 @@ namespace Content.IntegrationTests.Tests.Commands
{ {
[TestFixture] [TestFixture]
[TestOf(typeof(RejuvenateSystem))] [TestOf(typeof(RejuvenateSystem))]
public sealed class RejuvenateTest public sealed class RejuvenateTest : GameTest
{ {
private static readonly ProtoId<DamageGroupPrototype> TestDamageGroup = "Toxin"; private static readonly ProtoId<DamageGroupPrototype> TestDamageGroup = "Toxin";
@@ -36,7 +37,7 @@ namespace Content.IntegrationTests.Tests.Commands
[Test] [Test]
public async Task RejuvenateDeadTest() public async Task RejuvenateDeadTest()
{ {
await using var pair = await PoolManager.GetServerClient(); var pair = Pair;
var server = pair.Server; var server = pair.Server;
var entManager = server.ResolveDependency<IEntityManager>(); var entManager = server.ResolveDependency<IEntityManager>();
var prototypeManager = server.ResolveDependency<IPrototypeManager>(); var prototypeManager = server.ResolveDependency<IPrototypeManager>();
@@ -92,7 +93,6 @@ namespace Content.IntegrationTests.Tests.Commands
Assert.That(damSystem.GetTotalDamage((human, damageable)), Is.EqualTo(FixedPoint2.Zero)); Assert.That(damSystem.GetTotalDamage((human, damageable)), Is.EqualTo(FixedPoint2.Zero));
}); });
}); });
await pair.CleanReturnAsync();
} }
} }
} }
@@ -1,3 +1,4 @@
using Content.IntegrationTests.Fixtures;
using Content.Server.GameTicking; using Content.Server.GameTicking;
using Content.Server.GameTicking.Commands; using Content.Server.GameTicking.Commands;
using Content.Shared.CCVar; using Content.Shared.CCVar;
@@ -10,25 +11,27 @@ namespace Content.IntegrationTests.Tests.Commands
{ {
[TestFixture] [TestFixture]
[TestOf(typeof(RestartRoundNowCommand))] [TestOf(typeof(RestartRoundNowCommand))]
public sealed class RestartRoundNowTest public sealed class RestartRoundNowTest : GameTest
{ {
public override PoolSettings PoolSettings => new PoolSettings
{
DummyTicker = false,
Dirty = true
};
[Test] [Test]
[TestCase(true)] [TestCase(true)]
[TestCase(false)] [TestCase(false)]
public async Task RestartRoundAfterStart(bool lobbyEnabled) public async Task RestartRoundAfterStart(bool lobbyEnabled)
{ {
await using var pair = await PoolManager.GetServerClient(new PoolSettings var pair = Pair;
{
DummyTicker = false,
Dirty = true
});
var server = pair.Server; var server = pair.Server;
var configManager = server.ResolveDependency<IConfigurationManager>(); var configManager = server.ResolveDependency<IConfigurationManager>();
var entityManager = server.ResolveDependency<IEntityManager>(); var entityManager = server.ResolveDependency<IEntityManager>();
var gameTicker = entityManager.System<GameTicker>(); var gameTicker = entityManager.System<GameTicker>();
await pair.RunTicksSync(5); await pair.RunUntilSynced();
GameTick tickBeforeRestart = default; GameTick tickBeforeRestart = default;
@@ -58,8 +61,7 @@ namespace Content.IntegrationTests.Tests.Commands
Assert.That(tickBeforeRestart, Is.LessThan(tickAfterRestart)); Assert.That(tickBeforeRestart, Is.LessThan(tickAfterRestart));
}); });
await pair.RunTicksSync(5); await pair.RunUntilSynced();
await pair.CleanReturnAsync();
} }
} }
} }
@@ -1,4 +1,5 @@
using System.Linq; using System.Linq;
using Content.IntegrationTests.Fixtures;
using Content.Shared.Damage; using Content.Shared.Damage;
using Content.Shared.Damage.Components; using Content.Shared.Damage.Components;
using Content.Shared.Damage.Prototypes; using Content.Shared.Damage.Prototypes;
@@ -21,7 +22,7 @@ using Robust.Shared.Prototypes;
namespace Content.IntegrationTests.Tests.Commands; namespace Content.IntegrationTests.Tests.Commands;
[TestFixture] [TestFixture]
public sealed class SuicideCommandTests public sealed class SuicideCommandTests : GameTest
{ {
[TestPrototypes] [TestPrototypes]
@@ -57,6 +58,13 @@ public sealed class SuicideCommandTests
private static readonly ProtoId<TagPrototype> CannotSuicideTag = "CannotSuicide"; private static readonly ProtoId<TagPrototype> CannotSuicideTag = "CannotSuicide";
private static readonly ProtoId<DamageTypePrototype> DamageType = "Slash"; private static readonly ProtoId<DamageTypePrototype> DamageType = "Slash";
public override PoolSettings PoolSettings => new PoolSettings
{
Connected = true,
Dirty = true,
DummyTicker = false
};
/// <summary> /// <summary>
/// Run the suicide command in the console /// Run the suicide command in the console
/// Should successfully kill the player and ghost them /// Should successfully kill the player and ghost them
@@ -64,12 +72,7 @@ public sealed class SuicideCommandTests
[Test] [Test]
public async Task TestSuicide() public async Task TestSuicide()
{ {
await using var pair = await PoolManager.GetServerClient(new PoolSettings var pair = Pair;
{
Connected = true,
Dirty = true,
DummyTicker = false
});
var server = pair.Server; var server = pair.Server;
var consoleHost = server.ResolveDependency<IConsoleHost>(); var consoleHost = server.ResolveDependency<IConsoleHost>();
var entManager = server.ResolveDependency<IEntityManager>(); var entManager = server.ResolveDependency<IEntityManager>();
@@ -104,8 +107,6 @@ public sealed class SuicideCommandTests
!ghostComp.CanReturnToBody); !ghostComp.CanReturnToBody);
}); });
}); });
await pair.CleanReturnAsync();
} }
/// <summary> /// <summary>
@@ -115,12 +116,7 @@ public sealed class SuicideCommandTests
[Test] [Test]
public async Task TestSuicideWhileDamaged() public async Task TestSuicideWhileDamaged()
{ {
await using var pair = await PoolManager.GetServerClient(new PoolSettings var pair = Pair;
{
Connected = true,
Dirty = true,
DummyTicker = false
});
var server = pair.Server; var server = pair.Server;
var consoleHost = server.ResolveDependency<IConsoleHost>(); var consoleHost = server.ResolveDependency<IConsoleHost>();
var entManager = server.ResolveDependency<IEntityManager>(); var entManager = server.ResolveDependency<IEntityManager>();
@@ -166,8 +162,6 @@ public sealed class SuicideCommandTests
Assert.That(damageableSystem.GetTotalDamage(player), Is.EqualTo(lethalDamageThreshold)); Assert.That(damageableSystem.GetTotalDamage(player), Is.EqualTo(lethalDamageThreshold));
}); });
}); });
await pair.CleanReturnAsync();
} }
/// <summary> /// <summary>
@@ -177,12 +171,7 @@ public sealed class SuicideCommandTests
[Test] [Test]
public async Task TestSuicideWhenCannotSuicide() public async Task TestSuicideWhenCannotSuicide()
{ {
await using var pair = await PoolManager.GetServerClient(new PoolSettings var pair = Pair;
{
Connected = true,
Dirty = true,
DummyTicker = false
});
var server = pair.Server; var server = pair.Server;
var consoleHost = server.ResolveDependency<IConsoleHost>(); var consoleHost = server.ResolveDependency<IConsoleHost>();
var entManager = server.ResolveDependency<IEntityManager>(); var entManager = server.ResolveDependency<IEntityManager>();
@@ -217,8 +206,6 @@ public sealed class SuicideCommandTests
!ghostComp.CanReturnToBody); !ghostComp.CanReturnToBody);
}); });
}); });
await pair.CleanReturnAsync();
} }
@@ -228,12 +215,7 @@ public sealed class SuicideCommandTests
[Test] [Test]
public async Task TestSuicideByHeldItem() public async Task TestSuicideByHeldItem()
{ {
await using var pair = await PoolManager.GetServerClient(new PoolSettings var pair = Pair;
{
Connected = true,
Dirty = true,
DummyTicker = false
});
var server = pair.Server; var server = pair.Server;
var consoleHost = server.ResolveDependency<IConsoleHost>(); var consoleHost = server.ResolveDependency<IConsoleHost>();
var entManager = server.ResolveDependency<IEntityManager>(); var entManager = server.ResolveDependency<IEntityManager>();
@@ -292,8 +274,6 @@ public sealed class SuicideCommandTests
Assert.That(damageableSystem.GetAllDamage((player, damageableComp)).DamageDict["Slash"], Is.EqualTo(lethalDamageThreshold)); Assert.That(damageableSystem.GetAllDamage((player, damageableComp)).DamageDict["Slash"], Is.EqualTo(lethalDamageThreshold));
}); });
}); });
await pair.CleanReturnAsync();
} }
/// <summary> /// <summary>
@@ -303,12 +283,7 @@ public sealed class SuicideCommandTests
[Test] [Test]
public async Task TestSuicideByHeldItemSpreadDamage() public async Task TestSuicideByHeldItemSpreadDamage()
{ {
await using var pair = await PoolManager.GetServerClient(new PoolSettings var pair = Pair;
{
Connected = true,
Dirty = true,
DummyTicker = false
});
var server = pair.Server; var server = pair.Server;
var consoleHost = server.ResolveDependency<IConsoleHost>(); var consoleHost = server.ResolveDependency<IConsoleHost>();
var entManager = server.ResolveDependency<IEntityManager>(); var entManager = server.ResolveDependency<IEntityManager>();
@@ -367,7 +342,5 @@ public sealed class SuicideCommandTests
Assert.That(damageableSystem.GetAllDamage((player, damageableComp)).DamageDict["Slash"], Is.EqualTo(lethalDamageThreshold / 2)); Assert.That(damageableSystem.GetAllDamage((player, damageableComp)).DamageDict["Slash"], Is.EqualTo(lethalDamageThreshold / 2));
}); });
}); });
await pair.CleanReturnAsync();
} }
} }
@@ -1,5 +1,6 @@
using System.Collections.Generic; using System.Collections.Generic;
using System.IO; using System.IO;
using Content.IntegrationTests.Fixtures;
using Content.Server.Entry; using Content.Server.Entry;
using Robust.Shared.Configuration; using Robust.Shared.Configuration;
using Robust.Shared.ContentPack; using Robust.Shared.ContentPack;
@@ -7,12 +8,12 @@ using Robust.Shared.ContentPack;
namespace Content.IntegrationTests.Tests; namespace Content.IntegrationTests.Tests;
[TestFixture] [TestFixture]
public sealed class ConfigPresetTests public sealed class ConfigPresetTests : GameTest
{ {
[Test] [Test]
public async Task TestLoadAll() public async Task TestLoadAll()
{ {
var pair = await PoolManager.GetServerClient(); var pair = Pair;
var server = pair.Server; var server = pair.Server;
var resources = server.ResolveDependency<IResourceManager>(); var resources = server.ResolveDependency<IResourceManager>();
@@ -70,7 +71,5 @@ public sealed class ConfigPresetTests
Assert.Fail($"CVar {name} was not reset to its original value."); Assert.Fail($"CVar {name} was not reset to its original value.");
} }
}); });
await pair.CleanReturnAsync();
} }
} }
@@ -1,4 +1,5 @@
using System.Text; using System.Text;
using Content.IntegrationTests.Fixtures;
using Content.Server.Construction.Completions; using Content.Server.Construction.Completions;
using Content.Shared.Construction; using Content.Shared.Construction;
using Content.Shared.Construction.Prototypes; using Content.Shared.Construction.Prototypes;
@@ -7,7 +8,7 @@ using Robust.Shared.Prototypes;
namespace Content.IntegrationTests.Tests.Construction namespace Content.IntegrationTests.Tests.Construction
{ {
[TestFixture] [TestFixture]
public sealed class ConstructionActionValid public sealed class ConstructionActionValid : GameTest
{ {
private bool IsValid(IGraphAction action, IPrototypeManager protoMan, out string prototype) private bool IsValid(IGraphAction action, IPrototypeManager protoMan, out string prototype)
{ {
@@ -47,7 +48,7 @@ namespace Content.IntegrationTests.Tests.Construction
[Test] [Test]
public async Task ConstructionGraphSpawnPrototypeValid() public async Task ConstructionGraphSpawnPrototypeValid()
{ {
await using var pair = await PoolManager.GetServerClient(); var pair = Pair;
var server = pair.Server; var server = pair.Server;
var protoMan = server.ResolveDependency<IPrototypeManager>(); var protoMan = server.ResolveDependency<IPrototypeManager>();
@@ -84,13 +85,12 @@ namespace Content.IntegrationTests.Tests.Construction
}); });
Assert.That(valid, Is.True, $"One or more SpawnPrototype actions specified invalid entity prototypes!\n{message}"); Assert.That(valid, Is.True, $"One or more SpawnPrototype actions specified invalid entity prototypes!\n{message}");
await pair.CleanReturnAsync();
} }
[Test] [Test]
public async Task ConstructionGraphEdgeValid() public async Task ConstructionGraphEdgeValid()
{ {
await using var pair = await PoolManager.GetServerClient(); var pair = Pair;
var server = pair.Server; var server = pair.Server;
var protoMan = server.ResolveDependency<IPrototypeManager>(); var protoMan = server.ResolveDependency<IPrototypeManager>();
@@ -118,7 +118,6 @@ namespace Content.IntegrationTests.Tests.Construction
}); });
Assert.That(valid, Is.True, $"One or more edges specified invalid node targets!\n{message}"); Assert.That(valid, Is.True, $"One or more edges specified invalid node targets!\n{message}");
await pair.CleanReturnAsync();
} }
} }
} }
@@ -1,3 +1,4 @@
using Content.IntegrationTests.Fixtures;
using Content.IntegrationTests.Utility; using Content.IntegrationTests.Utility;
using Content.Server.Construction.Components; using Content.Server.Construction.Components;
using Content.Shared.Construction.Prototypes; using Content.Shared.Construction.Prototypes;
@@ -7,7 +8,7 @@ using Robust.Shared.Prototypes;
namespace Content.IntegrationTests.Tests.Construction namespace Content.IntegrationTests.Tests.Construction
{ {
[TestFixture] [TestFixture]
public sealed class ConstructionPrototypeTest public sealed class ConstructionPrototypeTest : GameTest
{ {
// discount linter for construction graphs // discount linter for construction graphs
// TODO: Create serialization validators for these? // TODO: Create serialization validators for these?
@@ -25,7 +26,7 @@ namespace Content.IntegrationTests.Tests.Construction
[Description("Tests that a given entity specifies a valid node for construction, and optionally a valid one for deconstruction.")] [Description("Tests that a given entity specifies a valid node for construction, and optionally a valid one for deconstruction.")]
public async Task ConstructionComponentValid(string protoKey) public async Task ConstructionComponentValid(string protoKey)
{ {
await using var pair = await PoolManager.GetServerClient(); var pair = Pair;
var server = pair.Server; var server = pair.Server;
var protoMan = server.ResolveDependency<IPrototypeManager>(); var protoMan = server.ResolveDependency<IPrototypeManager>();
@@ -49,8 +50,6 @@ namespace Content.IntegrationTests.Tests.Construction
$"Invalid deconstruction node \"{target}\" on graph \"{graph.ID}\" for construction entity \"{proto.ID}\"!"); $"Invalid deconstruction node \"{target}\" on graph \"{graph.ID}\" for construction entity \"{proto.ID}\"!");
} }
}); });
await pair.CleanReturnAsync();
} }
[Test] [Test]
@@ -59,7 +58,7 @@ namespace Content.IntegrationTests.Tests.Construction
[Description("Tests that a given construction prototype has a valid starting and target node, and a valid path between them.")] [Description("Tests that a given construction prototype has a valid starting and target node, and a valid path between them.")]
public async Task ConstructionFormsValidGraph(string protoKey) public async Task ConstructionFormsValidGraph(string protoKey)
{ {
await using var pair = await PoolManager.GetServerClient(); var pair = Pair;
var server = pair.Server; var server = pair.Server;
var protoMan = server.ResolveDependency<IPrototypeManager>(); var protoMan = server.ResolveDependency<IPrototypeManager>();
@@ -95,7 +94,6 @@ namespace Content.IntegrationTests.Tests.Construction
$"The next node ({next.Name}) in the path from the start node ({start}) to the target node ({target}) specified an entity prototype ({next.Entity}) without a ConstructionComponent."); $"The next node ({next.Name}) in the path from the start node ({start}) to the target node ({target}) specified an entity prototype ({next.Entity}) without a ConstructionComponent.");
#pragma warning restore NUnit2045 #pragma warning restore NUnit2045
}); });
await pair.CleanReturnAsync();
} }
} }
} }
@@ -1,4 +1,5 @@
using System.Numerics; using System.Numerics;
using Content.IntegrationTests.Fixtures;
using Content.Server.Storage.EntitySystems; using Content.Server.Storage.EntitySystems;
using Robust.Client.GameObjects; using Robust.Client.GameObjects;
using Robust.Shared.GameObjects; using Robust.Shared.GameObjects;
@@ -7,7 +8,7 @@ using Robust.Shared.Maths;
namespace Content.IntegrationTests.Tests namespace Content.IntegrationTests.Tests
{ {
public sealed class ContainerOcclusionTest public sealed class ContainerOcclusionTest : GameTest
{ {
[TestPrototypes] [TestPrototypes]
private const string Prototypes = @" private const string Prototypes = @"
@@ -34,7 +35,7 @@ namespace Content.IntegrationTests.Tests
[Test] [Test]
public async Task TestA() public async Task TestA()
{ {
await using var pair = await PoolManager.GetServerClient(new PoolSettings { Connected = true }); var pair = Pair;
var server = pair.Server; var server = pair.Server;
var client = pair.Client; var client = pair.Client;
@@ -69,14 +70,12 @@ namespace Content.IntegrationTests.Tests
Assert.That(light.ContainerOccluded); Assert.That(light.ContainerOccluded);
}); });
}); });
await pair.CleanReturnAsync();
} }
[Test] [Test]
public async Task TestB() public async Task TestB()
{ {
await using var pair = await PoolManager.GetServerClient(new PoolSettings { Connected = true }); var pair = Pair;
var server = pair.Server; var server = pair.Server;
var client = pair.Client; var client = pair.Client;
@@ -112,14 +111,12 @@ namespace Content.IntegrationTests.Tests
Assert.That(light.ContainerOccluded, Is.False); Assert.That(light.ContainerOccluded, Is.False);
}); });
}); });
await pair.CleanReturnAsync();
} }
[Test] [Test]
public async Task TestAb() public async Task TestAb()
{ {
await using var pair = await PoolManager.GetServerClient(new PoolSettings { Connected = true }); var pair = Pair;
var server = pair.Server; var server = pair.Server;
var client = pair.Client; var client = pair.Client;
@@ -157,8 +154,6 @@ namespace Content.IntegrationTests.Tests
Assert.That(light.ContainerOccluded); Assert.That(light.ContainerOccluded);
}); });
}); });
await pair.CleanReturnAsync();
} }
} }
} }
@@ -1,3 +1,4 @@
using Content.IntegrationTests.Fixtures;
using Content.Shared.Contraband; using Content.Shared.Contraband;
using Robust.Shared.GameObjects; using Robust.Shared.GameObjects;
using Robust.Shared.Prototypes; using Robust.Shared.Prototypes;
@@ -5,12 +6,12 @@ using Robust.Shared.Prototypes;
namespace Content.IntegrationTests.Tests; namespace Content.IntegrationTests.Tests;
[TestFixture] [TestFixture]
public sealed class ContrabandTest public sealed class ContrabandTest : GameTest
{ {
[Test] [Test]
public async Task EntityShowDepartmentsAndJobs() public async Task EntityShowDepartmentsAndJobs()
{ {
await using var pair = await PoolManager.GetServerClient(); var pair = Pair;
var client = pair.Client; var client = pair.Client;
var protoMan = client.ResolveDependency<IPrototypeManager>(); var protoMan = client.ResolveDependency<IPrototypeManager>();
var componentFactory = client.ResolveDependency<IComponentFactory>(); var componentFactory = client.ResolveDependency<IComponentFactory>();
@@ -41,7 +42,5 @@ public sealed class ContrabandTest
} }
}); });
}); });
await pair.CleanReturnAsync();
} }
} }
@@ -1,3 +1,4 @@
using Content.IntegrationTests.Fixtures;
using Content.Shared.Damage; using Content.Shared.Damage;
using Content.Shared.Damage.Components; using Content.Shared.Damage.Components;
using Content.Shared.Damage.Prototypes; using Content.Shared.Damage.Prototypes;
@@ -12,7 +13,7 @@ namespace Content.IntegrationTests.Tests.Damageable
[TestFixture] [TestFixture]
[TestOf(typeof(DamageableComponent))] [TestOf(typeof(DamageableComponent))]
[TestOf(typeof(DamageableSystem))] [TestOf(typeof(DamageableSystem))]
public sealed class DamageableTest public sealed class DamageableTest : GameTest
{ {
private const string TestDamageableEntityId = "TestDamageableEntityId"; private const string TestDamageableEntityId = "TestDamageableEntityId";
private const string TestGroup1 = "TestGroup1"; private const string TestGroup1 = "TestGroup1";
@@ -95,7 +96,7 @@ namespace Content.IntegrationTests.Tests.Damageable
[Test] [Test]
public async Task TestDamageableComponents() public async Task TestDamageableComponents()
{ {
await using var pair = await PoolManager.GetServerClient(); var pair = Pair;
var server = pair.Server; var server = pair.Server;
var sEntityManager = server.ResolveDependency<IEntityManager>(); var sEntityManager = server.ResolveDependency<IEntityManager>();
@@ -254,7 +255,6 @@ namespace Content.IntegrationTests.Tests.Damageable
sDamageableSystem.ChangeDamage(uid, new DamageSpecifier(group3, -100)); sDamageableSystem.ChangeDamage(uid, new DamageSpecifier(group3, -100));
Assert.That(sDamageableSystem.GetTotalDamage(ent), Is.EqualTo(FixedPoint2.Zero)); Assert.That(sDamageableSystem.GetTotalDamage(ent), Is.EqualTo(FixedPoint2.Zero));
}); });
await pair.CleanReturnAsync();
} }
} }
} }
@@ -1,10 +1,11 @@
using Content.IntegrationTests.Fixtures;
using Content.IntegrationTests.Utility; using Content.IntegrationTests.Utility;
using Content.Shared.Alert; using Content.Shared.Alert;
using Content.Shared.Mobs.Components; using Content.Shared.Mobs.Components;
namespace Content.IntegrationTests.Tests.Damageable; namespace Content.IntegrationTests.Tests.Damageable;
public sealed class MobThresholdsTest public sealed class MobThresholdsTest : GameTest
{ {
private static string[] _entitiesWithThresholds = GameDataScrounger.EntitiesWithComponent("MobThresholds"); private static string[] _entitiesWithThresholds = GameDataScrounger.EntitiesWithComponent("MobThresholds");
@@ -14,7 +15,7 @@ public sealed class MobThresholdsTest
[Description("Ensures every entity with mob thresholds has valid mob state configuration corresponding to some AlertPrototype.")] [Description("Ensures every entity with mob thresholds has valid mob state configuration corresponding to some AlertPrototype.")]
public async Task ValidateMobThresholds(string protoKey) public async Task ValidateMobThresholds(string protoKey)
{ {
await using var pair = await PoolManager.GetServerClient(); var pair = Pair;
var server = pair.Server; var server = pair.Server;
var protoMan = server.ProtoMan; var protoMan = server.ProtoMan;
@@ -33,7 +34,5 @@ public sealed class MobThresholdsTest
Assert.That(alertStates, Does.Contain(state), $"{proto.ID} does not have an alert state for mob state {state}"); Assert.That(alertStates, Does.Contain(state), $"{proto.ID} does not have an alert state for mob state {state}");
} }
}); });
await pair.CleanReturnAsync();
} }
} }
@@ -1,11 +1,12 @@
using System.Linq; using System.Linq;
using Content.IntegrationTests.Fixtures;
using Content.IntegrationTests.Utility; using Content.IntegrationTests.Utility;
using Content.Shared.Damage.Components; using Content.Shared.Damage.Components;
using Content.Shared.FixedPoint; using Content.Shared.FixedPoint;
namespace Content.IntegrationTests.Tests.Damageable; namespace Content.IntegrationTests.Tests.Damageable;
public sealed class StaminaComponentTest public sealed class StaminaComponentTest : GameTest
{ {
private static string[] _entitiesWithStamina = GameDataScrounger.EntitiesWithComponent("Stamina"); private static string[] _entitiesWithStamina = GameDataScrounger.EntitiesWithComponent("Stamina");
@@ -15,7 +16,7 @@ public sealed class StaminaComponentTest
[Description("Ensures every entity with Stamina has a valid stamina configuration.")] [Description("Ensures every entity with Stamina has a valid stamina configuration.")]
public async Task ValidateStamina(string protoKey) public async Task ValidateStamina(string protoKey)
{ {
await using var pair = await PoolManager.GetServerClient(); var pair = Pair;
var server = pair.Server; var server = pair.Server;
var protoMan = server.ProtoMan; var protoMan = server.ProtoMan;
@@ -46,7 +47,5 @@ public sealed class StaminaComponentTest
#pragma warning restore NUnit2041 #pragma warning restore NUnit2041
} }
}); });
await pair.CleanReturnAsync();
} }
} }
@@ -1,3 +1,4 @@
using Content.IntegrationTests.Fixtures;
using Content.Shared.Clothing.Components; using Content.Shared.Clothing.Components;
using Content.Shared.Clothing.EntitySystems; using Content.Shared.Clothing.EntitySystems;
using Content.Shared.Inventory; using Content.Shared.Inventory;
@@ -7,14 +8,14 @@ using Robust.Shared.GameObjects;
namespace Content.IntegrationTests.Tests namespace Content.IntegrationTests.Tests
{ {
[TestFixture] [TestFixture]
public sealed class DeleteInventoryTest public sealed class DeleteInventoryTest : GameTest
{ {
// Test that when deleting an entity with an InventoryComponent, // Test that when deleting an entity with an InventoryComponent,
// any equipped items also get deleted. // any equipped items also get deleted.
[Test] [Test]
public async Task Test() public async Task Test()
{ {
await using var pair = await PoolManager.GetServerClient(); var pair = Pair;
var server = pair.Server; var server = pair.Server;
var testMap = await pair.CreateTestMap(); var testMap = await pair.CreateTestMap();
var entMgr = server.ResolveDependency<IEntityManager>(); var entMgr = server.ResolveDependency<IEntityManager>();
@@ -44,7 +45,6 @@ namespace Content.IntegrationTests.Tests
// Assert that child item was also deleted. // Assert that child item was also deleted.
Assert.That(item.Deleted, Is.True); Assert.That(item.Deleted, Is.True);
}); });
await pair.CleanReturnAsync();
} }
} }
} }
@@ -1,3 +1,4 @@
using Content.IntegrationTests.Fixtures;
using Content.Shared.Damage; using Content.Shared.Damage;
using Content.Shared.Damage.Components; using Content.Shared.Damage.Components;
using Content.Shared.Damage.Prototypes; using Content.Shared.Damage.Prototypes;
@@ -13,12 +14,12 @@ namespace Content.IntegrationTests.Tests.Destructible
[TestFixture] [TestFixture]
[TestOf(typeof(DamageGroupTrigger))] [TestOf(typeof(DamageGroupTrigger))]
[TestOf(typeof(AndTrigger))] [TestOf(typeof(AndTrigger))]
public sealed class DestructibleDamageGroupTest public sealed class DestructibleDamageGroupTest : GameTest
{ {
[Test] [Test]
public async Task AndTest() public async Task AndTest()
{ {
await using var pair = await PoolManager.GetServerClient(); var pair = Pair;
var server = pair.Server; var server = pair.Server;
var testMap = await pair.CreateTestMap(); var testMap = await pair.CreateTestMap();
@@ -193,7 +194,6 @@ namespace Content.IntegrationTests.Tests.Destructible
// No new thresholds reached as triggers once is set to true and it already triggered before // No new thresholds reached as triggers once is set to true and it already triggered before
Assert.That(sTestThresholdListenerSystem.ThresholdsReached, Is.Empty); Assert.That(sTestThresholdListenerSystem.ThresholdsReached, Is.Empty);
}); });
await pair.CleanReturnAsync();
} }
} }
} }
@@ -1,3 +1,4 @@
using Content.IntegrationTests.Fixtures;
using Content.Shared.Damage; using Content.Shared.Damage;
using Content.Shared.Damage.Components; using Content.Shared.Damage.Components;
using Content.Shared.Damage.Prototypes; using Content.Shared.Damage.Prototypes;
@@ -12,12 +13,12 @@ namespace Content.IntegrationTests.Tests.Destructible
[TestFixture] [TestFixture]
[TestOf(typeof(DamageTypeTrigger))] [TestOf(typeof(DamageTypeTrigger))]
[TestOf(typeof(AndTrigger))] [TestOf(typeof(AndTrigger))]
public sealed class DestructibleDamageTypeTest public sealed class DestructibleDamageTypeTest : GameTest
{ {
[Test] [Test]
public async Task Test() public async Task Test()
{ {
await using var pair = await PoolManager.GetServerClient(); var pair = Pair;
var server = pair.Server; var server = pair.Server;
var testMap = await pair.CreateTestMap(); var testMap = await pair.CreateTestMap();
@@ -188,7 +189,6 @@ namespace Content.IntegrationTests.Tests.Destructible
// No new thresholds reached as triggers once is set to true and it already triggered before // No new thresholds reached as triggers once is set to true and it already triggered before
Assert.That(sTestThresholdListenerSystem.ThresholdsReached, Is.Empty); Assert.That(sTestThresholdListenerSystem.ThresholdsReached, Is.Empty);
}); });
await pair.CleanReturnAsync();
} }
} }
} }
@@ -1,4 +1,5 @@
using System.Linq; using System.Linq;
using Content.IntegrationTests.Fixtures;
using Content.Server.Destructible.Thresholds.Behaviors; using Content.Server.Destructible.Thresholds.Behaviors;
using Content.Shared.Damage; using Content.Shared.Damage;
using Content.Shared.Damage.Prototypes; using Content.Shared.Damage.Prototypes;
@@ -10,12 +11,12 @@ using static Content.IntegrationTests.Tests.Destructible.DestructibleTestPrototy
namespace Content.IntegrationTests.Tests.Destructible namespace Content.IntegrationTests.Tests.Destructible
{ {
public sealed class DestructibleDestructionTest public sealed class DestructibleDestructionTest : GameTest
{ {
[Test] [Test]
public async Task Test() public async Task Test()
{ {
await using var pair = await PoolManager.GetServerClient(); var pair = Pair;
var server = pair.Server; var server = pair.Server;
var testMap = await pair.CreateTestMap(); var testMap = await pair.CreateTestMap();
@@ -89,7 +90,6 @@ namespace Content.IntegrationTests.Tests.Destructible
Assert.That(found, Is.True, $"Unable to find {SpawnedEntityId} nearby for destructible test; found {entitiesInRange.Count} entities."); Assert.That(found, Is.True, $"Unable to find {SpawnedEntityId} nearby for destructible test; found {entitiesInRange.Count} entities.");
}); });
await pair.CleanReturnAsync();
} }
} }
} }
@@ -1,4 +1,5 @@
using System.Linq; using System.Linq;
using Content.IntegrationTests.Fixtures;
using Content.Server.Destructible; using Content.Server.Destructible;
using Content.Server.Destructible.Thresholds; using Content.Server.Destructible.Thresholds;
using Content.Server.Destructible.Thresholds.Behaviors; using Content.Server.Destructible.Thresholds.Behaviors;
@@ -19,12 +20,12 @@ namespace Content.IntegrationTests.Tests.Destructible
[TestFixture] [TestFixture]
[TestOf(typeof(DestructibleComponent))] [TestOf(typeof(DestructibleComponent))]
[TestOf(typeof(DamageThreshold))] [TestOf(typeof(DamageThreshold))]
public sealed class DestructibleThresholdActivationTest public sealed class DestructibleThresholdActivationTest : GameTest
{ {
[Test] [Test]
public async Task Test() public async Task Test()
{ {
await using var pair = await PoolManager.GetServerClient(); var pair = Pair;
var server = pair.Server; var server = pair.Server;
var sEntityManager = server.ResolveDependency<IEntityManager>(); var sEntityManager = server.ResolveDependency<IEntityManager>();
@@ -289,7 +290,6 @@ namespace Content.IntegrationTests.Tests.Destructible
Assert.That(sTestThresholdListenerSystem.ThresholdsReached, Is.Empty); Assert.That(sTestThresholdListenerSystem.ThresholdsReached, Is.Empty);
}); });
}); });
await pair.CleanReturnAsync();
} }
} }
} }
@@ -1,3 +1,4 @@
using Content.IntegrationTests.Fixtures;
using Content.IntegrationTests.Utility; using Content.IntegrationTests.Utility;
using Content.Server.DeviceLinking.Systems; using Content.Server.DeviceLinking.Systems;
using Content.Shared.DeviceLinking; using Content.Shared.DeviceLinking;
@@ -7,7 +8,7 @@ using Robust.Shared.Maths;
namespace Content.IntegrationTests.Tests.DeviceLinking; namespace Content.IntegrationTests.Tests.DeviceLinking;
public sealed class DeviceLinkingTest public sealed class DeviceLinkingTest : GameTest
{ {
private const string PortTesterProtoId = "DeviceLinkingSinkPortTester"; private const string PortTesterProtoId = "DeviceLinkingSinkPortTester";
@@ -29,7 +30,7 @@ public sealed class DeviceLinkingTest
[Description("Ensures all devices that can sink signals will not cause exceptions when signaled.")] [Description("Ensures all devices that can sink signals will not cause exceptions when signaled.")]
public async Task DeviceLinkSinkAllPortsTest(string protoKey) public async Task DeviceLinkSinkAllPortsTest(string protoKey)
{ {
await using var pair = await PoolManager.GetServerClient(); var pair = Pair;
var server = pair.Server; var server = pair.Server;
var protoMan = server.ProtoMan; var protoMan = server.ProtoMan;
var compFact = server.ResolveDependency<IComponentFactory>(); var compFact = server.ResolveDependency<IComponentFactory>();
@@ -77,7 +78,5 @@ public sealed class DeviceLinkingTest
} }
} }
}); });
await pair.CleanReturnAsync();
} }
} }
@@ -1,4 +1,5 @@
using System.Numerics; using System.Numerics;
using Content.IntegrationTests.Fixtures;
using Content.Server.DeviceNetwork.Components; using Content.Server.DeviceNetwork.Components;
using Content.Server.DeviceNetwork.Systems; using Content.Server.DeviceNetwork.Systems;
using Content.Shared.DeviceNetwork; using Content.Shared.DeviceNetwork;
@@ -12,7 +13,7 @@ namespace Content.IntegrationTests.Tests.DeviceNetwork
[TestOf(typeof(DeviceNetworkComponent))] [TestOf(typeof(DeviceNetworkComponent))]
[TestOf(typeof(WiredNetworkComponent))] [TestOf(typeof(WiredNetworkComponent))]
[TestOf(typeof(WirelessNetworkComponent))] [TestOf(typeof(WirelessNetworkComponent))]
public sealed class DeviceNetworkTest public sealed class DeviceNetworkTest : GameTest
{ {
[TestPrototypes] [TestPrototypes]
private const string Prototypes = @" private const string Prototypes = @"
@@ -50,7 +51,7 @@ namespace Content.IntegrationTests.Tests.DeviceNetwork
[Test] [Test]
public async Task NetworkDeviceSendAndReceive() public async Task NetworkDeviceSendAndReceive()
{ {
await using var pair = await PoolManager.GetServerClient(); var pair = Pair;
var server = pair.Server; var server = pair.Server;
var mapManager = server.ResolveDependency<IMapManager>(); var mapManager = server.ResolveDependency<IMapManager>();
@@ -104,13 +105,12 @@ namespace Content.IntegrationTests.Tests.DeviceNetwork
{ {
Assert.That(payload, Is.EquivalentTo(deviceNetTestSystem.LastPayload)); Assert.That(payload, Is.EquivalentTo(deviceNetTestSystem.LastPayload));
}); });
await pair.CleanReturnAsync();
} }
[Test] [Test]
public async Task WirelessNetworkDeviceSendAndReceive() public async Task WirelessNetworkDeviceSendAndReceive()
{ {
await using var pair = await PoolManager.GetServerClient(); var pair = Pair;
var server = pair.Server; var server = pair.Server;
var testMap = await pair.CreateTestMap(); var testMap = await pair.CreateTestMap();
var coordinates = testMap.GridCoords; var coordinates = testMap.GridCoords;
@@ -188,14 +188,12 @@ namespace Content.IntegrationTests.Tests.DeviceNetwork
{ {
Assert.That(payload, Is.Not.EqualTo(deviceNetTestSystem.LastPayload).AsCollection); Assert.That(payload, Is.Not.EqualTo(deviceNetTestSystem.LastPayload).AsCollection);
}); });
await pair.CleanReturnAsync();
} }
[Test] [Test]
public async Task WiredNetworkDeviceSendAndReceive() public async Task WiredNetworkDeviceSendAndReceive()
{ {
await using var pair = await PoolManager.GetServerClient(); var pair = Pair;
var server = pair.Server; var server = pair.Server;
var testMap = await pair.CreateTestMap(); var testMap = await pair.CreateTestMap();
var coordinates = testMap.GridCoords; var coordinates = testMap.GridCoords;
@@ -271,8 +269,6 @@ namespace Content.IntegrationTests.Tests.DeviceNetwork
{ {
Assert.That(payload, Is.EqualTo(deviceNetTestSystem.LastPayload).AsCollection); Assert.That(payload, Is.EqualTo(deviceNetTestSystem.LastPayload).AsCollection);
}); });
await pair.CleanReturnAsync();
} }
} }
} }
@@ -1,6 +1,7 @@
#nullable enable annotations #nullable enable annotations
using System.Linq; using System.Linq;
using System.Numerics; using System.Numerics;
using Content.IntegrationTests.Fixtures;
using Content.Server.Disposal.Unit; using Content.Server.Disposal.Unit;
using Content.Server.Power.Components; using Content.Server.Power.Components;
using Content.Server.Power.EntitySystems; using Content.Server.Power.EntitySystems;
@@ -16,7 +17,7 @@ namespace Content.IntegrationTests.Tests.Disposal
[TestOf(typeof(DisposalHolderComponent))] [TestOf(typeof(DisposalHolderComponent))]
[TestOf(typeof(DisposalEntryComponent))] [TestOf(typeof(DisposalEntryComponent))]
[TestOf(typeof(DisposalUnitComponent))] [TestOf(typeof(DisposalUnitComponent))]
public sealed class DisposalUnitTest public sealed class DisposalUnitTest : GameTest
{ {
[Reflect(false)] [Reflect(false)]
private sealed class DisposalUnitTestSystem : EntitySystem private sealed class DisposalUnitTestSystem : EntitySystem
@@ -145,7 +146,7 @@ namespace Content.IntegrationTests.Tests.Disposal
[Test] [Test]
public async Task Test() public async Task Test()
{ {
await using var pair = await PoolManager.GetServerClient(); var pair = Pair;
var server = pair.Server; var server = pair.Server;
var testMap = await pair.CreateTestMap(); var testMap = await pair.CreateTestMap();
@@ -240,8 +241,6 @@ namespace Content.IntegrationTests.Tests.Disposal
// Re-pressurizing // Re-pressurizing
Flush(disposalUnit, unitComponent, false, disposalSystem); Flush(disposalUnit, unitComponent, false, disposalSystem);
}); });
await pair.CleanReturnAsync();
} }
} }
} }
@@ -1,4 +1,5 @@
using System.Collections.Generic; using System.Collections.Generic;
using Content.IntegrationTests.Fixtures;
using Content.Shared.DoAfter; using Content.Shared.DoAfter;
using Content.Shared.Interaction; using Content.Shared.Interaction;
using Robust.Shared.GameObjects; using Robust.Shared.GameObjects;
@@ -12,7 +13,7 @@ namespace Content.IntegrationTests.Tests.DoAfter
{ {
[TestFixture] [TestFixture]
[TestOf(typeof(DoAfterComponent))] [TestOf(typeof(DoAfterComponent))]
public sealed partial class DoAfterServerTest public sealed partial class DoAfterServerTest : GameTest
{ {
[TestPrototypes] [TestPrototypes]
private const string Prototypes = @" private const string Prototypes = @"
@@ -35,7 +36,7 @@ namespace Content.IntegrationTests.Tests.DoAfter
[Test] [Test]
public async Task TestSerializable() public async Task TestSerializable()
{ {
await using var pair = await PoolManager.GetServerClient(); var pair = Pair;
var server = pair.Server; var server = pair.Server;
await server.WaitIdleAsync(); await server.WaitIdleAsync();
var refMan = server.ResolveDependency<IReflectionManager>(); var refMan = server.ResolveDependency<IReflectionManager>();
@@ -55,14 +56,12 @@ namespace Content.IntegrationTests.Tests.DoAfter
} }
}); });
}); });
await pair.CleanReturnAsync();
} }
[Test] [Test]
public async Task TestFinished() public async Task TestFinished()
{ {
await using var pair = await PoolManager.GetServerClient(); var pair = Pair;
var server = pair.Server; var server = pair.Server;
await server.WaitIdleAsync(); await server.WaitIdleAsync();
@@ -84,14 +83,12 @@ namespace Content.IntegrationTests.Tests.DoAfter
await server.WaitRunTicks(1); await server.WaitRunTicks(1);
Assert.That(ev.Cancelled, Is.False); Assert.That(ev.Cancelled, Is.False);
await pair.CleanReturnAsync();
} }
[Test] [Test]
public async Task TestCancelled() public async Task TestCancelled()
{ {
await using var pair = await PoolManager.GetServerClient(); var pair = Pair;
var server = pair.Server; var server = pair.Server;
var entityManager = server.EntMan; var entityManager = server.EntMan;
var timing = server.ResolveDependency<IGameTiming>(); var timing = server.ResolveDependency<IGameTiming>();
@@ -113,8 +110,6 @@ namespace Content.IntegrationTests.Tests.DoAfter
await server.WaitRunTicks(3); await server.WaitRunTicks(3);
Assert.That(ev.Cancelled); Assert.That(ev.Cancelled);
await pair.CleanReturnAsync();
} }
/// <summary> /// <summary>
@@ -124,7 +119,7 @@ namespace Content.IntegrationTests.Tests.DoAfter
[Test] [Test]
public async Task TestGetInteractingEntities() public async Task TestGetInteractingEntities()
{ {
await using var pair = await PoolManager.GetServerClient(); var pair = Pair;
var server = pair.Server; var server = pair.Server;
var entityManager = server.EntMan; var entityManager = server.EntMan;
var timing = server.ResolveDependency<IGameTiming>(); var timing = server.ResolveDependency<IGameTiming>();
@@ -175,8 +170,6 @@ namespace Content.IntegrationTests.Tests.DoAfter
entityManager.DeleteEntity(target); entityManager.DeleteEntity(target);
entityManager.DeleteEntity(target2); entityManager.DeleteEntity(target2);
}); });
await pair.CleanReturnAsync();
} }
} }
} }
@@ -1,4 +1,5 @@
using System.Numerics; using System.Numerics;
using Content.IntegrationTests.Fixtures;
using Content.Server.Doors.Systems; using Content.Server.Doors.Systems;
using Content.Shared.Doors.Components; using Content.Shared.Doors.Components;
using Robust.Shared.GameObjects; using Robust.Shared.GameObjects;
@@ -11,7 +12,7 @@ namespace Content.IntegrationTests.Tests.Doors
{ {
[TestFixture] [TestFixture]
[TestOf(typeof(AirlockComponent))] [TestOf(typeof(AirlockComponent))]
public sealed class AirlockTest public sealed class AirlockTest : GameTest
{ {
[TestPrototypes] [TestPrototypes]
private const string Prototypes = @" private const string Prototypes = @"
@@ -54,7 +55,7 @@ namespace Content.IntegrationTests.Tests.Doors
[Test] [Test]
public async Task OpenCloseDestroyTest() public async Task OpenCloseDestroyTest()
{ {
await using var pair = await PoolManager.GetServerClient(); var pair = Pair;
var server = pair.Server; var server = pair.Server;
var entityManager = server.ResolveDependency<IEntityManager>(); var entityManager = server.ResolveDependency<IEntityManager>();
@@ -104,16 +105,12 @@ namespace Content.IntegrationTests.Tests.Doors
entityManager.DeleteEntity(airlock); entityManager.DeleteEntity(airlock);
}); });
}); });
server.RunTicks(5);
await pair.CleanReturnAsync();
} }
[Test] [Test]
public async Task AirlockBlockTest() public async Task AirlockBlockTest()
{ {
await using var pair = await PoolManager.GetServerClient(); var pair = Pair;
var server = pair.Server; var server = pair.Server;
await server.WaitIdleAsync(); await server.WaitIdleAsync();
@@ -179,7 +176,6 @@ namespace Content.IntegrationTests.Tests.Doors
{ {
Assert.That(Math.Abs(xformSystem.GetWorldPosition(airlockPhysicsDummy).X - 1), Is.GreaterThan(0.01f)); Assert.That(Math.Abs(xformSystem.GetWorldPosition(airlockPhysicsDummy).X - 1), Is.GreaterThan(0.01f));
}); });
await pair.CleanReturnAsync();
} }
} }
} }
@@ -1,5 +1,6 @@
#nullable enable #nullable enable
using System.Linq; using System.Linq;
using Content.IntegrationTests.Fixtures;
using Robust.Client.GameObjects; using Robust.Client.GameObjects;
using Robust.Client.ResourceManagement; using Robust.Client.ResourceManagement;
using Robust.Shared.Prototypes; using Robust.Shared.Prototypes;
@@ -7,12 +8,12 @@ using Robust.Shared.Prototypes;
namespace Content.IntegrationTests.Tests namespace Content.IntegrationTests.Tests
{ {
[TestFixture] [TestFixture]
public sealed class DummyIconTest public sealed class DummyIconTest : GameTest
{ {
[Test] [Test]
public async Task Test() public async Task Test()
{ {
await using var pair = await PoolManager.GetServerClient(new PoolSettings { Connected = true }); var pair = Pair;
var client = pair.Client; var client = pair.Client;
var prototypeManager = client.ResolveDependency<IPrototypeManager>(); var prototypeManager = client.ResolveDependency<IPrototypeManager>();
var resourceCache = client.ResolveDependency<IResourceCache>(); var resourceCache = client.ResolveDependency<IResourceCache>();
@@ -32,7 +33,6 @@ namespace Content.IntegrationTests.Tests
proto.ID); proto.ID);
} }
}); });
await pair.CleanReturnAsync();
} }
} }
} }
+23 -25
View File
@@ -2,6 +2,8 @@ using System.Collections.Generic;
using System.Linq; using System.Linq;
using System.Numerics; using System.Numerics;
using System.Text; using System.Text;
using Content.IntegrationTests.Fixtures;
using Content.IntegrationTests.Fixtures.Attributes;
using Robust.Shared; using Robust.Shared;
using Robust.Shared.Audio.Components; using Robust.Shared.Audio.Components;
using Robust.Shared.Configuration; using Robust.Shared.Configuration;
@@ -16,17 +18,28 @@ namespace Content.IntegrationTests.Tests
{ {
[TestFixture] [TestFixture]
[TestOf(typeof(EntityUid))] [TestOf(typeof(EntityUid))]
public sealed class EntityTest public sealed class EntityTest : GameTest
{ {
private static readonly ProtoId<EntityCategoryPrototype> SpawnerCategory = "Spawner"; private static readonly ProtoId<EntityCategoryPrototype> SpawnerCategory = "Spawner";
public override PoolSettings PoolSettings => new()
{
Connected = true,
Dirty = true
};
public static PoolSettings Disconnected => new()
{
Dirty = true,
};
[Test] [Test]
[PairConfig(nameof(Disconnected))]
public async Task SpawnAndDeleteAllEntitiesOnDifferentMaps() public async Task SpawnAndDeleteAllEntitiesOnDifferentMaps()
{ {
// This test dirties the pair as it simply deletes ALL entities when done. Overhead of restarting the round // This test dirties the pair as it simply deletes ALL entities when done. Overhead of restarting the round
// is minimal relative to the rest of the test. // is minimal relative to the rest of the test.
var settings = new PoolSettings { Dirty = true }; var pair = Pair;
await using var pair = await PoolManager.GetServerClient(settings);
var server = pair.Server; var server = pair.Server;
var entityMan = server.ResolveDependency<IEntityManager>(); var entityMan = server.ResolveDependency<IEntityManager>();
@@ -79,17 +92,14 @@ namespace Content.IntegrationTests.Tests
Assert.That(entityMan.EntityCount, Is.Zero); Assert.That(entityMan.EntityCount, Is.Zero);
}); });
await pair.CleanReturnAsync();
} }
[Test] [Test]
[PairConfig(nameof(Disconnected))]
public async Task SpawnAndDeleteAllEntitiesInTheSameSpot() public async Task SpawnAndDeleteAllEntitiesInTheSameSpot()
{ {
// This test dirties the pair as it simply deletes ALL entities when done. Overhead of restarting the round var pair = Pair;
// is minimal relative to the rest of the test. Assert.That(pair.Client.Session, Is.Null);
var settings = new PoolSettings { Dirty = true };
await using var pair = await PoolManager.GetServerClient(settings);
var server = pair.Server; var server = pair.Server;
var map = await pair.CreateTestMap(); var map = await pair.CreateTestMap();
@@ -134,8 +144,6 @@ namespace Content.IntegrationTests.Tests
Assert.That(entityMan.EntityCount, Is.Zero); Assert.That(entityMan.EntityCount, Is.Zero);
}); });
await pair.CleanReturnAsync();
} }
/// <summary> /// <summary>
@@ -145,10 +153,7 @@ namespace Content.IntegrationTests.Tests
[Test] [Test]
public async Task SpawnAndDirtyAllEntities() public async Task SpawnAndDirtyAllEntities()
{ {
// This test dirties the pair as it simply deletes ALL entities when done. Overhead of restarting the round var pair = Pair;
// is minimal relative to the rest of the test.
var settings = new PoolSettings { Connected = true, Dirty = true };
await using var pair = await PoolManager.GetServerClient(settings);
var server = pair.Server; var server = pair.Server;
var client = pair.Client; var client = pair.Client;
@@ -182,7 +187,7 @@ namespace Content.IntegrationTests.Tests
} }
}); });
await pair.RunTicksSync(15); await pair.RunUntilSynced();
// Make sure the client actually received the entities // Make sure the client actually received the entities
// 500 is completely arbitrary. Note that the client & sever entity counts aren't expected to match. // 500 is completely arbitrary. Note that the client & sever entity counts aren't expected to match.
@@ -209,8 +214,6 @@ namespace Content.IntegrationTests.Tests
Assert.That(sEntMan.EntityCount, Is.Zero); Assert.That(sEntMan.EntityCount, Is.Zero);
}); });
await pair.CleanReturnAsync();
} }
/// <summary> /// <summary>
@@ -230,8 +233,7 @@ namespace Content.IntegrationTests.Tests
[Test] [Test]
public async Task SpawnAndDeleteEntityCountTest() public async Task SpawnAndDeleteEntityCountTest()
{ {
var settings = new PoolSettings { Connected = true, Dirty = true }; var pair = Pair;
await using var pair = await PoolManager.GetServerClient(settings);
var mapSys = pair.Server.System<SharedMapSystem>(); var mapSys = pair.Server.System<SharedMapSystem>();
var server = pair.Server; var server = pair.Server;
var client = pair.Client; var client = pair.Client;
@@ -317,8 +319,6 @@ namespace Content.IntegrationTests.Tests
BuildDiffString(clientEntities, Entities(client.EntMan), client.EntMan)); BuildDiffString(clientEntities, Entities(client.EntMan), client.EntMan));
} }
}); });
await pair.CleanReturnAsync();
} }
private static string BuildDiffString(IEnumerable<EntityUid> oldEnts, IEnumerable<EntityUid> newEnts, IEntityManager entMan) private static string BuildDiffString(IEnumerable<EntityUid> oldEnts, IEnumerable<EntityUid> newEnts, IEntityManager entMan)
@@ -392,7 +392,7 @@ namespace Content.IntegrationTests.Tests
"ActivatableUI", // Requires enum key "ActivatableUI", // Requires enum key
}; };
await using var pair = await PoolManager.GetServerClient(); var pair = Pair;
var server = pair.Server; var server = pair.Server;
var entityManager = server.ResolveDependency<IEntityManager>(); var entityManager = server.ResolveDependency<IEntityManager>();
var componentFactory = server.ResolveDependency<IComponentFactory>(); var componentFactory = server.ResolveDependency<IComponentFactory>();
@@ -445,8 +445,6 @@ namespace Content.IntegrationTests.Tests
} }
}); });
}); });
await pair.CleanReturnAsync();
} }
} }
} }
@@ -1,9 +1,10 @@
using Content.IntegrationTests.Fixtures;
using Content.IntegrationTests.Utility; using Content.IntegrationTests.Utility;
using Content.Shared.Explosion; using Content.Shared.Explosion;
namespace Content.IntegrationTests.Tests.Explosion; namespace Content.IntegrationTests.Tests.Explosion;
public sealed class ExplosionPrototypeTest public sealed class ExplosionPrototypeTest : GameTest
{ {
private static string[] _explosionKinds = GameDataScrounger.PrototypesOfKind<ExplosionPrototype>(); private static string[] _explosionKinds = GameDataScrounger.PrototypesOfKind<ExplosionPrototype>();
@@ -13,7 +14,7 @@ public sealed class ExplosionPrototypeTest
[Description("Ensures various properties of ExplosionPrototype are correctly configured.")] [Description("Ensures various properties of ExplosionPrototype are correctly configured.")]
public async Task Validate(string protoKey) public async Task Validate(string protoKey)
{ {
await using var pair = await PoolManager.GetServerClient(); var pair = Pair;
var server = pair.Server; var server = pair.Server;
var protoMan = server.ProtoMan; var protoMan = server.ProtoMan;
@@ -40,7 +41,5 @@ public sealed class ExplosionPrototypeTest
Assert.That(proto.IntensityPerState, Is.Positive); Assert.That(proto.IntensityPerState, Is.Positive);
Assert.That(proto.FireStates, Is.Positive); Assert.That(proto.FireStates, Is.Positive);
} }
await pair.CleanReturnAsync();
} }
} }
@@ -1,4 +1,5 @@
using System.Linq; using System.Linq;
using Content.IntegrationTests.Fixtures;
using Content.Shared.Chemistry; using Content.Shared.Chemistry;
using Content.Shared.Chemistry.Components; using Content.Shared.Chemistry.Components;
using Content.Shared.Prototypes; using Content.Shared.Prototypes;
@@ -12,7 +13,7 @@ namespace Content.IntegrationTests.Tests;
/// Tests to see if any entity prototypes specify solution fill level sprites that don't exist. /// Tests to see if any entity prototypes specify solution fill level sprites that don't exist.
/// </summary> /// </summary>
[TestFixture] [TestFixture]
public sealed class FillLevelSpriteTest public sealed class FillLevelSpriteTest : GameTest
{ {
private static readonly string[] HandStateNames = ["left", "right"]; private static readonly string[] HandStateNames = ["left", "right"];
private static readonly string[] EquipStateNames = ["back", "suitstorage"]; private static readonly string[] EquipStateNames = ["back", "suitstorage"];
@@ -20,7 +21,7 @@ public sealed class FillLevelSpriteTest
[Test] [Test]
public async Task FillLevelSpritesExist() public async Task FillLevelSpritesExist()
{ {
await using var pair = await PoolManager.GetServerClient(new PoolSettings { Connected = true }); var pair = Pair;
var client = pair.Client; var client = pair.Client;
var protoMan = client.ResolveDependency<IPrototypeManager>(); var protoMan = client.ResolveDependency<IPrototypeManager>();
var componentFactory = client.ResolveDependency<IComponentFactory>(); var componentFactory = client.ResolveDependency<IComponentFactory>();
@@ -101,7 +102,5 @@ public sealed class FillLevelSpriteTest
} }
}); });
}); });
await pair.CleanReturnAsync();
} }
} }
@@ -7,12 +7,13 @@ using Robust.Shared.GameObjects;
using Robust.Shared.Prototypes; using Robust.Shared.Prototypes;
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq; using System.Linq;
using Content.IntegrationTests.Fixtures;
namespace Content.IntegrationTests.Tests.Fluids; namespace Content.IntegrationTests.Tests.Fluids;
[TestFixture] [TestFixture]
[TestOf(typeof(AbsorbentComponent))] [TestOf(typeof(AbsorbentComponent))]
public sealed class AbsorbentTest public sealed class AbsorbentTest : GameTest
{ {
private const string UserDummyId = "UserDummy"; private const string UserDummyId = "UserDummy";
private const string AbsorbentDummyId = "AbsorbentDummy"; private const string AbsorbentDummyId = "AbsorbentDummy";
@@ -73,7 +74,7 @@ public sealed class AbsorbentTest
[TestCaseSource(nameof(TestCasesToRun))] [TestCaseSource(nameof(TestCasesToRun))]
public async Task AbsorbentOnRefillableTest(TestSolutionCase testCase) public async Task AbsorbentOnRefillableTest(TestSolutionCase testCase)
{ {
await using var pair = await PoolManager.GetServerClient(); var pair = Pair;
var server = pair.Server; var server = pair.Server;
var testMap = await pair.CreateTestMap(); var testMap = await pair.CreateTestMap();
@@ -123,15 +124,12 @@ public sealed class AbsorbentTest
Assert.That(VolumeOfPrototypeInComposition(refillableComposition, NonEvaporablePrototypeId), Is.EqualTo(testCase.ExpectedRefillableSolution.VolumeOfNonEvaporable)); Assert.That(VolumeOfPrototypeInComposition(refillableComposition, NonEvaporablePrototypeId), Is.EqualTo(testCase.ExpectedRefillableSolution.VolumeOfNonEvaporable));
}); });
}); });
await pair.RunTicksSync(5);
await pair.CleanReturnAsync();
} }
[TestCaseSource(nameof(TestCasesToRunOnSmallRefillable))] [TestCaseSource(nameof(TestCasesToRunOnSmallRefillable))]
public async Task AbsorbentOnSmallRefillableTest(TestSolutionCase testCase) public async Task AbsorbentOnSmallRefillableTest(TestSolutionCase testCase)
{ {
await using var pair = await PoolManager.GetServerClient(); var pair = Pair;
var server = pair.Server; var server = pair.Server;
var testMap = await pair.CreateTestMap(); var testMap = await pair.CreateTestMap();
@@ -180,9 +178,6 @@ public sealed class AbsorbentTest
Assert.That(VolumeOfPrototypeInComposition(refillableComposition, NonEvaporablePrototypeId), Is.EqualTo(testCase.ExpectedRefillableSolution.VolumeOfNonEvaporable)); Assert.That(VolumeOfPrototypeInComposition(refillableComposition, NonEvaporablePrototypeId), Is.EqualTo(testCase.ExpectedRefillableSolution.VolumeOfNonEvaporable));
}); });
}); });
await pair.RunTicksSync(5);
await pair.CleanReturnAsync();
} }
private static FixedPoint2 VolumeOfPrototypeInComposition(Dictionary<string, FixedPoint2> composition, string prototypeId) private static FixedPoint2 VolumeOfPrototypeInComposition(Dictionary<string, FixedPoint2> composition, string prototypeId)
@@ -1,4 +1,5 @@
#nullable enable #nullable enable
using Content.IntegrationTests.Fixtures;
using Content.Server.Fluids.EntitySystems; using Content.Server.Fluids.EntitySystems;
using Content.Server.Spreader; using Content.Server.Spreader;
using Content.Shared.Chemistry.Components; using Content.Shared.Chemistry.Components;
@@ -14,7 +15,7 @@ namespace Content.IntegrationTests.Tests.Fluids;
[TestFixture] [TestFixture]
[TestOf(typeof(SpreaderSystem))] [TestOf(typeof(SpreaderSystem))]
public sealed class FluidSpill public sealed class FluidSpill : GameTest
{ {
private static PuddleComponent? GetPuddle(IEntityManager entityManager, Entity<MapGridComponent> mapGrid, Vector2i pos) private static PuddleComponent? GetPuddle(IEntityManager entityManager, Entity<MapGridComponent> mapGrid, Vector2i pos)
{ {
@@ -36,7 +37,7 @@ public sealed class FluidSpill
[Test] [Test]
public async Task SpillCorner() public async Task SpillCorner()
{ {
await using var pair = await PoolManager.GetServerClient(); var pair = Pair;
var server = pair.Server; var server = pair.Server;
var mapManager = server.ResolveDependency<IMapManager>(); var mapManager = server.ResolveDependency<IMapManager>();
var entityManager = server.ResolveDependency<IEntityManager>(); var entityManager = server.ResolveDependency<IEntityManager>();
@@ -110,7 +111,5 @@ public sealed class FluidSpill
} }
} }
}); });
await pair.CleanReturnAsync();
} }
} }
@@ -1,3 +1,4 @@
using Content.IntegrationTests.Fixtures;
using Content.Server.Fluids.EntitySystems; using Content.Server.Fluids.EntitySystems;
using Content.Shared.Chemistry.Components; using Content.Shared.Chemistry.Components;
using Content.Shared.Coordinates; using Content.Shared.Coordinates;
@@ -10,12 +11,12 @@ namespace Content.IntegrationTests.Tests.Fluids
{ {
[TestFixture] [TestFixture]
[TestOf(typeof(PuddleComponent))] [TestOf(typeof(PuddleComponent))]
public sealed class PuddleTest public sealed class PuddleTest : GameTest
{ {
[Test] [Test]
public async Task TilePuddleTest() public async Task TilePuddleTest()
{ {
await using var pair = await PoolManager.GetServerClient(); var pair = Pair;
var server = pair.Server; var server = pair.Server;
var testMap = await pair.CreateTestMap(); var testMap = await pair.CreateTestMap();
@@ -32,15 +33,12 @@ namespace Content.IntegrationTests.Tests.Fluids
Assert.That(spillSystem.TrySpillAt(coordinates, solution, out _), Is.True); Assert.That(spillSystem.TrySpillAt(coordinates, solution, out _), Is.True);
}); });
await pair.RunTicksSync(5);
await pair.CleanReturnAsync();
} }
[Test] [Test]
public async Task SpaceNoPuddleTest() public async Task SpaceNoPuddleTest()
{ {
await using var pair = await PoolManager.GetServerClient(); var pair = Pair;
var server = pair.Server; var server = pair.Server;
var testMap = await pair.CreateTestMap(); var testMap = await pair.CreateTestMap();
@@ -69,8 +67,6 @@ namespace Content.IntegrationTests.Tests.Fluids
Assert.That(spillSystem.TrySpillAt(coordinates, solution, out _), Is.False); Assert.That(spillSystem.TrySpillAt(coordinates, solution, out _), Is.False);
}); });
await pair.CleanReturnAsync();
} }
} }
} }
@@ -1,3 +1,4 @@
using Content.IntegrationTests.Fixtures;
using Content.Server.GameTicking; using Content.Server.GameTicking;
using Content.Shared.Follower; using Content.Shared.Follower;
using Robust.Shared.GameObjects; using Robust.Shared.GameObjects;
@@ -7,7 +8,7 @@ using Robust.Shared.Map;
namespace Content.IntegrationTests.Tests; namespace Content.IntegrationTests.Tests;
[TestFixture, TestOf(typeof(FollowerSystem))] [TestFixture, TestOf(typeof(FollowerSystem))]
public sealed class FollowerSystemTest public sealed class FollowerSystemTest : GameTest
{ {
/// <summary> /// <summary>
/// This test ensures that deleting a map while an entity follows another doesn't throw any exceptions. /// This test ensures that deleting a map while an entity follows another doesn't throw any exceptions.
@@ -15,7 +16,7 @@ public sealed class FollowerSystemTest
[Test] [Test]
public async Task FollowerMapDeleteTest() public async Task FollowerMapDeleteTest()
{ {
await using var pair = await PoolManager.GetServerClient(); var pair = Pair;
var server = pair.Server; var server = pair.Server;
var entMan = server.ResolveDependency<IEntityManager>(); var entMan = server.ResolveDependency<IEntityManager>();
@@ -44,6 +45,5 @@ public sealed class FollowerSystemTest
entMan.DeleteEntity(mapSys.GetMap(map)); entMan.DeleteEntity(mapSys.GetMap(map));
}); });
await pair.CleanReturnAsync();
} }
} }
@@ -1,4 +1,5 @@
#nullable enable #nullable enable
using Content.IntegrationTests.Fixtures;
using Content.Server.Cuffs; using Content.Server.Cuffs;
using Content.Shared.Cuffs.Components; using Content.Shared.Cuffs.Components;
using Content.Shared.Hands.Components; using Content.Shared.Hands.Components;
@@ -10,7 +11,7 @@ namespace Content.IntegrationTests.Tests.GameObjects.Components.ActionBlocking
[TestFixture] [TestFixture]
[TestOf(typeof(CuffableComponent))] [TestOf(typeof(CuffableComponent))]
[TestOf(typeof(HandcuffComponent))] [TestOf(typeof(HandcuffComponent))]
public sealed class HandCuffTest public sealed class HandCuffTest : GameTest
{ {
[TestPrototypes] [TestPrototypes]
private const string Prototypes = @" private const string Prototypes = @"
@@ -40,7 +41,7 @@ namespace Content.IntegrationTests.Tests.GameObjects.Components.ActionBlocking
[Test] [Test]
public async Task Test() public async Task Test()
{ {
await using var pair = await PoolManager.GetServerClient(); var pair = Pair;
var server = pair.Server; var server = pair.Server;
EntityUid human; EntityUid human;
@@ -98,8 +99,6 @@ namespace Content.IntegrationTests.Tests.GameObjects.Components.ActionBlocking
cuffableSys.TryAddNewCuffs(human, human, secondCuffs, cuffed); cuffableSys.TryAddNewCuffs(human, human, secondCuffs, cuffed);
Assert.That(cuffed.CuffedHandCount, Is.EqualTo(4), "Player doesn't have correct amount of hands cuffed"); Assert.That(cuffed.CuffedHandCount, Is.EqualTo(4), "Player doesn't have correct amount of hands cuffed");
}); });
await pair.CleanReturnAsync();
} }
private static void AddHand(NetEntity to, IServerConsoleHost host) private static void AddHand(NetEntity to, IServerConsoleHost host)
@@ -2,6 +2,7 @@ using System.Collections.Generic;
using System.IO; using System.IO;
using System.Linq; using System.Linq;
using System.Text; using System.Text;
using Content.IntegrationTests.Fixtures;
using Robust.Shared.ContentPack; using Robust.Shared.ContentPack;
using Robust.Shared.GameObjects; using Robust.Shared.GameObjects;
using Robust.Shared.Utility; using Robust.Shared.Utility;
@@ -11,12 +12,12 @@ namespace Content.IntegrationTests.Tests.GameObjects.Components
{ {
[TestFixture] [TestFixture]
[TestOf(typeof(Server.Entry.IgnoredComponents))] [TestOf(typeof(Server.Entry.IgnoredComponents))]
public sealed class EntityPrototypeComponentsTest public sealed class EntityPrototypeComponentsTest : GameTest
{ {
[Test] [Test]
public async Task PrototypesHaveKnownComponents() public async Task PrototypesHaveKnownComponents()
{ {
await using var pair = await PoolManager.GetServerClient(); var pair = Pair;
var server = pair.Server; var server = pair.Server;
var client = pair.Client; var client = pair.Client;
@@ -100,7 +101,6 @@ namespace Content.IntegrationTests.Tests.GameObjects.Components
if (unknownComponentsClient.Count + unknownComponentsServer.Count + doubleIgnoredComponents.Count == 0) if (unknownComponentsClient.Count + unknownComponentsServer.Count + doubleIgnoredComponents.Count == 0)
{ {
await pair.CleanReturnAsync();
Assert.Pass($"Validated {entitiesValidated} entities with {componentsValidated} components in {paths.Length} files."); Assert.Pass($"Validated {entitiesValidated} entities with {componentsValidated} components in {paths.Length} files.");
return; return;
} }
@@ -131,11 +131,11 @@ namespace Content.IntegrationTests.Tests.GameObjects.Components
[Test] [Test]
public async Task IgnoredComponentsExistInTheCorrectPlaces() public async Task IgnoredComponentsExistInTheCorrectPlaces()
{ {
await using var pair = await PoolManager.GetServerClient(); var pair = Pair;
var server = pair.Server; var server = pair.Server;
var client = pair.Client; var client = pair.Client;
var serverComponents = server.ResolveDependency<IComponentFactory>(); var serverComponents = server.ResolveDependency<IComponentFactory>();
var ignoredServerNames = Server.Entry.IgnoredComponents.List; var ignoredServerNames = Content.Server.Entry.IgnoredComponents.List;
var clientComponents = client.ResolveDependency<IComponentFactory>(); var clientComponents = client.ResolveDependency<IComponentFactory>();
var failureMessages = ""; var failureMessages = "";
@@ -151,7 +151,6 @@ namespace Content.IntegrationTests.Tests.GameObjects.Components
} }
} }
Assert.That(failureMessages, Is.Empty); Assert.That(failureMessages, Is.Empty);
await pair.CleanReturnAsync();
} }
} }
} }
@@ -1,6 +1,7 @@
using System.Linq; using System.Linq;
using Content.Client.UserInterface.Systems.Alerts.Controls; using Content.Client.UserInterface.Systems.Alerts.Controls;
using Content.Client.UserInterface.Systems.Alerts.Widgets; using Content.Client.UserInterface.Systems.Alerts.Widgets;
using Content.IntegrationTests.Fixtures;
using Content.Shared.Alert; using Content.Shared.Alert;
using Robust.Client.UserInterface; using Robust.Client.UserInterface;
using Robust.Server.Player; using Robust.Server.Player;
@@ -10,16 +11,18 @@ namespace Content.IntegrationTests.Tests.GameObjects.Components.Mobs
{ {
[TestFixture] [TestFixture]
[TestOf(typeof(AlertsComponent))] [TestOf(typeof(AlertsComponent))]
public sealed class AlertsComponentTests public sealed class AlertsComponentTests : GameTest
{ {
public override PoolSettings PoolSettings => new()
{
Connected = true,
DummyTicker = false
};
[Test] [Test]
public async Task AlertsTest() public async Task AlertsTest()
{ {
await using var pair = await PoolManager.GetServerClient(new PoolSettings var pair = Pair;
{
Connected = true,
DummyTicker = false
});
var server = pair.Server; var server = pair.Server;
var client = pair.Client; var client = pair.Client;
@@ -107,8 +110,6 @@ namespace Content.IntegrationTests.Tests.GameObjects.Components.Mobs
var expectedIDs = new[] { "HumanHealth", "Debug2" }; var expectedIDs = new[] { "HumanHealth", "Debug2" };
Assert.That(alertIDs, Is.SupersetOf(expectedIDs)); Assert.That(alertIDs, Is.SupersetOf(expectedIDs));
}); });
await pair.CleanReturnAsync();
} }
} }
} }
@@ -1,6 +1,7 @@
#nullable enable #nullable enable
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq; using System.Linq;
using Content.IntegrationTests.Fixtures;
using Content.Server.Antag; using Content.Server.Antag;
using Content.Server.Antag.Components; using Content.Server.Antag.Components;
using Content.Server.GameTicking; using Content.Server.GameTicking;
@@ -14,17 +15,19 @@ namespace Content.IntegrationTests.Tests.GameRules;
// Once upon a time, players in the lobby weren't ever considered eligible for antag roles. // Once upon a time, players in the lobby weren't ever considered eligible for antag roles.
// Lets not let that happen again. // Lets not let that happen again.
[TestFixture] [TestFixture]
public sealed class AntagPreferenceTest public sealed class AntagPreferenceTest : GameTest
{ {
public override PoolSettings PoolSettings => new PoolSettings
{
DummyTicker = false,
Connected = true,
InLobby = true
};
[Test] [Test]
public async Task TestLobbyPlayersValid() public async Task TestLobbyPlayersValid()
{ {
await using var pair = await PoolManager.GetServerClient(new PoolSettings var pair = Pair;
{
DummyTicker = false,
Connected = true,
InLobby = true
});
var server = pair.Server; var server = pair.Server;
var client = pair.Client; var client = pair.Client;
@@ -71,6 +74,5 @@ public sealed class AntagPreferenceTest
Assert.That(pool.Count, Is.EqualTo(0)); Assert.That(pool.Count, Is.EqualTo(0));
await server.WaitPost(() => server.EntMan.DeleteEntity(uid)); await server.WaitPost(() => server.EntMan.DeleteEntity(uid));
await pair.CleanReturnAsync();
} }
} }
@@ -1,4 +1,5 @@
#nullable enable #nullable enable
using Content.IntegrationTests.Fixtures;
using Content.Server.GameTicking; using Content.Server.GameTicking;
using Content.Server.GameTicking.Presets; using Content.Server.GameTicking.Presets;
using Content.Shared.CCVar; using Content.Shared.CCVar;
@@ -9,7 +10,7 @@ using Robust.Shared.GameObjects;
namespace Content.IntegrationTests.Tests.GameRules; namespace Content.IntegrationTests.Tests.GameRules;
[TestFixture] [TestFixture]
public sealed class FailAndStartPresetTest public sealed class FailAndStartPresetTest : GameTest
{ {
[TestPrototypes] [TestPrototypes]
private const string Prototypes = @" private const string Prototypes = @"
@@ -52,19 +53,21 @@ public sealed class FailAndStartPresetTest
- type: TestRule - type: TestRule
"; ";
public override PoolSettings PoolSettings => new()
{
Dirty = true,
DummyTicker = false,
Connected = true,
InLobby = true
};
/// <summary> /// <summary>
/// Test that a nuke ops gamemode can start after failing to start once. /// Test that a nuke ops gamemode can start after failing to start once.
/// </summary> /// </summary>
[Test] [Test]
public async Task FailAndStartTest() public async Task FailAndStartTest()
{ {
await using var pair = await PoolManager.GetServerClient(new PoolSettings var pair = Pair;
{
Dirty = true,
DummyTicker = false,
Connected = true,
InLobby = true
});
var server = pair.Server; var server = pair.Server;
var client = pair.Client; var client = pair.Client;
@@ -115,7 +118,6 @@ public sealed class FailAndStartPresetTest
server.CfgMan.SetCVar(CCVars.GameLobbyFallbackEnabled, true); server.CfgMan.SetCVar(CCVars.GameLobbyFallbackEnabled, true);
server.CfgMan.SetCVar(CCVars.GameLobbyDefaultPreset, "secret"); server.CfgMan.SetCVar(CCVars.GameLobbyDefaultPreset, "secret");
server.System<TestRuleSystem>().Run = false; server.System<TestRuleSystem>().Run = false;
await pair.CleanReturnAsync();
} }
} }
@@ -1,6 +1,7 @@
#nullable enable #nullable enable
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq; using System.Linq;
using Content.IntegrationTests.Fixtures;
using Content.Server.Body.Components; using Content.Server.Body.Components;
using Content.Server.GameTicking; using Content.Server.GameTicking;
using Content.Server.GameTicking.Presets; using Content.Server.GameTicking.Presets;
@@ -30,24 +31,27 @@ using Robust.Shared.Prototypes;
namespace Content.IntegrationTests.Tests.GameRules; namespace Content.IntegrationTests.Tests.GameRules;
[TestFixture] [TestFixture]
public sealed class NukeOpsTest public sealed class NukeOpsTest : GameTest
{ {
private static readonly ProtoId<NpcFactionPrototype> SyndicateFaction = "Syndicate"; private static readonly ProtoId<NpcFactionPrototype> SyndicateFaction = "Syndicate";
private static readonly ProtoId<NpcFactionPrototype> NanotrasenFaction = "NanoTrasen"; private static readonly ProtoId<NpcFactionPrototype> NanotrasenFaction = "NanoTrasen";
public override PoolSettings PoolSettings => new()
{
Dirty = true,
DummyTicker = false,
Connected = true,
InLobby = true
};
/// <summary> /// <summary>
/// Check that a nuke ops game mode can start without issue. I.e., that the nuke station and such all get loaded. /// Check that a nuke ops game mode can start without issue. I.e., that the nuke station and such all get loaded.
/// </summary> /// </summary>
[Test] [Test]
public async Task TryStopNukeOpsFromConstantlyFailing() public async Task TryStopNukeOpsFromConstantlyFailing()
{ {
await using var pair = await PoolManager.GetServerClient(new PoolSettings var pair = Pair;
{
Dirty = true,
DummyTicker = false,
Connected = true,
InLobby = true
});
var server = pair.Server; var server = pair.Server;
var client = pair.Client; var client = pair.Client;
@@ -260,6 +264,5 @@ public sealed class NukeOpsTest
}); });
ticker.SetGamePreset((GamePresetPrototype?) null); ticker.SetGamePreset((GamePresetPrototype?) null);
await pair.CleanReturnAsync();
} }
} }
@@ -1,3 +1,4 @@
using Content.IntegrationTests.Fixtures;
using Content.Server.GameTicking; using Content.Server.GameTicking;
using Content.Server.GameTicking.Rules; using Content.Server.GameTicking.Rules;
using Content.Server.GameTicking.Rules.Components; using Content.Server.GameTicking.Rules.Components;
@@ -9,12 +10,14 @@ namespace Content.IntegrationTests.Tests.GameRules
{ {
[TestFixture] [TestFixture]
[TestOf(typeof(MaxTimeRestartRuleSystem))] [TestOf(typeof(MaxTimeRestartRuleSystem))]
public sealed class RuleMaxTimeRestartTest public sealed class RuleMaxTimeRestartTest : GameTest
{ {
public override PoolSettings PoolSettings => new() { InLobby = true };
[Test] [Test]
public async Task RestartTest() public async Task RestartTest()
{ {
await using var pair = await PoolManager.GetServerClient(new PoolSettings { InLobby = true }); var pair = Pair;
var server = pair.Server; var server = pair.Server;
Assert.That(server.EntMan.Count<GameRuleComponent>(), Is.Zero); Assert.That(server.EntMan.Count<GameRuleComponent>(), Is.Zero);
@@ -64,8 +67,6 @@ namespace Content.IntegrationTests.Tests.GameRules
{ {
Assert.That(sGameTicker.RunLevel, Is.EqualTo(GameRunLevel.PreRoundLobby)); Assert.That(sGameTicker.RunLevel, Is.EqualTo(GameRunLevel.PreRoundLobby));
}); });
await pair.CleanReturnAsync();
} }
} }
} }
@@ -1,19 +1,22 @@
using System.Linq; using System.Linq;
using Content.IntegrationTests.Fixtures;
using Content.Server.GameTicking; using Content.Server.GameTicking;
using Robust.Shared.GameObjects; using Robust.Shared.GameObjects;
namespace Content.IntegrationTests.Tests.GameRules; namespace Content.IntegrationTests.Tests.GameRules;
[TestFixture] [TestFixture]
public sealed class SecretStartsTest public sealed class SecretStartsTest : GameTest
{ {
public override PoolSettings PoolSettings => new PoolSettings { Dirty = true };
/// <summary> /// <summary>
/// Tests that when secret is started, all of the game rules it successfully adds are also started. /// Tests that when secret is started, all of the game rules it successfully adds are also started.
/// </summary> /// </summary>
[Test] [Test]
public async Task TestSecretStarts() public async Task TestSecretStarts()
{ {
await using var pair = await PoolManager.GetServerClient(new PoolSettings { Dirty = true }); var pair = Pair;
var server = pair.Server; var server = pair.Server;
await server.WaitIdleAsync(); await server.WaitIdleAsync();
@@ -38,7 +41,5 @@ public sealed class SecretStartsTest
// End all rules // End all rules
gameTicker.ClearGameRules(); gameTicker.ClearGameRules();
}); });
await pair.CleanReturnAsync();
} }
} }
@@ -1,4 +1,5 @@
using System.Linq; using System.Linq;
using Content.IntegrationTests.Fixtures;
using Content.Server.GameTicking; using Content.Server.GameTicking;
using Content.Shared.CCVar; using Content.Shared.CCVar;
using Robust.Shared.Configuration; using Robust.Shared.Configuration;
@@ -7,19 +8,21 @@ using Robust.Shared.GameObjects;
namespace Content.IntegrationTests.Tests.GameRules; namespace Content.IntegrationTests.Tests.GameRules;
[TestFixture] [TestFixture]
public sealed class StartEndGameRulesTest public sealed class StartEndGameRulesTest : GameTest
{ {
public override PoolSettings PoolSettings => new PoolSettings
{
Dirty = true,
DummyTicker = false
};
/// <summary> /// <summary>
/// Tests that all game rules can be added/started/ended at the same time without exceptions. /// Tests that all game rules can be added/started/ended at the same time without exceptions.
/// </summary> /// </summary>
[Test] [Test]
public async Task TestAllConcurrent() public async Task TestAllConcurrent()
{ {
await using var pair = await PoolManager.GetServerClient(new PoolSettings var pair = Pair;
{
Dirty = true,
DummyTicker = false
});
var server = pair.Server; var server = pair.Server;
await server.WaitIdleAsync(); await server.WaitIdleAsync();
var gameTicker = server.ResolveDependency<IEntitySystemManager>().GetEntitySystem<GameTicker>(); var gameTicker = server.ResolveDependency<IEntitySystemManager>().GetEntitySystem<GameTicker>();
@@ -47,7 +50,5 @@ public sealed class StartEndGameRulesTest
gameTicker.ClearGameRules(); gameTicker.ClearGameRules();
Assert.That(!gameTicker.GetAddedGameRules().Any()); Assert.That(!gameTicker.GetAddedGameRules().Any());
}); });
await pair.CleanReturnAsync();
} }
} }
@@ -1,4 +1,5 @@
using System.Linq; using System.Linq;
using Content.IntegrationTests.Fixtures;
using Content.Server.Antag.Components; using Content.Server.Antag.Components;
using Content.Server.GameTicking; using Content.Server.GameTicking;
using Content.Server.GameTicking.Rules; using Content.Server.GameTicking.Rules;
@@ -17,23 +18,25 @@ using Robust.Shared.Prototypes;
namespace Content.IntegrationTests.Tests.GameRules; namespace Content.IntegrationTests.Tests.GameRules;
[TestFixture] [TestFixture]
public sealed class TraitorRuleTest public sealed class TraitorRuleTest : GameTest
{ {
private const string TraitorGameRuleProtoId = "Traitor"; private const string TraitorGameRuleProtoId = "Traitor";
private const string TraitorAntagRoleName = "Traitor"; private const string TraitorAntagRoleName = "Traitor";
private static readonly ProtoId<NpcFactionPrototype> SyndicateFaction = "Syndicate"; private static readonly ProtoId<NpcFactionPrototype> SyndicateFaction = "Syndicate";
private static readonly ProtoId<NpcFactionPrototype> NanotrasenFaction = "NanoTrasen"; private static readonly ProtoId<NpcFactionPrototype> NanotrasenFaction = "NanoTrasen";
public override PoolSettings PoolSettings => new()
{
Dirty = true,
DummyTicker = false,
Connected = true,
InLobby = true,
};
[Test] [Test]
public async Task TestTraitorObjectives() public async Task TestTraitorObjectives()
{ {
await using var pair = await PoolManager.GetServerClient(new PoolSettings() var pair = Pair;
{
Dirty = true,
DummyTicker = false,
Connected = true,
InLobby = true,
});
var server = pair.Server; var server = pair.Server;
var client = pair.Client; var client = pair.Client;
var entMan = server.EntMan; var entMan = server.EntMan;
@@ -123,9 +126,6 @@ public sealed class TraitorRuleTest
$"MaxDifficulty exceeded! Objectives: {string.Join(", ", mindComp.Objectives.Select(o => FormatObjective(o, entMan)))}"); $"MaxDifficulty exceeded! Objectives: {string.Join(", ", mindComp.Objectives.Select(o => FormatObjective(o, entMan)))}");
Assert.That(mindComp.Objectives, Is.Not.Empty, Assert.That(mindComp.Objectives, Is.Not.Empty,
$"No objectives assigned!"); $"No objectives assigned!");
await pair.CleanReturnAsync();
} }
private static string FormatObjective(Entity<ObjectiveComponent> entity, IEntityManager entMan) private static string FormatObjective(Entity<ObjectiveComponent> entity, IEntityManager entMan)
@@ -1,16 +1,17 @@
#nullable enable #nullable enable
using Content.IntegrationTests.Fixtures;
using Content.Shared.Gibbing; using Content.Shared.Gibbing;
using Robust.Shared.GameObjects; using Robust.Shared.GameObjects;
namespace Content.IntegrationTests.Tests.Body; namespace Content.IntegrationTests.Tests.Body;
[TestFixture] [TestFixture]
public sealed class GibTest public sealed class GibTest : GameTest
{ {
[Test] [Test]
public async Task TestGib() public async Task TestGib()
{ {
await using var pair = await PoolManager.GetServerClient(new PoolSettings { Connected = true }); var pair = Pair;
var (server, client) = (pair.Server, pair.Client); var (server, client) = (pair.Server, pair.Client);
var map = await pair.CreateTestMap(); var map = await pair.CreateTestMap();
@@ -30,7 +31,5 @@ public sealed class GibTest
await pair.RunTicksSync(5); await pair.RunTicksSync(5);
Assert.That(!client.EntMan.EntityExists(nuid)); Assert.That(!client.EntMan.EntityExists(nuid));
await pair.CleanReturnAsync();
} }
} }
@@ -1,3 +1,4 @@
using Content.IntegrationTests.Fixtures;
using Content.Server.Gravity; using Content.Server.Gravity;
using Content.Shared.Alert; using Content.Shared.Alert;
using Content.Shared.Gravity; using Content.Shared.Gravity;
@@ -8,7 +9,7 @@ namespace Content.IntegrationTests.Tests.Gravity
[TestFixture] [TestFixture]
[TestOf(typeof(GravitySystem))] [TestOf(typeof(GravitySystem))]
[TestOf(typeof(GravityGeneratorComponent))] [TestOf(typeof(GravityGeneratorComponent))]
public sealed class WeightlessStatusTests public sealed class WeightlessStatusTests : GameTest
{ {
[TestPrototypes] [TestPrototypes]
private const string Prototypes = @" private const string Prototypes = @"
@@ -38,7 +39,7 @@ namespace Content.IntegrationTests.Tests.Gravity
[Test] [Test]
public async Task WeightlessStatusTest() public async Task WeightlessStatusTest()
{ {
await using var pair = await PoolManager.GetServerClient(); var pair = Pair;
var server = pair.Server; var server = pair.Server;
var entityManager = server.ResolveDependency<IEntityManager>(); var entityManager = server.ResolveDependency<IEntityManager>();
@@ -86,8 +87,6 @@ namespace Content.IntegrationTests.Tests.Gravity
}); });
await pair.RunTicksSync(10); await pair.RunTicksSync(10);
await pair.CleanReturnAsync();
} }
} }
} }
@@ -1,3 +1,4 @@
using Content.IntegrationTests.Fixtures;
using Content.Server.Power.Components; using Content.Server.Power.Components;
using Content.Shared.Gravity; using Content.Shared.Gravity;
using Robust.Shared.GameObjects; using Robust.Shared.GameObjects;
@@ -11,7 +12,7 @@ namespace Content.IntegrationTests.Tests
/// making sure that gravity is applied to the correct grids. /// making sure that gravity is applied to the correct grids.
[TestFixture] [TestFixture]
[TestOf(typeof(GravityGeneratorComponent))] [TestOf(typeof(GravityGeneratorComponent))]
public sealed class GravityGridTest public sealed class GravityGridTest : GameTest
{ {
[TestPrototypes] [TestPrototypes]
private const string Prototypes = @" private const string Prototypes = @"
@@ -31,7 +32,7 @@ namespace Content.IntegrationTests.Tests
[Test] [Test]
public async Task Test() public async Task Test()
{ {
await using var pair = await PoolManager.GetServerClient(); var pair = Pair;
var server = pair.Server; var server = pair.Server;
var testMap = await pair.CreateTestMap(); var testMap = await pair.CreateTestMap();
@@ -96,8 +97,6 @@ namespace Content.IntegrationTests.Tests
Assert.That(entityMan.GetComponent<GravityComponent>(grid2).Enabled, Is.False); Assert.That(entityMan.GetComponent<GravityComponent>(grid2).Enabled, Is.False);
}); });
}); });
await pair.CleanReturnAsync();
} }
} }
} }
@@ -3,6 +3,7 @@ using System.Collections.Generic;
using System.Diagnostics.CodeAnalysis; using System.Diagnostics.CodeAnalysis;
using Content.Client.Guidebook; using Content.Client.Guidebook;
using Content.Client.Guidebook.Richtext; using Content.Client.Guidebook.Richtext;
using Content.IntegrationTests.Fixtures;
using Robust.Client.UserInterface; using Robust.Client.UserInterface;
using Robust.Client.UserInterface.Controls; using Robust.Client.UserInterface.Controls;
@@ -13,7 +14,7 @@ namespace Content.IntegrationTests.Tests.Guidebook;
/// </summary> /// </summary>
[TestFixture] [TestFixture]
[TestOf(typeof(DocumentParsingManager))] [TestOf(typeof(DocumentParsingManager))]
public sealed class DocumentParsingTest public sealed class DocumentParsingTest : GameTest
{ {
public string TestDocument = @"multiple public string TestDocument = @"multiple
@@ -45,7 +46,7 @@ whitespace before newlines are ignored.
[Test] [Test]
public async Task ParseTestDocument() public async Task ParseTestDocument()
{ {
await using var pair = await PoolManager.GetServerClient(); var pair = Pair;
var client = pair.Client; var client = pair.Client;
await client.WaitIdleAsync(); await client.WaitIdleAsync();
var parser = client.ResolveDependency<DocumentParsingManager>(); var parser = client.ResolveDependency<DocumentParsingManager>();
@@ -133,8 +134,6 @@ whitespace before newlines are ignored.
subTest2.Params.TryGetValue("k", out val); subTest2.Params.TryGetValue("k", out val);
Assert.That(val, Is.EqualTo(@"<>\>=""=<-_?*3.0//")); Assert.That(val, Is.EqualTo(@"<>\>=""=<-_?*3.0//"));
await pair.CleanReturnAsync();
} }
public sealed class TestControl : Control, IDocumentTag public sealed class TestControl : Control, IDocumentTag
@@ -1,5 +1,6 @@
using Content.Client.Guidebook; using Content.Client.Guidebook;
using Content.Client.Guidebook.Richtext; using Content.Client.Guidebook.Richtext;
using Content.IntegrationTests.Fixtures;
using Robust.Shared.ContentPack; using Robust.Shared.ContentPack;
using Robust.Shared.Prototypes; using Robust.Shared.Prototypes;
using Content.IntegrationTests.Utility; using Content.IntegrationTests.Utility;
@@ -12,7 +13,7 @@ namespace Content.IntegrationTests.Tests.Guidebook;
[TestOf(typeof(GuidebookSystem))] [TestOf(typeof(GuidebookSystem))]
[TestOf(typeof(GuideEntryPrototype))] [TestOf(typeof(GuideEntryPrototype))]
[TestOf(typeof(DocumentParsingManager))] [TestOf(typeof(DocumentParsingManager))]
public sealed class GuideEntryPrototypeTests public sealed class GuideEntryPrototypeTests : GameTest
{ {
private static string[] _guideEntries = GameDataScrounger.PrototypesOfKind<GuideEntryPrototype>(); private static string[] _guideEntries = GameDataScrounger.PrototypesOfKind<GuideEntryPrototype>();
@@ -21,7 +22,7 @@ public sealed class GuideEntryPrototypeTests
[Description("Ensures a given guidebook entry is valid, checking the document/etc.")] [Description("Ensures a given guidebook entry is valid, checking the document/etc.")]
public async Task Validate(string protoKey) public async Task Validate(string protoKey)
{ {
await using var pair = await PoolManager.GetServerClient(new PoolSettings { Connected = true }); var pair = Pair;
var client = pair.Client; var client = pair.Client;
await client.WaitIdleAsync(); await client.WaitIdleAsync();
var protoMan = client.ResolveDependency<IPrototypeManager>(); var protoMan = client.ResolveDependency<IPrototypeManager>();
@@ -36,7 +37,5 @@ public sealed class GuideEntryPrototypeTests
Assert.That(parser.TryAddMarkup(new Document(), text), $"Failed to parse the guide entry's document."); Assert.That(parser.TryAddMarkup(new Document(), text), $"Failed to parse the guide entry's document.");
}); });
await pair.CleanReturnAsync();
} }
} }
@@ -1,4 +1,5 @@
using System.Linq; using System.Linq;
using Content.IntegrationTests.Fixtures;
using Content.Server.Storage.EntitySystems; using Content.Server.Storage.EntitySystems;
using Content.Shared.Hands.Components; using Content.Shared.Hands.Components;
using Content.Shared.Hands.EntitySystems; using Content.Shared.Hands.EntitySystems;
@@ -10,7 +11,7 @@ using Robust.Shared.GameObjects;
namespace Content.IntegrationTests.Tests.Hands; namespace Content.IntegrationTests.Tests.Hands;
[TestFixture] [TestFixture]
public sealed class HandTests public sealed class HandTests : GameTest
{ {
[TestPrototypes] [TestPrototypes]
private const string Prototypes = @" private const string Prototypes = @"
@@ -25,14 +26,16 @@ public sealed class HandTests
"; ";
public override PoolSettings PoolSettings => new()
{
Connected = true,
DummyTicker = false
};
[Test] [Test]
public async Task TestPickupDrop() public async Task TestPickupDrop()
{ {
await using var pair = await PoolManager.GetServerClient(new PoolSettings var pair = Pair;
{
Connected = true,
DummyTicker = false
});
var server = pair.Server; var server = pair.Server;
var entMan = server.ResolveDependency<IEntityManager>(); var entMan = server.ResolveDependency<IEntityManager>();
@@ -69,17 +72,12 @@ public sealed class HandTests
Assert.That(sys.GetActiveItem((player, hands)), Is.Null); Assert.That(sys.GetActiveItem((player, hands)), Is.Null);
await server.WaitPost(() => mapSystem.DeleteMap(data.MapId)); await server.WaitPost(() => mapSystem.DeleteMap(data.MapId));
await pair.CleanReturnAsync();
} }
[Test] [Test]
public async Task TestPickUpThenDropInContainer() public async Task TestPickUpThenDropInContainer()
{ {
await using var pair = await PoolManager.GetServerClient(new PoolSettings var pair = Pair;
{
Connected = true,
DummyTicker = false
});
var server = pair.Server; var server = pair.Server;
var map = await pair.CreateTestMap(); var map = await pair.CreateTestMap();
await pair.RunTicksSync(5); await pair.RunTicksSync(5);
@@ -134,6 +132,5 @@ public sealed class HandTests
Assert.That(containerSystem.IsInSameOrNoContainer((player, xform), (item, itemXform))); Assert.That(containerSystem.IsInSameOrNoContainer((player, xform), (item, itemXform)));
await server.WaitPost(() => mapSystem.DeleteMap(map.MapId)); await server.WaitPost(() => mapSystem.DeleteMap(map.MapId));
await pair.CleanReturnAsync();
} }
} }
@@ -1,3 +1,4 @@
using Content.IntegrationTests.Fixtures;
using Content.Shared.Inventory; using Content.Shared.Inventory;
using Robust.Shared.GameObjects; using Robust.Shared.GameObjects;
@@ -7,7 +8,7 @@ namespace Content.IntegrationTests.Tests
// i.e. the interaction between uniforms and the pocket/ID slots. // i.e. the interaction between uniforms and the pocket/ID slots.
// and also how big items don't fit in pockets. // and also how big items don't fit in pockets.
[TestFixture] [TestFixture]
public sealed class HumanInventoryUniformSlotsTest public sealed class HumanInventoryUniformSlotsTest : GameTest
{ {
[TestPrototypes] [TestPrototypes]
private const string Prototypes = @" private const string Prototypes = @"
@@ -55,7 +56,7 @@ namespace Content.IntegrationTests.Tests
[Test] [Test]
public async Task Test() public async Task Test()
{ {
await using var pair = await PoolManager.GetServerClient(); var pair = Pair;
var server = pair.Server; var server = pair.Server;
var testMap = await pair.CreateTestMap(); var testMap = await pair.CreateTestMap();
var coordinates = testMap.GridCoords; var coordinates = testMap.GridCoords;
@@ -130,8 +131,6 @@ namespace Content.IntegrationTests.Tests
mapSystem.DeleteMap(testMap.MapId); mapSystem.DeleteMap(testMap.MapId);
}); });
await pair.CleanReturnAsync();
} }
private static bool IsDescendant(EntityUid descendant, EntityUid parent, IEntityManager entManager) private static bool IsDescendant(EntityUid descendant, EntityUid parent, IEntityManager entManager)
@@ -1,5 +1,6 @@
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq; using System.Linq;
using Content.IntegrationTests.Fixtures;
using Content.Shared.Body; using Content.Shared.Body;
using Content.Shared.Clothing.Components; using Content.Shared.Clothing.Components;
using Content.Shared.Humanoid; using Content.Shared.Humanoid;
@@ -8,13 +9,12 @@ using Robust.Shared.Prototypes;
namespace Content.IntegrationTests.Tests.Humanoid; namespace Content.IntegrationTests.Tests.Humanoid;
[TestFixture] [TestFixture]
public sealed class HideablePrototypeValidation public sealed class HideablePrototypeValidation : GameTest
{ {
[Test] [Test]
public async Task NoOrgansWithoutClothing() public async Task NoOrgansWithoutClothing()
{ {
await using var pair = await PoolManager.GetServerClient(); var pair = Pair;
var requirements = new Dictionary<Enum, HashSet<EntProtoId>>(); var requirements = new Dictionary<Enum, HashSet<EntProtoId>>();
foreach (var (proto, component) in pair.GetPrototypesWithComponent<VisualOrganMarkingsComponent>()) foreach (var (proto, component) in pair.GetPrototypesWithComponent<VisualOrganMarkingsComponent>())
{ {
@@ -42,14 +42,12 @@ public sealed class HideablePrototypeValidation
{ {
Assert.That(provided, Does.Contain(key), $"No clothing will hide {key} that can be hidden on {string.Join(", ", requirement.Select(it => it.Id))}"); Assert.That(provided, Does.Contain(key), $"No clothing will hide {key} that can be hidden on {string.Join(", ", requirement.Select(it => it.Id))}");
} }
await pair.CleanReturnAsync();
} }
[Test] [Test]
public async Task NoClothingWithoutOrgans() public async Task NoClothingWithoutOrgans()
{ {
await using var pair = await PoolManager.GetServerClient(); var pair = Pair;
var requirements = new Dictionary<Enum, HashSet<EntProtoId>>(); var requirements = new Dictionary<Enum, HashSet<EntProtoId>>();
foreach (var (proto, component) in pair.GetPrototypesWithComponent<HideLayerClothingComponent>()) foreach (var (proto, component) in pair.GetPrototypesWithComponent<HideLayerClothingComponent>())
@@ -74,7 +72,5 @@ public sealed class HideablePrototypeValidation
{ {
Assert.That(provided, Does.Contain(key), $"No organ will hide {key} that can be hidden by {string.Join(", ", requirement.Select(it => it.Id))}"); Assert.That(provided, Does.Contain(key), $"No organ will hide {key} that can be hidden by {string.Join(", ", requirement.Select(it => it.Id))}");
} }
await pair.CleanReturnAsync();
} }
} }
@@ -1,3 +1,4 @@
using Content.IntegrationTests.Fixtures;
using Content.Shared.Humanoid; using Content.Shared.Humanoid;
using Content.Shared.Humanoid.Prototypes; using Content.Shared.Humanoid.Prototypes;
using Content.Shared.Preferences; using Content.Shared.Preferences;
@@ -10,14 +11,14 @@ namespace Content.IntegrationTests.Tests.Humanoid;
[TestFixture] [TestFixture]
[TestOf(typeof(HumanoidProfileSystem))] [TestOf(typeof(HumanoidProfileSystem))]
public sealed class HumanoidProfileTests public sealed class HumanoidProfileTests : GameTest
{ {
private static readonly ProtoId<SpeciesPrototype> Vox = "Vox"; private static readonly ProtoId<SpeciesPrototype> Vox = "Vox";
[Test] [Test]
public async Task EnsureValidLoading() public async Task EnsureValidLoading()
{ {
await using var pair = await PoolManager.GetServerClient(); var pair = Pair;
var server = pair.Server; var server = pair.Server;
await server.WaitIdleAsync(); await server.WaitIdleAsync();
@@ -43,7 +44,5 @@ public sealed class HumanoidProfileTests
Assert.That(voiceComponent.Sounds, Is.Not.Null, message: "the MobHuman spawned by this test needs to have sex-specific sound set"); Assert.That(voiceComponent.Sounds, Is.Not.Null, message: "the MobHuman spawned by this test needs to have sex-specific sound set");
Assert.That(voiceComponent.Sounds![Sex.Female], Is.EqualTo(voiceComponent.EmoteSounds)); Assert.That(voiceComponent.Sounds![Sex.Female], Is.EqualTo(voiceComponent.EmoteSounds));
}); });
await pair.CleanReturnAsync();
} }
} }
@@ -1,5 +1,6 @@
#nullable enable annotations #nullable enable annotations
using System.Numerics; using System.Numerics;
using Content.IntegrationTests.Fixtures;
using Content.Server.Interaction; using Content.Server.Interaction;
using Content.Shared.Hands.Components; using Content.Shared.Hands.Components;
using Content.Shared.Hands.EntitySystems; using Content.Shared.Hands.EntitySystems;
@@ -16,7 +17,7 @@ namespace Content.IntegrationTests.Tests.Interaction.Click
{ {
[TestFixture] [TestFixture]
[TestOf(typeof(InteractionSystem))] [TestOf(typeof(InteractionSystem))]
public sealed class InteractionSystemTests public sealed class InteractionSystemTests : GameTest
{ {
[TestPrototypes] [TestPrototypes]
private const string Prototypes = @" private const string Prototypes = @"
@@ -40,7 +41,7 @@ namespace Content.IntegrationTests.Tests.Interaction.Click
[Test] [Test]
public async Task InteractionTest() public async Task InteractionTest()
{ {
await using var pair = await PoolManager.GetServerClient(); var pair = Pair;
var server = pair.Server; var server = pair.Server;
var sEntities = server.ResolveDependency<IEntityManager>(); var sEntities = server.ResolveDependency<IEntityManager>();
@@ -101,13 +102,12 @@ namespace Content.IntegrationTests.Tests.Interaction.Click
}); });
testInteractionSystem.ClearHandlers(); testInteractionSystem.ClearHandlers();
await pair.CleanReturnAsync();
} }
[Test] [Test]
public async Task InteractionObstructionTest() public async Task InteractionObstructionTest()
{ {
await using var pair = await PoolManager.GetServerClient(); var pair = Pair;
var server = pair.Server; var server = pair.Server;
var sEntities = server.ResolveDependency<IEntityManager>(); var sEntities = server.ResolveDependency<IEntityManager>();
@@ -168,13 +168,12 @@ namespace Content.IntegrationTests.Tests.Interaction.Click
}); });
testInteractionSystem.ClearHandlers(); testInteractionSystem.ClearHandlers();
await pair.CleanReturnAsync();
} }
[Test] [Test]
public async Task InteractionInRangeTest() public async Task InteractionInRangeTest()
{ {
await using var pair = await PoolManager.GetServerClient(); var pair = Pair;
var server = pair.Server; var server = pair.Server;
var sEntities = server.ResolveDependency<IEntityManager>(); var sEntities = server.ResolveDependency<IEntityManager>();
@@ -234,14 +233,13 @@ namespace Content.IntegrationTests.Tests.Interaction.Click
}); });
testInteractionSystem.ClearHandlers(); testInteractionSystem.ClearHandlers();
await pair.CleanReturnAsync();
} }
[Test] [Test]
public async Task InteractionOutOfRangeTest() public async Task InteractionOutOfRangeTest()
{ {
await using var pair = await PoolManager.GetServerClient(); var pair = Pair;
var server = pair.Server; var server = pair.Server;
var sEntities = server.ResolveDependency<IEntityManager>(); var sEntities = server.ResolveDependency<IEntityManager>();
@@ -300,13 +298,12 @@ namespace Content.IntegrationTests.Tests.Interaction.Click
}); });
testInteractionSystem.ClearHandlers(); testInteractionSystem.ClearHandlers();
await pair.CleanReturnAsync();
} }
[Test] [Test]
public async Task InsideContainerInteractionBlockTest() public async Task InsideContainerInteractionBlockTest()
{ {
await using var pair = await PoolManager.GetServerClient(); var pair = Pair;
var server = pair.Server; var server = pair.Server;
var sEntities = server.ResolveDependency<IEntityManager>(); var sEntities = server.ResolveDependency<IEntityManager>();
@@ -388,7 +385,6 @@ namespace Content.IntegrationTests.Tests.Interaction.Click
}); });
testInteractionSystem.ClearHandlers(); testInteractionSystem.ClearHandlers();
await pair.CleanReturnAsync();
} }
public sealed class TestInteractionSystem : EntitySystem public sealed class TestInteractionSystem : EntitySystem
@@ -1,4 +1,5 @@
using System.Numerics; using System.Numerics;
using Content.IntegrationTests.Fixtures;
using Content.Shared.Interaction; using Content.Shared.Interaction;
using Robust.Server.GameObjects; using Robust.Server.GameObjects;
using Robust.Shared.Containers; using Robust.Shared.Containers;
@@ -10,7 +11,7 @@ namespace Content.IntegrationTests.Tests.Interaction
{ {
[TestFixture] [TestFixture]
[TestOf(typeof(SharedInteractionSystem))] [TestOf(typeof(SharedInteractionSystem))]
public sealed class InRangeUnobstructed public sealed class InRangeUnobstructed : GameTest
{ {
private const string HumanId = "MobHuman"; private const string HumanId = "MobHuman";
@@ -27,7 +28,7 @@ namespace Content.IntegrationTests.Tests.Interaction
[Test] [Test]
public async Task EntityEntityTest() public async Task EntityEntityTest()
{ {
await using var pair = await PoolManager.GetServerClient(); var pair = Pair;
var server = pair.Server; var server = pair.Server;
var sEntities = server.ResolveDependency<IEntityManager>(); var sEntities = server.ResolveDependency<IEntityManager>();
@@ -109,8 +110,6 @@ namespace Content.IntegrationTests.Tests.Interaction
Assert.That(interactionSys.InRangeUnobstructed(mapCoordinates, origin, InteractionRangeDivided15Times3)); Assert.That(interactionSys.InRangeUnobstructed(mapCoordinates, origin, InteractionRangeDivided15Times3));
}); });
}); });
await pair.CleanReturnAsync();
} }
} }
} }
@@ -175,7 +175,7 @@ public abstract partial class InteractionTest
[SetUp] [SetUp]
public virtual async Task Setup() public virtual async Task Setup()
{ {
Pair = await PoolManager.GetServerClient(Settings); Pair = await PoolManager.GetServerClient(Settings, new NUnitTestContextWrap(TestContext.CurrentContext, TestContext.Out));
// server dependencies // server dependencies
SEntMan = Server.ResolveDependency<IEntityManager>(); SEntMan = Server.ResolveDependency<IEntityManager>();
@@ -1,3 +1,4 @@
using Content.IntegrationTests.Fixtures;
using Content.Server.Atmos.EntitySystems; using Content.Server.Atmos.EntitySystems;
using Content.Server.Body.Systems; using Content.Server.Body.Systems;
using Content.Server.Station.Systems; using Content.Server.Station.Systems;
@@ -7,12 +8,12 @@ namespace Content.IntegrationTests.Tests.Internals;
[TestFixture] [TestFixture]
[TestOf(typeof(InternalsSystem))] [TestOf(typeof(InternalsSystem))]
public sealed class AutoInternalsTests public sealed class AutoInternalsTests : GameTest
{ {
[Test] [Test]
public async Task TestInternalsAutoActivateInSpaceForStationSpawn() public async Task TestInternalsAutoActivateInSpaceForStationSpawn()
{ {
await using var pair = await PoolManager.GetServerClient(); var pair = Pair;
var server = pair.Server; var server = pair.Server;
var testMap = await pair.CreateTestMap(); var testMap = await pair.CreateTestMap();
@@ -31,14 +32,12 @@ public sealed class AutoInternalsTests
server.EntMan.DeleteEntity(dummy); server.EntMan.DeleteEntity(dummy);
}); });
await pair.CleanReturnAsync();
} }
[Test] [Test]
public async Task TestInternalsAutoActivateInSpaceForEntitySpawn() public async Task TestInternalsAutoActivateInSpaceForEntitySpawn()
{ {
await using var pair = await PoolManager.GetServerClient(); var pair = Pair;
var server = pair.Server; var server = pair.Server;
var testMap = await pair.CreateTestMap(); var testMap = await pair.CreateTestMap();
@@ -55,8 +54,6 @@ public sealed class AutoInternalsTests
server.EntMan.DeleteEntity(dummy); server.EntMan.DeleteEntity(dummy);
}); });
await pair.CleanReturnAsync();
} }
[TestPrototypes] [TestPrototypes]
@@ -1,3 +1,4 @@
using Content.IntegrationTests.Fixtures;
using Content.Server.Stunnable; using Content.Server.Stunnable;
using Content.Shared.Inventory; using Content.Shared.Inventory;
using Robust.Shared.GameObjects; using Robust.Shared.GameObjects;
@@ -7,7 +8,7 @@ using Robust.Shared.Map;
namespace Content.IntegrationTests.Tests namespace Content.IntegrationTests.Tests
{ {
[TestFixture] [TestFixture]
public sealed class InventoryHelpersTest public sealed class InventoryHelpersTest : GameTest
{ {
[TestPrototypes] [TestPrototypes]
private const string Prototypes = @" private const string Prototypes = @"
@@ -39,7 +40,7 @@ namespace Content.IntegrationTests.Tests
[Test] [Test]
public async Task SpawnItemInSlotTest() public async Task SpawnItemInSlotTest()
{ {
await using var pair = await PoolManager.GetServerClient(); var pair = Pair;
var server = pair.Server; var server = pair.Server;
var sEntities = server.ResolveDependency<IEntityManager>(); var sEntities = server.ResolveDependency<IEntityManager>();
@@ -87,8 +88,6 @@ namespace Content.IntegrationTests.Tests
#pragma warning restore NUnit2045 #pragma warning restore NUnit2045
sEntities.DeleteEntity(human); sEntities.DeleteEntity(human);
}); });
await pair.CleanReturnAsync();
} }
} }
} }
@@ -1,5 +1,6 @@
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq; using System.Linq;
using Content.IntegrationTests.Fixtures;
using Content.Shared.Lathe; using Content.Shared.Lathe;
using Content.Shared.Materials; using Content.Shared.Materials;
using Content.Shared.Prototypes; using Content.Shared.Prototypes;
@@ -11,12 +12,12 @@ using Robust.Shared.Prototypes;
namespace Content.IntegrationTests.Tests.Lathe; namespace Content.IntegrationTests.Tests.Lathe;
[TestFixture] [TestFixture]
public sealed class LatheTest public sealed class LatheTest : GameTest
{ {
[Test] [Test]
public async Task TestLatheRecipeIngredientsFitLathe() public async Task TestLatheRecipeIngredientsFitLathe()
{ {
await using var pair = await PoolManager.GetServerClient(); var pair = Pair;
var server = pair.Server; var server = pair.Server;
var mapData = await pair.CreateTestMap(); var mapData = await pair.CreateTestMap();
@@ -111,14 +112,12 @@ public sealed class LatheTest
} }
}); });
}); });
await pair.CleanReturnAsync();
} }
[Test] [Test]
public async Task AllLatheRecipesValidTest() public async Task AllLatheRecipesValidTest()
{ {
await using var pair = await PoolManager.GetServerClient(); var pair = Pair;
var server = pair.Server; var server = pair.Server;
var proto = server.ProtoMan; var proto = server.ProtoMan;
@@ -131,7 +130,5 @@ public sealed class LatheTest
Assert.That(recipe.ResultReagents, Is.Not.Null, $"Recipe '{recipe.ID}' has no result or result reagents."); Assert.That(recipe.ResultReagents, Is.Not.Null, $"Recipe '{recipe.ID}' has no result or result reagents.");
} }
}); });
await pair.CleanReturnAsync();
} }
} }
@@ -1,5 +1,6 @@
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq; using System.Linq;
using Content.IntegrationTests.Fixtures;
using Content.Shared.Tag; using Content.Shared.Tag;
using Robust.Shared.GameObjects; using Robust.Shared.GameObjects;
using Robust.Shared.Prototypes; using Robust.Shared.Prototypes;
@@ -11,12 +12,12 @@ namespace Content.IntegrationTests.Tests.Linter;
/// Verify that the yaml linter successfully validates static fields /// Verify that the yaml linter successfully validates static fields
/// </summary> /// </summary>
[TestFixture] [TestFixture]
public sealed class StaticFieldValidationTest public sealed class StaticFieldValidationTest : GameTest
{ {
[Test] [Test]
public async Task TestStaticFieldValidation() public async Task TestStaticFieldValidation()
{ {
await using var pair = await PoolManager.GetServerClient(); var pair = Pair;
var protoMan = pair.Server.ProtoMan; var protoMan = pair.Server.ProtoMan;
var protos = new Dictionary<Type, HashSet<string>>(); var protos = new Dictionary<Type, HashSet<string>>();
@@ -49,8 +50,6 @@ public sealed class StaticFieldValidationTest
Assert.That(protoMan.ValidateStaticFields(typeof(ProtoIdListInvalid), protos), Has.Count.EqualTo(2)); Assert.That(protoMan.ValidateStaticFields(typeof(ProtoIdListInvalid), protos), Has.Count.EqualTo(2));
Assert.That(protoMan.ValidateStaticFields(typeof(ProtoIdSetInvalid), protos), Has.Count.EqualTo(2)); Assert.That(protoMan.ValidateStaticFields(typeof(ProtoIdSetInvalid), protos), Has.Count.EqualTo(2));
Assert.That(protoMan.ValidateStaticFields(typeof(PrivateProtoIdArrayInvalid), protos), Has.Count.EqualTo(2)); Assert.That(protoMan.ValidateStaticFields(typeof(PrivateProtoIdArrayInvalid), protos), Has.Count.EqualTo(2));
await pair.CleanReturnAsync();
} }
[TestPrototypes] [TestPrototypes]
@@ -1,4 +1,5 @@
using Content.Client.Lobby; using Content.Client.Lobby;
using Content.IntegrationTests.Fixtures;
using Content.Server.Preferences.Managers; using Content.Server.Preferences.Managers;
using Content.Shared.Humanoid; using Content.Shared.Humanoid;
using Content.Shared.Preferences; using Content.Shared.Preferences;
@@ -9,12 +10,14 @@ namespace Content.IntegrationTests.Tests.Lobby;
[TestFixture] [TestFixture]
[TestOf(typeof(ClientPreferencesManager))] [TestOf(typeof(ClientPreferencesManager))]
[TestOf(typeof(ServerPreferencesManager))] [TestOf(typeof(ServerPreferencesManager))]
public sealed class CharacterCreationTest public sealed class CharacterCreationTest : GameTest
{ {
public override PoolSettings PoolSettings => new() { InLobby = true };
[Test] [Test]
public async Task CreateDeleteCreateTest() public async Task CreateDeleteCreateTest()
{ {
await using var pair = await PoolManager.GetServerClient(new PoolSettings { InLobby = true }); var pair = Pair;
var server = pair.Server; var server = pair.Server;
var client = pair.Client; var client = pair.Client;
var user = pair.Client.User!.Value; var user = pair.Client.User!.Value;
@@ -72,7 +75,6 @@ public sealed class CharacterCreationTest
serverCharacters = serverPrefManager.GetPreferences(user).Characters; serverCharacters = serverPrefManager.GetPreferences(user).Characters;
Assert.That(serverCharacters, Has.Count.EqualTo(2)); Assert.That(serverCharacters, Has.Count.EqualTo(2));
AssertEqual(serverCharacters[1], profile); AssertEqual(serverCharacters[1], profile);
await pair.CleanReturnAsync();
} }
private void AssertEqual(HumanoidCharacterProfile a, HumanoidCharacterProfile b) private void AssertEqual(HumanoidCharacterProfile a, HumanoidCharacterProfile b)
@@ -1,20 +1,23 @@
using System.Linq; using System.Linq;
using Content.IntegrationTests.Fixtures;
using Content.Shared.CCVar; using Content.Shared.CCVar;
using Robust.Server.Player; using Robust.Server.Player;
using Robust.Shared.Configuration; using Robust.Shared.Configuration;
using Robust.Shared.Network; using Robust.Shared.Network;
namespace Content.IntegrationTests.Tests.Lobby; namespace Content.IntegrationTests.Tests.Lobby;
public sealed class ServerReloginTest public sealed class ServerReloginTest : GameTest
{ {
public override PoolSettings PoolSettings => new PoolSettings
{
Connected = true,
DummyTicker = false
};
[Test] [Test]
public async Task Relogin() public async Task Relogin()
{ {
await using var pair = await PoolManager.GetServerClient(new PoolSettings var pair = Pair;
{
Connected = true,
DummyTicker = false
});
var server = pair.Server; var server = pair.Server;
var client = pair.Client; var client = pair.Client;
var originalMaxPlayers = 0; var originalMaxPlayers = 0;
@@ -62,7 +65,5 @@ public sealed class ServerReloginTest
//Put the cvar back, so other tests can still use this server //Put the cvar back, so other tests can still use this server
serverConfig.SetCVar(CCVars.SoftMaxPlayers, originalMaxPlayers); serverConfig.SetCVar(CCVars.SoftMaxPlayers, originalMaxPlayers);
}); });
await pair.CleanReturnAsync();
} }
} }
@@ -1,9 +1,10 @@
using Content.IntegrationTests.Fixtures;
using Robust.Shared.Localization; using Robust.Shared.Localization;
using Robust.Shared.Prototypes; using Robust.Shared.Prototypes;
namespace Content.IntegrationTests.Tests.Localization; namespace Content.IntegrationTests.Tests.Localization;
public sealed class EntityPrototypeLocalizationTest public sealed class EntityPrototypeLocalizationTest : GameTest
{ {
/// <summary> /// <summary>
/// An explanation of why LocIds should not be used for entity prototype names/descriptions. /// An explanation of why LocIds should not be used for entity prototype names/descriptions.
@@ -18,7 +19,7 @@ public sealed class EntityPrototypeLocalizationTest
[Test] [Test]
public async Task TestNoManualEntityLocStrings() public async Task TestNoManualEntityLocStrings()
{ {
await using var pair = await PoolManager.GetServerClient(); var pair = Pair;
var server = pair.Server; var server = pair.Server;
var protoMan = server.ProtoMan; var protoMan = server.ProtoMan;
var locMan = server.ResolveDependency<ILocalizationManager>(); var locMan = server.ResolveDependency<ILocalizationManager>();
@@ -44,7 +45,5 @@ public sealed class EntityPrototypeLocalizationTest
} }
} }
}); });
await pair.CleanReturnAsync();
} }
} }
@@ -1,4 +1,5 @@
using System.Linq; using System.Linq;
using Content.IntegrationTests.Fixtures;
using Content.Shared.Dataset; using Content.Shared.Dataset;
using Robust.Shared.Localization; using Robust.Shared.Localization;
using Robust.Shared.Prototypes; using Robust.Shared.Prototypes;
@@ -6,12 +7,12 @@ using Robust.Shared.Prototypes;
namespace Content.IntegrationTests.Tests.Localization; namespace Content.IntegrationTests.Tests.Localization;
[TestFixture] [TestFixture]
public sealed class LocalizedDatasetPrototypeTest public sealed class LocalizedDatasetPrototypeTest : GameTest
{ {
[Test] [Test]
public async Task ValidProtoIdsTest() public async Task ValidProtoIdsTest()
{ {
await using var pair = await PoolManager.GetServerClient(); var pair = Pair;
var server = pair.Server; var server = pair.Server;
var protoMan = server.ResolveDependency<IPrototypeManager>(); var protoMan = server.ResolveDependency<IPrototypeManager>();
@@ -36,7 +37,5 @@ public sealed class LocalizedDatasetPrototypeTest
Assert.That(localizationMan.HasString(nextId), Is.False, $"LocalizedDataset {proto.ID} with prefix \"{proto.Values.Prefix}\" specifies {proto.Values.Count} entries, but a localized string exists with ID {nextId}! Does count need to be raised?"); Assert.That(localizationMan.HasString(nextId), Is.False, $"LocalizedDataset {proto.ID} with prefix \"{proto.Values.Prefix}\" specifies {proto.Values.Count} entries, but a localized string exists with ID {nextId}! Does count need to be raised?");
} }
}); });
await pair.CleanReturnAsync();
} }
} }
@@ -1,5 +1,6 @@
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq; using System.Linq;
using Content.IntegrationTests.Fixtures;
using Content.Server.Construction.Components; using Content.Server.Construction.Components;
using Content.Shared.Construction.Components; using Content.Shared.Construction.Components;
using Robust.Shared.GameObjects; using Robust.Shared.GameObjects;
@@ -7,7 +8,7 @@ using Robust.Shared.Prototypes;
namespace Content.IntegrationTests.Tests; namespace Content.IntegrationTests.Tests;
public sealed class MachineBoardTest public sealed class MachineBoardTest : GameTest
{ {
/// <summary> /// <summary>
/// A list of machine boards that can be ignored by this test. /// A list of machine boards that can be ignored by this test.
@@ -32,7 +33,7 @@ public sealed class MachineBoardTest
[Test] [Test]
public async Task TestMachineBoardHasValidMachine() public async Task TestMachineBoardHasValidMachine()
{ {
await using var pair = await PoolManager.GetServerClient(); var pair = Pair;
var server = pair.Server; var server = pair.Server;
var protoMan = server.ResolveDependency<IPrototypeManager>(); var protoMan = server.ResolveDependency<IPrototypeManager>();
@@ -60,8 +61,6 @@ public sealed class MachineBoardTest
}); });
} }
}); });
await pair.CleanReturnAsync();
} }
/// <summary> /// <summary>
@@ -71,7 +70,7 @@ public sealed class MachineBoardTest
[Test] [Test]
public async Task TestComputerBoardHasValidComputer() public async Task TestComputerBoardHasValidComputer()
{ {
await using var pair = await PoolManager.GetServerClient(); var pair = Pair;
var server = pair.Server; var server = pair.Server;
var protoMan = server.ResolveDependency<IPrototypeManager>(); var protoMan = server.ResolveDependency<IPrototypeManager>();
@@ -100,8 +99,6 @@ public sealed class MachineBoardTest
}); });
} }
}); });
await pair.CleanReturnAsync();
} }
/// <summary> /// <summary>
@@ -111,7 +108,7 @@ public sealed class MachineBoardTest
[Test] [Test]
public async Task TestValidateBoardComponentRequirements() public async Task TestValidateBoardComponentRequirements()
{ {
await using var pair = await PoolManager.GetServerClient(); var pair = Pair;
var server = pair.Server; var server = pair.Server;
var entMan = server.ResolveDependency<IEntityManager>(); var entMan = server.ResolveDependency<IEntityManager>();
@@ -136,7 +133,5 @@ public sealed class MachineBoardTest
}); });
} }
}); });
await pair.CleanReturnAsync();
} }
} }
@@ -1,5 +1,6 @@
using System.Collections.Generic; using System.Collections.Generic;
using Content.Client.Weapons.Ranged.Components; using Content.Client.Weapons.Ranged.Components;
using Content.IntegrationTests.Fixtures;
using Robust.Client.GameObjects; using Robust.Client.GameObjects;
using Robust.Shared.GameObjects; using Robust.Shared.GameObjects;
@@ -9,12 +10,12 @@ namespace Content.IntegrationTests.Tests;
/// Tests all entity prototypes with the MagazineVisualsComponent. /// Tests all entity prototypes with the MagazineVisualsComponent.
/// </summary> /// </summary>
[TestFixture] [TestFixture]
public sealed class MagazineVisualsSpriteTest public sealed class MagazineVisualsSpriteTest : GameTest
{ {
[Test] [Test]
public async Task MagazineVisualsSpritesExist() public async Task MagazineVisualsSpritesExist()
{ {
await using var pair = await PoolManager.GetServerClient(new PoolSettings { Connected = true }); var pair = Pair;
var client = pair.Client; var client = pair.Client;
var toTest = new List<(int, string)>(); var toTest = new List<(int, string)>();
var protos = pair.GetPrototypesWithComponent<MagazineVisualsComponent>(); var protos = pair.GetPrototypesWithComponent<MagazineVisualsComponent>();
@@ -67,7 +68,5 @@ public sealed class MagazineVisualsSpriteTest
} }
}); });
}); });
await pair.CleanReturnAsync();
} }
} }
@@ -1,3 +1,4 @@
using Content.IntegrationTests.Fixtures;
using Robust.Server.GameObjects; using Robust.Server.GameObjects;
using Robust.Shared.GameObjects; using Robust.Shared.GameObjects;
using Robust.Shared.Map; using Robust.Shared.Map;
@@ -5,15 +6,18 @@ using Robust.Shared.Map;
namespace Content.IntegrationTests.Tests.Mapping; namespace Content.IntegrationTests.Tests.Mapping;
[TestFixture] [TestFixture]
public sealed class MappingTests public sealed class MappingTests : GameTest
{ {
public override PoolSettings PoolSettings =>
new() { Dirty = true, Connected = true, DummyTicker = false };
/// <summary> /// <summary>
/// Checks that the mapping command creates paused & uninitialized maps. /// Checks that the mapping command creates paused & uninitialized maps.
/// </summary> /// </summary>
[Test] [Test]
public async Task MappingTest() public async Task MappingTest()
{ {
await using var pair = await PoolManager.GetServerClient(new PoolSettings { Dirty = true, Connected = true, DummyTicker = false }); var pair = Pair;
var server = pair.Server; var server = pair.Server;
var entMan = server.EntMan; var entMan = server.EntMan;
@@ -97,6 +101,5 @@ public sealed class MappingTests
Assert.That(server.MetaData(ent).EntityPaused, Is.True); Assert.That(server.MetaData(ent).EntityPaused, Is.True);
await server.WaitPost(() => entMan.DeleteEntity(map)); await server.WaitPost(() => entMan.DeleteEntity(map));
await pair.CleanReturnAsync();
} }
} }
@@ -1,19 +1,17 @@
using Content.Client.Gameplay; using Content.Client.Gameplay;
using Content.Client.Mapping; using Content.Client.Mapping;
using Content.IntegrationTests.Fixtures;
using Robust.Client.State; using Robust.Client.State;
namespace Content.IntegrationTests.Tests; namespace Content.IntegrationTests.Tests;
[TestFixture] [TestFixture]
public sealed class MappingEditorTest public sealed class MappingEditorTest : GameTest
{ {
[Test] [Test]
public async Task StopHardCodingWidgetsJesusChristTest() public async Task StopHardCodingWidgetsJesusChristTest()
{ {
await using var pair = await PoolManager.GetServerClient(new PoolSettings var pair = Pair;
{
Connected = true
});
var client = pair.Client; var client = pair.Client;
var state = client.ResolveDependency<IStateManager>(); var state = client.ResolveDependency<IStateManager>();
@@ -35,7 +33,5 @@ public sealed class MappingEditorTest
state.RequestStateChange<GameplayState>(); state.RequestStateChange<GameplayState>();
}); });
}); });
await pair.CleanReturnAsync();
} }
} }

Some files were not shown because too many files have changed in this diff Show More