File indexing completed on 2024-04-14 15:37:31
0001 /* 0002 * SPDX-FileCopyrightText: 2016 Sebastian Kügler <sebas@kde.org> 0003 * 0004 * SPDX-License-Identifier: LGPL-2.1-or-later 0005 */ 0006 0007 #include <QLoggingCategory> 0008 #include <QObject> 0009 #include <QtTest> 0010 0011 #include "../src/log.h" 0012 0013 Q_DECLARE_LOGGING_CATEGORY(KSCREEN_TESTLOG) 0014 0015 Q_LOGGING_CATEGORY(KSCREEN_TESTLOG, "kscreen.testlog") 0016 0017 using namespace KScreen; 0018 0019 auto KSCREEN_LOGGING = "KSCREEN_LOGGING"; 0020 0021 class TestLog : public QObject 0022 { 0023 Q_OBJECT 0024 0025 private Q_SLOTS: 0026 void init(); 0027 void initTestCase(); 0028 void cleanupTestCase(); 0029 void testContext(); 0030 void testEnabled(); 0031 void testLog(); 0032 0033 private: 0034 QString m_defaultLogFile; 0035 }; 0036 0037 void TestLog::init() 0038 { 0039 QStandardPaths::setTestModeEnabled(true); 0040 m_defaultLogFile = QStandardPaths::writableLocation(QStandardPaths::GenericDataLocation) + QLatin1String("/kscreen/kscreen.log"); 0041 } 0042 0043 void TestLog::initTestCase() 0044 { 0045 qputenv(KSCREEN_LOGGING, QByteArray("true")); 0046 } 0047 0048 void TestLog::cleanupTestCase() 0049 { 0050 qunsetenv(KSCREEN_LOGGING); 0051 } 0052 0053 void TestLog::testContext() 0054 { 0055 auto log = Log::instance(); 0056 QString ctx = QStringLiteral("context text"); 0057 QVERIFY(log != nullptr); 0058 log->setContext(ctx); 0059 QCOMPARE(log->context(), ctx); 0060 0061 delete log; 0062 } 0063 0064 void TestLog::testEnabled() 0065 { 0066 qputenv(KSCREEN_LOGGING, QByteArray("faLSe")); 0067 0068 auto log = Log::instance(); 0069 QCOMPARE(log->enabled(), false); 0070 QCOMPARE(log->logFile(), QString()); 0071 0072 delete log; 0073 qunsetenv(KSCREEN_LOGGING); 0074 0075 log = Log::instance(); 0076 QCOMPARE(log->enabled(), false); 0077 QCOMPARE(log->logFile(), QString()); 0078 0079 delete log; 0080 qputenv(KSCREEN_LOGGING, QByteArray("truE")); 0081 0082 log = Log::instance(); 0083 QCOMPARE(log->enabled(), true); 0084 QCOMPARE(log->logFile(), m_defaultLogFile); 0085 0086 delete log; 0087 } 0088 0089 void TestLog::testLog() 0090 { 0091 auto log = Log::instance(); 0092 Q_UNUSED(log); 0093 0094 QFile lf(m_defaultLogFile); 0095 lf.remove(); 0096 QVERIFY(!lf.exists()); 0097 0098 QString logmsg = QStringLiteral("This is a log message. ♥"); 0099 Log::log(logmsg); 0100 0101 QVERIFY(lf.exists()); 0102 QVERIFY(lf.remove()); 0103 0104 qCDebug(KSCREEN_TESTLOG) << "qCDebug message from testlog"; 0105 QVERIFY(lf.exists()); 0106 QVERIFY(lf.remove()); 0107 0108 delete Log::instance(); 0109 0110 // Make sure on log file gets written when disabled 0111 qputenv(KSCREEN_LOGGING, "false"); 0112 0113 qCDebug(KSCREEN_TESTLOG) << logmsg; 0114 QCOMPARE(Log::instance()->enabled(), false); 0115 QVERIFY(!lf.exists()); 0116 0117 Log::log(logmsg); 0118 QVERIFY(!lf.exists()); 0119 0120 // Make sure we don't crash on cleanup 0121 delete Log::instance(); 0122 delete Log::instance(); 0123 } 0124 0125 QTEST_MAIN(TestLog) 0126 0127 #include "testlog.moc"