@@ -16,6 +16,7 @@ import (
17 "github.com/charmbracelet/crush/internal/app"
17 "github.com/charmbracelet/crush/internal/app"
18 "github.com/charmbracelet/crush/internal/backend"
18 "github.com/charmbracelet/crush/internal/backend"
19+ "github.com/charmbracelet/crush/internal/db"
19 "github.com/charmbracelet/crush/internal/message"
20 "github.com/charmbracelet/crush/internal/message"
20 "github.com/charmbracelet/crush/internal/permission"
21 "github.com/charmbracelet/crush/internal/permission"
21 "github.com/charmbracelet/crush/internal/proto"
22 "github.com/charmbracelet/crush/internal/proto"
@@ -357,9 +358,14 @@ func TestE2E_TwoClientsReceiveSameMessage(t *testing.T) {
357 ws, err := h.backend.GetWorkspace(wsRespA.ID)
358 ws, err := h.backend.GetWorkspace(wsRespA.ID)
358 require.NoError(t, err)
359 require.NoError(t, err)
359 // Override the shutdown callback so test cleanup doesn't run
360 // Override the shutdown callback so test cleanup doesn't run
360− // the full app.Shutdown path (which would tear down LSP/MCP/DB
361+ // the full app.Shutdown path (which would tear down LSP/MCP
361− // resources the test doesn't need to exercise).
362+ // resources the test doesn't need to exercise), but still
363+ // release the pooled DB connection so Windows can clean up
364+ // the temp data directory.
365+ wsDataDir := ws.Cfg.Config().Options.DataDirectory
362− backend.SetWorkspaceShutdownFnForTest(ws, func() {})
366+ backend.SetWorkspaceShutdownFnForTest(ws, func() {
367+ _ = db.Release(wsDataDir)
364 evcA, cancelA := h.subscribeSSE(t, ctx, ws.ID, cidA)
370 evcA, cancelA := h.subscribeSSE(t, ctx, ws.ID, cidA)
365 t.Cleanup(cancelA)
371 t.Cleanup(cancelA)