Fix temporary path crash in TestAuthDatabase (#7753)
authorSmallJoker <SmallJoker@users.noreply.github.com>
Fri, 28 Sep 2018 18:12:11 +0000 (20:12 +0200)
committerGitHub <noreply@github.com>
Fri, 28 Sep 2018 18:12:11 +0000 (20:12 +0200)
The constructor of TestAuthDatabase was called immediately, at a time when the settings weren't initialized properly yet.

src/unittest/test_authdatabase.cpp

index 1e8fd233d3aca5d89a371660fc8f826750f21243..1e1744d40eaef423c58027f7c2eebe4f31564fd4 100644 (file)
@@ -90,12 +90,7 @@ private:
 class TestAuthDatabase : public TestBase
 {
 public:
-       TestAuthDatabase()
-       {
-               TestManager::registerTestModule(this);
-               // fixed directory, for persistence
-               test_dir = getTestTempDirectory();
-       }
+       TestAuthDatabase() { TestManager::registerTestModule(this); }
        const char *getName() { return "TestAuthDatabase"; }
 
        void runTests(IGameDef *gamedef);
@@ -112,7 +107,6 @@ public:
        void testDelete();
 
 private:
-       std::string test_dir;
        AuthDatabaseProvider *auth_provider;
 };
 
@@ -120,6 +114,9 @@ static TestAuthDatabase g_test_instance;
 
 void TestAuthDatabase::runTests(IGameDef *gamedef)
 {
+       // fixed directory, for persistence
+       thread_local const std::string test_dir = getTestTempDirectory();
+
        // Each set of tests is run twice for each database type:
        // one where we reuse the same AuthDatabase object (to test local caching),
        // and one where we create a new AuthDatabase object for each call