From 4510c1e40486a99c9bada898662ecb4a37b8bd18 Mon Sep 17 00:00:00 2001 From: Jon Kazama Date: Tue, 12 May 2026 20:29:22 +0200 Subject: [PATCH] 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. --- HellionChat/MessageManager.cs | 2 +- HellionChat/MessageStore.cs | 8 +++++--- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/HellionChat/MessageManager.cs b/HellionChat/MessageManager.cs index 7d74ede..d50000d 100644 --- a/HellionChat/MessageManager.cs +++ b/HellionChat/MessageManager.cs @@ -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) diff --git a/HellionChat/MessageStore.cs b/HellionChat/MessageStore.cs index ae4f213..b200c5f 100644 --- a/HellionChat/MessageStore.cs +++ b/HellionChat/MessageStore.cs @@ -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; }