diff --git a/Content.IntegrationTests/Tests/Interaction/InteractionTest.EntitySpecifier.cs b/Content.IntegrationTests/Tests/Interaction/InteractionTest.EntitySpecifier.cs
index 414cf4bb56..37dca72137 100644
--- a/Content.IntegrationTests/Tests/Interaction/InteractionTest.EntitySpecifier.cs
+++ b/Content.IntegrationTests/Tests/Interaction/InteractionTest.EntitySpecifier.cs
@@ -3,6 +3,7 @@ using Content.Shared.Stacks;
using Robust.Shared.GameObjects;
using Robust.Shared.Map;
using Robust.Shared.Prototypes;
+using static Robust.UnitTesting.RobustIntegrationTest;
namespace Content.IntegrationTests.Tests.Interaction;
@@ -54,7 +55,7 @@ public abstract partial class InteractionTest
///
/// Convert applicable entity prototypes into stack prototypes.
///
- public void ConvertToStack(IPrototypeManager protoMan, IComponentFactory factory)
+ public async Task ConvertToStack(IPrototypeManager protoMan, IComponentFactory factory, ServerIntegrationInstance server)
{
if (Converted)
return;
@@ -73,11 +74,14 @@ public abstract partial class InteractionTest
return;
}
- if (entProto.TryGetComponent(factory.GetComponentName(typeof(StackComponent)),
- out var stackComp))
+ StackComponent? stack = null;
+ await server.WaitPost(() =>
{
- Prototype = stackComp.StackTypeId;
- }
+ entProto.TryGetComponent(factory.GetComponentName(typeof(StackComponent)), out stack);
+ });
+
+ if (stack != null)
+ Prototype = stack.StackTypeId;
}
}
@@ -100,11 +104,14 @@ public abstract partial class InteractionTest
return default;
}
- if (entProto.TryGetComponent(Factory.GetComponentName(typeof(StackComponent)),
- out var stackComp))
+ StackComponent? stack = null;
+ await Server.WaitPost(() =>
{
- return await SpawnEntity((stackComp.StackTypeId, spec.Quantity), coords);
- }
+ entProto.TryGetComponent(Factory.GetComponentName(typeof(StackComponent)), out stack);
+ });
+
+ if (stack != null)
+ return await SpawnEntity((stack.StackTypeId, spec.Quantity), coords);
Assert.That(spec.Quantity, Is.EqualTo(1), "SpawnEntity only supports returning a singular entity");
await Server.WaitPost(() => uid = SEntMan.SpawnEntity(spec.Prototype, coords));
diff --git a/Content.IntegrationTests/Tests/Interaction/InteractionTest.EntitySpecifierCollection.cs b/Content.IntegrationTests/Tests/Interaction/InteractionTest.EntitySpecifierCollection.cs
index 520d2699c1..7f7de3318b 100644
--- a/Content.IntegrationTests/Tests/Interaction/InteractionTest.EntitySpecifierCollection.cs
+++ b/Content.IntegrationTests/Tests/Interaction/InteractionTest.EntitySpecifierCollection.cs
@@ -5,6 +5,7 @@ using Content.Shared.Stacks;
using Robust.Shared.GameObjects;
using Robust.Shared.Prototypes;
using Robust.Shared.Utility;
+using static Robust.UnitTesting.RobustIntegrationTest;
namespace Content.IntegrationTests.Tests.Interaction;
@@ -111,7 +112,7 @@ public abstract partial class InteractionTest
///
/// Convert applicable entity prototypes into stack prototypes.
///
- public void ConvertToStacks(IPrototypeManager protoMan, IComponentFactory factory)
+ public async Task ConvertToStacks(IPrototypeManager protoMan, IComponentFactory factory, ServerIntegrationInstance server)
{
if (Converted)
return;
@@ -130,14 +131,17 @@ public abstract partial class InteractionTest
continue;
}
- if (!entProto.TryGetComponent(factory.GetComponentName(typeof(StackComponent)),
- out var stackComp))
+ StackComponent? stack = null;
+ await server.WaitPost(() =>
{
+ entProto.TryGetComponent(factory.GetComponentName(typeof(StackComponent)), out stack);
+ });
+
+ if (stack == null)
continue;
- }
toRemove.Add(id);
- toAdd.Add((stackComp.StackTypeId, quantity));
+ toAdd.Add((stack.StackTypeId, quantity));
}
foreach (var id in toRemove)
diff --git a/Content.IntegrationTests/Tests/Interaction/InteractionTest.Helpers.cs b/Content.IntegrationTests/Tests/Interaction/InteractionTest.Helpers.cs
index 95cf8a06df..19ca83a971 100644
--- a/Content.IntegrationTests/Tests/Interaction/InteractionTest.Helpers.cs
+++ b/Content.IntegrationTests/Tests/Interaction/InteractionTest.Helpers.cs
@@ -5,12 +5,9 @@ using System.Linq;
using System.Numerics;
using System.Reflection;
using Content.Client.Construction;
-using Content.Server.Atmos;
-using Content.Server.Atmos.Components;
using Content.Server.Atmos.EntitySystems;
using Content.Server.Construction.Components;
using Content.Server.Gravity;
-using Content.Server.Item;
using Content.Server.Power.Components;
using Content.Shared.Atmos;
using Content.Shared.Construction.Prototypes;
@@ -634,7 +631,7 @@ public abstract partial class InteractionTest
var entities = await DoEntityLookup(flags);
var found = ToEntityCollection(entities);
expected.Remove(found);
- expected.ConvertToStacks(ProtoMan, Factory);
+ await expected.ConvertToStacks(ProtoMan, Factory, Server);
if (expected.Entities.Count == 0)
return;
@@ -670,7 +667,7 @@ public abstract partial class InteractionTest
LookupFlags flags = LookupFlags.Uncontained | LookupFlags.Contained,
bool shouldSucceed = true)
{
- spec.ConvertToStack(ProtoMan, Factory);
+ await spec.ConvertToStack(ProtoMan, Factory, Server);
var entities = await DoEntityLookup(flags);
foreach (var uid in entities)
diff --git a/Content.IntegrationTests/Tests/StorageTest.cs b/Content.IntegrationTests/Tests/StorageTest.cs
index 659b310661..2d28534347 100644
--- a/Content.IntegrationTests/Tests/StorageTest.cs
+++ b/Content.IntegrationTests/Tests/StorageTest.cs
@@ -92,23 +92,32 @@ namespace Content.IntegrationTests.Tests
var allSizes = protoMan.EnumeratePrototypes().ToList();
allSizes.Sort();
- Assert.Multiple(() =>
+ await Assert.MultipleAsync(async () =>
{
foreach (var proto in pair.GetPrototypesWithComponent())
{
if (proto.HasComponent(compFact))
continue;
- if (!proto.TryGetComponent("Storage", out var storage))
+ StorageComponent? storage = null;
+ ItemComponent? item = null;
+ StorageFillComponent fill = default!;
+ var size = 0;
+ await server.WaitAssertion(() =>
{
- Assert.Fail($"Entity {proto.ID} has storage-fill without a storage component!");
+ if (!proto.TryGetComponent("Storage", out storage))
+ {
+ Assert.Fail($"Entity {proto.ID} has storage-fill without a storage component!");
+ return;
+ }
+
+ proto.TryGetComponent("Item", out item);
+ fill = (StorageFillComponent) proto.Components[id].Component;
+ size = GetFillSize(fill, false, protoMan, itemSys);
+ });
+
+ if (storage == null)
continue;
- }
-
- proto.TryGetComponent("Item", out var item);
-
- var fill = (StorageFillComponent) proto.Components[id].Component;
- var size = GetFillSize(fill, false, protoMan, itemSys);
var maxSize = storage.MaxItemSize;
if (storage.MaxItemSize == null)
@@ -138,7 +147,13 @@ namespace Content.IntegrationTests.Tests
if (!protoMan.TryIndex(entry.PrototypeId, out var fillItem))
continue;
- if (!fillItem.TryGetComponent("Item", out var entryItem))
+ ItemComponent? entryItem = null;
+ await server.WaitPost(() =>
+ {
+ fillItem.TryGetComponent("Item", out entryItem);
+ });
+
+ if (entryItem == null)
continue;
Assert.That(protoMan.Index(entryItem.Size).Weight,
@@ -164,25 +179,25 @@ namespace Content.IntegrationTests.Tests
var itemSys = entMan.System();
- Assert.Multiple(() =>
+ foreach (var proto in pair.GetPrototypesWithComponent())
{
- foreach (var proto in pair.GetPrototypesWithComponent())
- {
- if (proto.HasComponent(compFact))
- continue;
+ if (proto.HasComponent(compFact))
+ continue;
- if (!proto.TryGetComponent("EntityStorage", out var entStorage))
- {
+ await server.WaitAssertion(() =>
+ {
+ if (!proto.TryGetComponent("EntityStorage", out EntityStorageComponent? entStorage))
Assert.Fail($"Entity {proto.ID} has storage-fill without a storage component!");
- continue;
- }
+
+ if (entStorage == null)
+ return;
var fill = (StorageFillComponent) proto.Components[id].Component;
var size = GetFillSize(fill, true, protoMan, itemSys);
Assert.That(size, Is.LessThanOrEqualTo(entStorage.Capacity),
$"{proto.ID} storage fill is too large.");
- }
- });
+ });
+ }
await pair.CleanReturnAsync();
}