From 22ceb833728bf738f22f603f0a5bf3ab322e786d Mon Sep 17 00:00:00 2001 From: Kamron Batman <3953314+kamronbatman@users.noreply.github.com> Date: Thu, 16 Jul 2026 22:38:30 -0700 Subject: [PATCH] test(saves): serialize persistence-constructing tests Constructing a Persistence mutates the static registry - an unsynchronized SortedSet - and Unregister mutates it again. ShadowDictionaryEntriesTests and SerializationChunkSourceTests did this outside the sequential collection, so a parallel xunit collection could corrupt the tree mid-insert: observed on CI as an NRE in SortedSet.InsertionBalance from Persistence..ctor. Both classes now share the Sequential Server Tests collection with the other registry mutators. Co-Authored-By: Claude Fable 5 --- .../Tests/Serialization/SerializationChunkSourceTests.cs | 4 ++++ .../Tests/Serialization/ShadowDictionaryEntriesTests.cs | 4 ++++ 2 files changed, 8 insertions(+) diff --git a/Projects/Server.Tests/Tests/Serialization/SerializationChunkSourceTests.cs b/Projects/Server.Tests/Tests/Serialization/SerializationChunkSourceTests.cs index 3f315e8d9..1cdb08188 100644 --- a/Projects/Server.Tests/Tests/Serialization/SerializationChunkSourceTests.cs +++ b/Projects/Server.Tests/Tests/Serialization/SerializationChunkSourceTests.cs @@ -4,6 +4,10 @@ using Xunit; namespace Server.Tests; +// Constructing a persistence mutates the static Persistence registry (an unsynchronized +// SortedSet); every test that does so must share the sequential collection or parallel +// collections corrupt the tree. +[Collection("Sequential Server Tests")] public class SerializationChunkSourceTests { private class TestEntity : IGenericSerializable diff --git a/Projects/Server.Tests/Tests/Serialization/ShadowDictionaryEntriesTests.cs b/Projects/Server.Tests/Tests/Serialization/ShadowDictionaryEntriesTests.cs index 6f5661f5a..315a58900 100644 --- a/Projects/Server.Tests/Tests/Serialization/ShadowDictionaryEntriesTests.cs +++ b/Projects/Server.Tests/Tests/Serialization/ShadowDictionaryEntriesTests.cs @@ -4,6 +4,10 @@ using Xunit; namespace Server.Tests; +// Constructing a persistence mutates the static Persistence registry (an unsynchronized +// SortedSet); every test that does so must share the sequential collection or parallel +// collections corrupt the tree. +[Collection("Sequential Server Tests")] public class ShadowDictionaryEntriesTests { private class TestEntity : ISerializable