Try fix even more random mind test failures (#17581)
This commit is contained in:
@@ -23,7 +23,7 @@ public sealed partial class MindTests
|
|||||||
[Test]
|
[Test]
|
||||||
public async Task TestDeleteVisiting()
|
public async Task TestDeleteVisiting()
|
||||||
{
|
{
|
||||||
await using var pairTracker = await PoolManager.GetServerClient();
|
await using var pairTracker = await SetupPair();
|
||||||
var server = pairTracker.Pair.Server;
|
var server = pairTracker.Pair.Server;
|
||||||
|
|
||||||
var entMan = server.ResolveDependency<IServerEntityManager>();
|
var entMan = server.ResolveDependency<IServerEntityManager>();
|
||||||
@@ -145,50 +145,43 @@ public sealed partial class MindTests
|
|||||||
public async Task TestOriginalDeletedWhileGhostingKeepsGhost()
|
public async Task TestOriginalDeletedWhileGhostingKeepsGhost()
|
||||||
{
|
{
|
||||||
// Client is needed to spawn session
|
// Client is needed to spawn session
|
||||||
await using var pairTracker = await PoolManager.GetServerClient();
|
await using var pairTracker = await SetupPair();
|
||||||
var server = pairTracker.Pair.Server;
|
var server = pairTracker.Pair.Server;
|
||||||
|
|
||||||
var entMan = server.ResolveDependency<IServerEntityManager>();
|
var entMan = server.ResolveDependency<IServerEntityManager>();
|
||||||
var playerMan = server.ResolveDependency<IPlayerManager>();
|
var playerMan = server.ResolveDependency<IPlayerManager>();
|
||||||
var mindSystem = entMan.EntitySysManager.GetEntitySystem<MindSystem>();
|
var mindSystem = entMan.EntitySysManager.GetEntitySystem<MindSystem>();
|
||||||
|
var mind = GetMind(pairTracker.Pair);
|
||||||
|
|
||||||
IPlayerSession player = playerMan.ServerSessions.Single();
|
var player = playerMan.ServerSessions.Single();
|
||||||
|
Assert.NotNull(player.AttachedEntity);
|
||||||
|
Assert.That(entMan.EntityExists(player.AttachedEntity));
|
||||||
|
var originalEntity = player.AttachedEntity.Value;
|
||||||
|
|
||||||
EntityUid originalEntity = default!;
|
|
||||||
EntityUid ghost = default!;
|
EntityUid ghost = default!;
|
||||||
|
|
||||||
await server.WaitAssertion(() =>
|
await server.WaitAssertion(() =>
|
||||||
{
|
{
|
||||||
Assert.That(player.AttachedEntity, Is.Not.EqualTo(null));
|
|
||||||
originalEntity = player.AttachedEntity!.Value;
|
|
||||||
|
|
||||||
Assert.That(mindSystem.TryGetMind(player.UserId, out var mind), "could not find mind");
|
|
||||||
ghost = entMan.SpawnEntity("MobObserver", MapCoordinates.Nullspace);
|
ghost = entMan.SpawnEntity("MobObserver", MapCoordinates.Nullspace);
|
||||||
mindSystem.Visit(mind, ghost);
|
mindSystem.Visit(mind, ghost);
|
||||||
|
|
||||||
Assert.That(player.AttachedEntity, Is.EqualTo(ghost));
|
|
||||||
Assert.That(entMan.HasComponent<GhostComponent>(player.AttachedEntity), "player is not a ghost");
|
|
||||||
Assert.That(mind.VisitingEntity, Is.EqualTo(player.AttachedEntity));
|
|
||||||
Assert.That(mind.OwnedEntity, Is.EqualTo(originalEntity));
|
|
||||||
});
|
});
|
||||||
|
|
||||||
|
Assert.That(player.AttachedEntity, Is.EqualTo(ghost));
|
||||||
|
Assert.That(entMan.HasComponent<GhostComponent>(player.AttachedEntity), "player is not a ghost");
|
||||||
|
Assert.That(mind.VisitingEntity, Is.EqualTo(player.AttachedEntity));
|
||||||
|
Assert.That(mind.OwnedEntity, Is.EqualTo(originalEntity));
|
||||||
|
|
||||||
await PoolManager.RunTicksSync(pairTracker.Pair, 5);
|
await PoolManager.RunTicksSync(pairTracker.Pair, 5);
|
||||||
await server.WaitAssertion(() => entMan.DeleteEntity(originalEntity));
|
await server.WaitAssertion(() => entMan.DeleteEntity(originalEntity));
|
||||||
await PoolManager.RunTicksSync(pairTracker.Pair, 5);
|
await PoolManager.RunTicksSync(pairTracker.Pair, 5);
|
||||||
|
Assert.That(entMan.Deleted(originalEntity));
|
||||||
|
|
||||||
await server.WaitAssertion(() =>
|
// Check that the player is still in control of the ghost
|
||||||
{
|
mind = GetMind(pairTracker.Pair);
|
||||||
// Is player a ghost?
|
Assert.That(!entMan.Deleted(ghost), "ghost has been deleted");
|
||||||
Assert.That(!entMan.Deleted(ghost), "ghost has been deleted");
|
Assert.That(player.AttachedEntity, Is.EqualTo(ghost));
|
||||||
Assert.That(player.AttachedEntity, Is.EqualTo(ghost));
|
Assert.That(entMan.HasComponent<GhostComponent>(player.AttachedEntity));
|
||||||
Assert.That(entMan.HasComponent<GhostComponent>(player.AttachedEntity));
|
Assert.IsNull(mind.VisitingEntity);
|
||||||
|
Assert.That(mind.OwnedEntity, Is.EqualTo(ghost));
|
||||||
Assert.That(mindSystem.TryGetMind(player.UserId, out var mind), "could not find mind");
|
|
||||||
Assert.That(mind.UserId, Is.EqualTo(player.UserId));
|
|
||||||
Assert.That(mind.Session, Is.EqualTo(player));
|
|
||||||
Assert.IsNull(mind.VisitingEntity);
|
|
||||||
Assert.That(mind.OwnedEntity, Is.EqualTo(ghost));
|
|
||||||
});
|
|
||||||
|
|
||||||
await pairTracker.CleanReturnAsync();
|
await pairTracker.CleanReturnAsync();
|
||||||
}
|
}
|
||||||
@@ -241,7 +234,7 @@ public sealed partial class MindTests
|
|||||||
public async Task TestGhostDeletedSpawnsNewGhost()
|
public async Task TestGhostDeletedSpawnsNewGhost()
|
||||||
{
|
{
|
||||||
// Client is needed to spawn session
|
// Client is needed to spawn session
|
||||||
await using var pairTracker = await PoolManager.GetServerClient();
|
await using var pairTracker = await SetupPair();
|
||||||
var server = pairTracker.Pair.Server;
|
var server = pairTracker.Pair.Server;
|
||||||
|
|
||||||
var entMan = server.ResolveDependency<IServerEntityManager>();
|
var entMan = server.ResolveDependency<IServerEntityManager>();
|
||||||
|
|||||||
Reference in New Issue
Block a user