From 0177ab48290749f6bfafbb8e8608ccd8382c4d4c Mon Sep 17 00:00:00 2001 From: pajlada Date: Sat, 1 Apr 2023 13:23:18 +0200 Subject: [PATCH] Ensure tests have default-initialized settings (#4498) Also rework HighlightController test directory creation/saving to ensure the test directory is written to & cleaned up appropriately --- CHANGELOG.md | 1 + src/singletons/Settings.cpp | 2 ++ tests/src/HighlightController.cpp | 18 +++++++++--------- tests/src/main.cpp | 4 ++++ 4 files changed, 16 insertions(+), 9 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index df14b5853..b450f052d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -19,6 +19,7 @@ - Dev: Ignore unhandled BTTV user-events. (#4438) - Dev: Only log debug messages when NDEBUG is not defined. (#4442) - Dev: Cleaned up theme related code. (#4450) +- Dev: Ensure tests have default-initialized settings. (#4498) ## 2.4.2 diff --git a/src/singletons/Settings.cpp b/src/singletons/Settings.cpp index a4cf20f96..b32623c42 100644 --- a/src/singletons/Settings.cpp +++ b/src/singletons/Settings.cpp @@ -140,6 +140,8 @@ Settings::Settings(const QString &settingsDirectory) Settings &Settings::instance() { + assert(instance_ != nullptr); + return *instance_; } diff --git a/tests/src/HighlightController.cpp b/tests/src/HighlightController.cpp index eecb9cc37..a3f37b26b 100644 --- a/tests/src/HighlightController.cpp +++ b/tests/src/HighlightController.cpp @@ -550,14 +550,14 @@ class HighlightControllerTest : public ::testing::Test protected: void SetUp() override { - { - // Write default settings to the mock settings json file - QDir().mkpath("/tmp/c2-tests"); - QFile settingsFile("/tmp/c2-tests/settings.json"); - assert(settingsFile.open(QIODevice::WriteOnly | QIODevice::Text)); - QTextStream out(&settingsFile); - out << DEFAULT_SETTINGS; - } + // Write default settings to the mock settings json file + ASSERT_TRUE(QDir().mkpath("/tmp/c2-tests")); + + QFile settingsFile("/tmp/c2-tests/settings.json"); + ASSERT_TRUE(settingsFile.open(QIODevice::WriteOnly | QIODevice::Text)); + ASSERT_GT(settingsFile.write(DEFAULT_SETTINGS.toUtf8()), 0); + ASSERT_TRUE(settingsFile.flush()); + settingsFile.close(); this->mockHelix = new MockHelix; @@ -579,7 +579,7 @@ protected: void TearDown() override { - QDir().rmdir("/tmp/c2-tests"); + ASSERT_TRUE(QDir("/tmp/c2-tests").removeRecursively()); this->mockApplication.reset(); this->settings.reset(); this->paths.reset(); diff --git a/tests/src/main.cpp b/tests/src/main.cpp index d6452c5a0..098d5b366 100644 --- a/tests/src/main.cpp +++ b/tests/src/main.cpp @@ -4,6 +4,7 @@ #include "common/Outcome.hpp" #include "common/QLogging.hpp" #include "providers/twitch/api/Helix.hpp" +#include "singletons/Settings.hpp" #include #include @@ -27,6 +28,9 @@ int main(int argc, char **argv) chatterino::NetworkManager::init(); + // Ensure settings are initialized before any tests are run + chatterino::Settings settings("/tmp/c2-empty-test"); + QtConcurrent::run([&app] { auto res = RUN_ALL_TESTS();