From 951f9368ae2468751ae9e7e0c450071a6cb7382e Mon Sep 17 00:00:00 2001 From: Aaron Kimbrell Date: Thu, 1 Oct 2026 03:23:25 -0500 Subject: [PATCH] test: each game test starts without the CDClient the one before it opened Tests that open an in-memory CDClient with only their tables left it connected, so later tests that make their own tables when none is connected failed (DestroyableTest, MovementBlockerScenarioTest, QuickBuildCompleteTests in a full run). Co-Authored-By: Claude Opus 5.5 --- dDatabase/CDClientDatabase/CDClientDatabase.cpp | 6 ++++++ dDatabase/CDClientDatabase/CDClientDatabase.h | 3 +++ tests/dGameTests/GameDependencies.h | 3 +++ 3 files changed, 12 insertions(+) diff --git a/dDatabase/CDClientDatabase/CDClientDatabase.cpp b/dDatabase/CDClientDatabase/CDClientDatabase.cpp index c4018230b..013e345d5 100644 --- a/dDatabase/CDClientDatabase/CDClientDatabase.cpp +++ b/dDatabase/CDClientDatabase/CDClientDatabase.cpp @@ -84,6 +84,12 @@ void CDClientDatabase::Reconnect(const std::string& filename) { sqlite3_close_v2(old->handle()); } +void CDClientDatabase::Disconnect() { + g_Running.clear(); + conn->close(); + isConnected = false; +} + //! Queries the CDClient CppSQLite3Query CDClientDatabase::ExecuteQuery(const std::string& query) { return conn->execQuery(query.c_str()); diff --git a/dDatabase/CDClientDatabase/CDClientDatabase.h b/dDatabase/CDClientDatabase/CDClientDatabase.h index afe3cb0de..c73bb9b9e 100644 --- a/dDatabase/CDClientDatabase/CDClientDatabase.h +++ b/dDatabase/CDClientDatabase/CDClientDatabase.h @@ -32,6 +32,9 @@ namespace CDClientDatabase { */ void Reconnect(const std::string& filename); + //! Closes the connection (tests: each test starts without one) + void Disconnect(); + //! Queries the CDClient /*! \param query The query diff --git a/tests/dGameTests/GameDependencies.h b/tests/dGameTests/GameDependencies.h index 14b023364..6108e8fbe 100644 --- a/tests/dGameTests/GameDependencies.h +++ b/tests/dGameTests/GameDependencies.h @@ -4,6 +4,7 @@ #include "Game.h" #include "Logger.h" #include "dServer.h" +#include "CDClientDatabase.h" #include "CDClientManager.h" #include "EntityInfo.h" #include "EntityManager.h" @@ -85,6 +86,8 @@ protected: } delete Game::config; Game::config = nullptr; + // A CDClient a test opened (often an in-memory one with only the tables it needs) isn't the next test's + CDClientDatabase::Disconnect(); } EntityInfo info{};