Fix adding multiple interpolated expressions with the same format to admin logs
Add test case
This commit is contained in:
@@ -291,4 +291,49 @@ public class AddTests : ContentIntegrationTest
|
|||||||
json.Dispose();
|
json.Dispose();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[Test]
|
||||||
|
public async Task DuplicatePlayerDoesNotThrowTest()
|
||||||
|
{
|
||||||
|
var (client, server) = await StartConnectedServerClientPair(serverOptions: new ServerContentIntegrationOption
|
||||||
|
{
|
||||||
|
CVarOverrides =
|
||||||
|
{
|
||||||
|
[CCVars.AdminLogsQueueSendDelay.Name] = "0"
|
||||||
|
},
|
||||||
|
});
|
||||||
|
|
||||||
|
await Task.WhenAll(client.WaitIdleAsync(), server.WaitIdleAsync());
|
||||||
|
|
||||||
|
var sPlayers = server.ResolveDependency<IPlayerManager>();
|
||||||
|
var sSystems = server.ResolveDependency<IEntitySystemManager>();
|
||||||
|
|
||||||
|
var sAdminLogSystem = sSystems.GetEntitySystem<AdminLogSystem>();
|
||||||
|
|
||||||
|
var guid = Guid.NewGuid();
|
||||||
|
|
||||||
|
await server.WaitPost(() =>
|
||||||
|
{
|
||||||
|
var player = sPlayers.ServerSessions.Single();
|
||||||
|
|
||||||
|
sAdminLogSystem.Add(LogType.Unknown, $"{player} {player} test log: {guid}");
|
||||||
|
});
|
||||||
|
|
||||||
|
await WaitUntil(server, async () =>
|
||||||
|
{
|
||||||
|
var logs = await sAdminLogSystem.CurrentRoundLogs(new LogFilter
|
||||||
|
{
|
||||||
|
Search = guid.ToString()
|
||||||
|
});
|
||||||
|
|
||||||
|
if (logs.Count == 0)
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
|
});
|
||||||
|
|
||||||
|
Assert.Pass();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -40,7 +40,23 @@ public ref struct LogStringHandler
|
|||||||
format = argument[0] == '@' ? argument[1..] : argument;
|
format = argument[0] == '@' ? argument[1..] : argument;
|
||||||
}
|
}
|
||||||
|
|
||||||
Values.Add(format, value);
|
if (!Values.TryAdd(format, value))
|
||||||
|
{
|
||||||
|
if (Values[format] == (object?) value)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
var originalFormat = format;
|
||||||
|
var i = 2;
|
||||||
|
format = $"{originalFormat}_{i}";
|
||||||
|
|
||||||
|
while (!Values.TryAdd(format, value))
|
||||||
|
{
|
||||||
|
format = $"{originalFormat}_{i}";
|
||||||
|
i++;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void AppendLiteral(string value)
|
public void AppendLiteral(string value)
|
||||||
|
|||||||
Reference in New Issue
Block a user