refactor(store): route MessageStore IsWine probe through IPlatformUtil (F12.1)

MessageStore.Connect used to call Util.IsWine() directly via a
DalamudUtil alias, which made the ctor unreachable from the xUnit
test AppDomain: any test that allocated a MessageStore tripped a
FileNotFoundException on Dalamud.dll before reaching the assertion.

The ctor now takes an IPlatformUtil and reads the cached IsWine
property. MessageManager passes Plugin.PlatformUtil in. Production
behaviour is identical; the test path can now substitute a fake
and exercise the SQLite migration logic in isolation.
This commit is contained in:
2026-05-12 20:29:22 +02:00
parent 6b44f549b4
commit 4510c1e404
2 changed files with 6 additions and 4 deletions
+1 -1
View File
@@ -52,7 +52,7 @@ internal class MessageManager : IAsyncDisposable
{
Plugin = plugin;
Store = new MessageStore(DatabasePath());
Store = new MessageStore(DatabasePath(), Plugin.PlatformUtil);
PendingMessageThread = new Thread(() =>
ProcessPendingMessages(PendingThreadCancellationToken.Token)
+5 -3
View File
@@ -9,7 +9,6 @@ using MessagePack;
using MessagePack.Formatters;
using MessagePack.Resolvers;
using Microsoft.Data.Sqlite;
using DalamudUtil = Dalamud.Utility.Util;
using Encoding = System.Text.Encoding;
namespace HellionChat;
@@ -137,9 +136,12 @@ internal class MessageStore : IDisposable
)
);
internal MessageStore(string dbPath)
private readonly IPlatformUtil _platformUtil;
internal MessageStore(string dbPath, IPlatformUtil platformUtil)
{
DbPath = dbPath;
_platformUtil = platformUtil;
Connection = Connect();
Migrate();
}
@@ -166,7 +168,7 @@ internal class MessageStore : IDisposable
conn.Open();
conn.Execute(@"PRAGMA journal_mode=WAL;");
conn.Execute(@"PRAGMA synchronous=NORMAL;");
if (DalamudUtil.IsWine())
if (_platformUtil.IsWine)
conn.Execute(@"PRAGMA cache_size = 32768;");
return conn;
}