|
17 | 17 | #include <QSettings> |
18 | 18 | #include <QRegularExpression> |
19 | 19 | #include <QDir> |
| 20 | +#include <QScopeGuard> |
20 | 21 |
|
21 | 22 | #include "../../src/app/logger.h" |
22 | 23 |
|
@@ -106,6 +107,7 @@ private slots: |
106 | 107 |
|
107 | 108 | // ── Config round-trip ───────────────────────────────────────────────────── |
108 | 109 | void testConfig_saveAndLoad(); |
| 110 | + void testConfig_fileLoggingEnabledByDefault(); |
109 | 111 | }; |
110 | 112 |
|
111 | 113 | // ───────────────────────────────────────────────────────────────────────────── |
@@ -356,6 +358,48 @@ void TstLogger::testConfig_saveAndLoad() |
356 | 358 | Logger::instance().setLogLevel(saved); |
357 | 359 | } |
358 | 360 |
|
| 361 | +void TstLogger::testConfig_fileLoggingEnabledByDefault() |
| 362 | +{ |
| 363 | + // RAII guard: restore Logger's file-logging state unconditionally so that |
| 364 | + // a QVERIFY failure in this test cannot leave the Logger in a broken state |
| 365 | + // and cause subsequent tests to behave unexpectedly. |
| 366 | + const bool savedEnabled = Logger::instance().isFileLoggingEnabled(); |
| 367 | + const QString savedPath = Logger::instance().logFilePath(); |
| 368 | + auto loggerGuard = qScopeGuard([&] { |
| 369 | + Logger::instance().setFileLogging(savedEnabled, savedPath); |
| 370 | + }); |
| 371 | + |
| 372 | + // RAII guard: remove (or restore) the logging/file_enabled QSettings key. |
| 373 | + // This simulates a fresh install where no user preference has been saved. |
| 374 | + QSettings settings; |
| 375 | + settings.beginGroup(QStringLiteral("logging")); |
| 376 | + const QVariant prevValue = settings.value(QStringLiteral("file_enabled")); |
| 377 | + settings.remove(QStringLiteral("file_enabled")); |
| 378 | + settings.endGroup(); |
| 379 | + settings.sync(); |
| 380 | + |
| 381 | + auto settingsGuard = qScopeGuard([&] { |
| 382 | + QSettings s; |
| 383 | + s.beginGroup(QStringLiteral("logging")); |
| 384 | + if (prevValue.isValid()) |
| 385 | + s.setValue(QStringLiteral("file_enabled"), prevValue); |
| 386 | + else |
| 387 | + s.remove(QStringLiteral("file_enabled")); |
| 388 | + s.endGroup(); |
| 389 | + s.sync(); |
| 390 | + }); |
| 391 | + |
| 392 | + // Start from a known-disabled state so we can detect whether |
| 393 | + // loadConfig() actually enables file logging. |
| 394 | + Logger::instance().setFileLogging(false); |
| 395 | + |
| 396 | + // Exercise the real loadConfig() path — it must default to enabled. |
| 397 | + Logger::instance().loadConfig(); |
| 398 | + |
| 399 | + QVERIFY2(Logger::instance().isFileLoggingEnabled(), |
| 400 | + "loadConfig() must enable file logging when file_enabled is absent from settings"); |
| 401 | +} |
| 402 | + |
359 | 403 | // ───────────────────────────────────────────────────────────────────────────── |
360 | 404 | // Test runner |
361 | 405 | // ───────────────────────────────────────────────────────────────────────────── |
|
0 commit comments