File indexing completed on 2025-02-23 05:24:01
0001 /* 0002 SPDX-FileCopyrightText: 2015-2024 Laurent Montel <montel@kde.org> 0003 0004 SPDX-License-Identifier: LGPL-2.0-or-later 0005 0006 */ 0007 0008 #include "kdebugsettingutiltest.h" 0009 #include "kdebugsettingsutil.h" 0010 #include <QDebug> 0011 #include <QTest> 0012 0013 QTEST_GUILESS_MAIN(KDebugSettingUtilTest) 0014 0015 KDebugSettingUtilTest::KDebugSettingUtilTest(QObject *parent) 0016 : QObject(parent) 0017 { 0018 } 0019 0020 KDebugSettingUtilTest::~KDebugSettingUtilTest() = default; 0021 0022 void KDebugSettingUtilTest::shouldParseKdeLoggingLine_data() 0023 { 0024 QTest::addColumn<QString>("input"); 0025 QTest::addColumn<QString>("description"); 0026 QTest::addColumn<QString>("logname"); 0027 QTest::addColumn<QString>("defaultSeverity"); 0028 QTest::addColumn<QString>("identifier"); 0029 QTest::addColumn<bool>("valid"); 0030 // Old format 0031 QTest::newRow("empty") << QString() << QString() << QString() << QString() << QString() << false; 0032 0033 QTest::newRow("validLine") << QStringLiteral("log linux") << QStringLiteral("linux") << QStringLiteral("log") << QString() << QString() << true; 0034 QTest::newRow("validLinewithspace") << QStringLiteral(" log linux ") << QStringLiteral("linux") << QStringLiteral("log") << QString() << QString() << true; 0035 QTest::newRow("comment") << QStringLiteral("#log linux ") << QString() << QString() << QString() << QString() << false; 0036 QTest::newRow("commentWithSpace") << QStringLiteral(" #log linux ") << QString() << QString() << QString() << QString() << false; 0037 QTest::newRow("badline") << QStringLiteral("log") << QString() << QString() << QString() << QString() << false; 0038 QTest::newRow("comment-2") << QStringLiteral("#log linux") << QString() << QString() << QString() << QString() << false; 0039 QTest::newRow("validLineWithParentheses") << QStringLiteral("log linux (foo)") << QStringLiteral("linux (foo)") << QStringLiteral("log") << QString() 0040 << QString() << true; 0041 0042 QTest::newRow("validLineWithParenthesesAndCategories") << QStringLiteral("log linux (foo) [WARNING]") << QStringLiteral("linux (foo)") 0043 << QStringLiteral("log") << QStringLiteral("WARNING") << QString() << true; 0044 0045 QTest::newRow("validLineCategoriesWarning") << QStringLiteral("log linux [WARNING]") << QStringLiteral("linux") << QStringLiteral("log") 0046 << QStringLiteral("WARNING") << QString() << true; 0047 QTest::newRow("validLineCategoriesWarning2") << QStringLiteral("log linux [WARNING] ") << QStringLiteral("linux") << QStringLiteral("log") 0048 << QStringLiteral("WARNING") << QString() << true; 0049 QTest::newRow("validLineCategoriesWarning3") << QStringLiteral("log linux [WARNING] ") << QStringLiteral("linux") << QStringLiteral("log") 0050 << QStringLiteral("WARNING") << QString() << true; 0051 QTest::newRow("validLineBadCategories") << QStringLiteral("log linux [FOO] ") << QStringLiteral("linux [FOO]") << QStringLiteral("log") << QString() 0052 << QString() << true; 0053 QTest::newRow("linewithcomment") << QStringLiteral("log linux#comment about linux") << QStringLiteral("linux") << QStringLiteral("log") << QString() 0054 << QString() << true; 0055 0056 QTest::newRow("validLineCategoriesInfo") << QStringLiteral("log linux [INFO]") << QStringLiteral("linux") << QStringLiteral("log") << QStringLiteral("INFO") 0057 << QString() << true; 0058 QTest::newRow("validLineCategoriesInfo2") << QStringLiteral("log linux [INFO] ") << QStringLiteral("linux") << QStringLiteral("log") 0059 << QStringLiteral("INFO") << QString() << true; 0060 QTest::newRow("validLineCategoriesInfo3") << QStringLiteral("log linux [INFO] ") << QStringLiteral("linux") << QStringLiteral("log") 0061 << QStringLiteral("INFO") << QString() << true; 0062 0063 QTest::newRow("validLineCategoriesDEBUG") << QStringLiteral("log linux [DEBUG]") << QStringLiteral("linux") << QStringLiteral("log") 0064 << QStringLiteral("DEBUG") << QString() << true; 0065 QTest::newRow("validLineCategoriesDEBUG2") << QStringLiteral("log linux [DEBUG] ") << QStringLiteral("linux") << QStringLiteral("log") 0066 << QStringLiteral("DEBUG") << QString() << true; 0067 QTest::newRow("validLineCategoriesDEBUG3") << QStringLiteral("log linux [DEBUG] ") << QStringLiteral("linux") << QStringLiteral("log") 0068 << QStringLiteral("DEBUG") << QString() << true; 0069 0070 QTest::newRow("validLineCategoriesCRITICAL") << QStringLiteral("log linux [CRITICAL]") << QStringLiteral("linux") << QStringLiteral("log") 0071 << QStringLiteral("CRITICAL") << QString() << true; 0072 QTest::newRow("validLineCategoriesCRITICAL2") << QStringLiteral("log linux [CRITICAL] ") << QStringLiteral("linux") << QStringLiteral("log") 0073 << QStringLiteral("CRITICAL") << QString() << true; 0074 QTest::newRow("validLineCategoriesCRITICAL3") << QStringLiteral("log linux [CRITICAL] ") << QStringLiteral("linux") << QStringLiteral("log") 0075 << QStringLiteral("CRITICAL") << QString() << true; 0076 0077 // New Format 0078 QTest::newRow("validLineCategoriesWarning-newformat") << QStringLiteral("log linux DEFAULT_SEVERITY [WARNING]") << QStringLiteral("linux") 0079 << QStringLiteral("log") << QStringLiteral("WARNING") << QString() << true; 0080 QTest::newRow("validLineCategoriesWarning-newformat2") << QStringLiteral("log linux DEFAULT_SEVERITY [WARNING] ") << QStringLiteral("linux") 0081 << QStringLiteral("log") << QStringLiteral("WARNING") << QString() << true; 0082 QTest::newRow("validLineCategoriesWarning-newformat3") << QStringLiteral("log linux DEFAULT_SEVERITY [WARNING] ") << QStringLiteral("linux") 0083 << QStringLiteral("log") << QStringLiteral("WARNING") << QString() << true; 0084 QTest::newRow("validLineBadCategories-newformat") << QStringLiteral("log linux DEFAULT_SEVERITY [FOO] ") 0085 << QStringLiteral("linux DEFAULT_SEVERITY [FOO]") << QStringLiteral("log") << QString() << QString() 0086 << true; 0087 QTest::newRow("linewithcomment-newformat") << QStringLiteral("log linux#comment about linux") << QStringLiteral("linux") << QStringLiteral("log") 0088 << QString() << QString() << true; 0089 0090 QTest::newRow("validLineCategoriesInfo-newformat") << QStringLiteral("log linux DEFAULT_SEVERITY [INFO]") << QStringLiteral("linux") 0091 << QStringLiteral("log") << QStringLiteral("INFO") << QString() << true; 0092 QTest::newRow("validLineCategoriesInfo-newformat2") << QStringLiteral("log linux DEFAULT_SEVERITY [INFO] ") << QStringLiteral("linux") 0093 << QStringLiteral("log") << QStringLiteral("INFO") << QString() << true; 0094 QTest::newRow("validLineCategoriesInfo-newformat3") << QStringLiteral("log linux DEFAULT_SEVERITY [INFO] ") << QStringLiteral("linux") 0095 << QStringLiteral("log") << QStringLiteral("INFO") << QString() << true; 0096 0097 QTest::newRow("validLineCategoriesDEBUG-newformat") << QStringLiteral("log linux DEFAULT_SEVERITY [DEBUG]") << QStringLiteral("linux") 0098 << QStringLiteral("log") << QStringLiteral("DEBUG") << QString() << true; 0099 QTest::newRow("validLineCategoriesDEBUG-newformat2") << QStringLiteral("log linux DEFAULT_SEVERITY [DEBUG] ") << QStringLiteral("linux") 0100 << QStringLiteral("log") << QStringLiteral("DEBUG") << QString() << true; 0101 QTest::newRow("validLineCategoriesDEBUG-newformat3") << QStringLiteral("log linux DEFAULT_SEVERITY [DEBUG] ") << QStringLiteral("linux") 0102 << QStringLiteral("log") << QStringLiteral("DEBUG") << QString() << true; 0103 0104 QTest::newRow("validLineCategoriesCRITICAL-newformat") << QStringLiteral("log linux DEFAULT_SEVERITY [CRITICAL]") << QStringLiteral("linux") 0105 << QStringLiteral("log") << QStringLiteral("CRITICAL") << QString() << true; 0106 QTest::newRow("validLineCategoriesCRITICAL-newformat2") << QStringLiteral("log linux DEFAULT_SEVERITY [CRITICAL] ") << QStringLiteral("linux") 0107 << QStringLiteral("log") << QStringLiteral("CRITICAL") << QString() << true; 0108 QTest::newRow("validLineCategoriesCRITICAL-newformat3") << QStringLiteral("log linux DEFAULT_SEVERITY [CRITICAL] ") << QStringLiteral("linux") 0109 << QStringLiteral("log") << QStringLiteral("CRITICAL") << QString() << true; 0110 0111 // Identifier 0112 QTest::newRow("validLineIdentifier1") << QStringLiteral("log linux IDENTIFIER [foo]") << QStringLiteral("linux") << QStringLiteral("log") << QString() 0113 << QStringLiteral("foo") << true; 0114 QTest::newRow("validLineIdentifier2") << QStringLiteral("log linux DEFAULT_SEVERITY [CRITICAL] IDENTIFIER [foo]") << QStringLiteral("linux") 0115 << QStringLiteral("log") << QStringLiteral("CRITICAL") << QStringLiteral("foo") << true; 0116 QTest::newRow("validLineIdentifier3") << QStringLiteral("log linux fli DEFAULT_SEVERITY [INFO] IDENTIFIER [bla;bli;ss]") << QStringLiteral("linux fli") 0117 << QStringLiteral("log") << QStringLiteral("INFO") << QStringLiteral("bla;bli;ss") << true; 0118 QTest::newRow("validLineIdentifier4") << QStringLiteral("log linux (fli) DEFAULT_SEVERITY [INFO] IDENTIFIER [bla;bli;ss]") 0119 << QStringLiteral("linux (fli)") << QStringLiteral("log") << QStringLiteral("INFO") << QStringLiteral("bla;bli;ss") 0120 << true; 0121 } 0122 0123 void KDebugSettingUtilTest::shouldParseKdeLoggingLine() 0124 { 0125 QFETCH(QString, input); 0126 QFETCH(QString, description); 0127 QFETCH(QString, logname); 0128 QFETCH(QString, defaultSeverity); 0129 QFETCH(QString, identifier); 0130 QFETCH(bool, valid); 0131 KdeLoggingCategory result; 0132 result.description = description; 0133 result.categoryName = logname; 0134 result.defaultSeverity = defaultSeverity; 0135 result.identifierName = identifier; 0136 const KdeLoggingCategory cat = KDebugSettingsUtil::parseLineKdeLoggingCategory(input, QString()); 0137 if (cat != result) { 0138 qDebug() << "Generated category " << cat; 0139 qDebug() << "Expected category: " << result; 0140 } 0141 QCOMPARE(cat, result); 0142 QCOMPARE(cat.isValid(), valid); 0143 } 0144 0145 void KDebugSettingUtilTest::shouldParseQtLoggingLine_data() 0146 { 0147 QTest::addColumn<QString>("input"); 0148 QTest::addColumn<QString>("logname"); 0149 QTest::addColumn<KDebugSettingsUtil::LineLoggingQtCategory::LoggingType>("loggingtype"); 0150 QTest::addColumn<bool>("enabled"); 0151 QTest::addColumn<bool>("valid"); 0152 QTest::newRow("empty") << QString() << QString() << KDebugSettingsUtil::LineLoggingQtCategory::Unknown << false << false; 0153 QTest::newRow("valid") << QStringLiteral("toto=true") << QStringLiteral("toto") << KDebugSettingsUtil::LineLoggingQtCategory::All << true << true; 0154 QTest::newRow("validdisabled") << QStringLiteral("toto=false") << QStringLiteral("toto") << KDebugSettingsUtil::LineLoggingQtCategory::All << false << true; 0155 0156 QTest::newRow("validdisabledwithtypewarning") << QStringLiteral("toto.warning=false") << QStringLiteral("toto") 0157 << KDebugSettingsUtil::LineLoggingQtCategory::Warning << false << true; 0158 QTest::newRow("validenabledwithtypewarning") << QStringLiteral("toto.warning=true") << QStringLiteral("toto") 0159 << KDebugSettingsUtil::LineLoggingQtCategory::Warning << true << true; 0160 0161 QTest::newRow("validdisabledwithtypecritical") << QStringLiteral("toto.critical=false") << QStringLiteral("toto") 0162 << KDebugSettingsUtil::LineLoggingQtCategory::Critical << false << true; 0163 QTest::newRow("validenabledwithtypecritical") << QStringLiteral("toto.critical=true") << QStringLiteral("toto") 0164 << KDebugSettingsUtil::LineLoggingQtCategory::Critical << true << true; 0165 0166 QTest::newRow("validdisabledwithtypedebug") << QStringLiteral("toto.debug=false") << QStringLiteral("toto") 0167 << KDebugSettingsUtil::LineLoggingQtCategory::Debug << false << true; 0168 QTest::newRow("validenabledwithtypedebug") << QStringLiteral("toto.debug=true") << QStringLiteral("toto") 0169 << KDebugSettingsUtil::LineLoggingQtCategory::Debug << true << true; 0170 0171 QTest::newRow("invalid") << QStringLiteral("dd") << QString() << KDebugSettingsUtil::LineLoggingQtCategory::Unknown << false << false; 0172 QTest::newRow("invalidWithoutEnabledDisabled") << QStringLiteral("dd=") << QStringLiteral("dd") << KDebugSettingsUtil::LineLoggingQtCategory::All << false 0173 << true; 0174 } 0175 0176 void KDebugSettingUtilTest::shouldParseQtLoggingLine() 0177 { 0178 QFETCH(QString, input); 0179 QFETCH(QString, logname); 0180 QFETCH(KDebugSettingsUtil::LineLoggingQtCategory::LoggingType, loggingtype); 0181 QFETCH(bool, enabled); 0182 QFETCH(bool, valid); 0183 KDebugSettingsUtil::LineLoggingQtCategory result; 0184 result.logName = logname; 0185 result.enabled = enabled; 0186 result.type = loggingtype; 0187 const KDebugSettingsUtil::LineLoggingQtCategory cat = KDebugSettingsUtil::parseLineLoggingQtCategory(input); 0188 QCOMPARE(cat.isValid(), valid); 0189 QCOMPARE(cat, result); 0190 } 0191 0192 void KDebugSettingUtilTest::shouldReadLoadKdeCategories_data() 0193 { 0194 QTest::addColumn<QString>("filename"); 0195 QTest::addColumn<int>("numberofcategories"); 0196 QTest::newRow("empty") << QStringLiteral("empty.categories") << 0; 0197 QTest::newRow("correctlist") << QStringLiteral("correct.categories") << 5; 0198 QTest::newRow("withduplicate") << QStringLiteral("duplicates.categories") << 5; 0199 QTest::newRow("withcomment") << QStringLiteral("comments.categories") << 6; 0200 } 0201 0202 void KDebugSettingUtilTest::shouldReadLoadKdeCategories() 0203 { 0204 QFETCH(QString, filename); 0205 QFETCH(int, numberofcategories); 0206 const QString path = QString(QLatin1StringView(KDEBUGSETTINGS_DATA_DIR) + QLatin1Char('/') + filename); 0207 QFile file(path); 0208 QVERIFY(file.exists()); 0209 KdeLoggingCategory::List lst; 0210 KDebugSettingsUtil::readLoggingCategories(path, lst, true); 0211 QCOMPARE(lst.count(), numberofcategories); 0212 } 0213 0214 void KDebugSettingUtilTest::shouldReadRenameCategories_data() 0215 { 0216 QTest::addColumn<QString>("filename"); 0217 QTest::addColumn<int>("numberofrenamecategories"); 0218 QTest::newRow("empty") << QStringLiteral("empty.renamecategories") << 0; 0219 QTest::newRow("2renamed") << QStringLiteral("tworename.renamecategories") << 2; 0220 QTest::newRow("withnewline") << QStringLiteral("newline.renamecategories") << 2; 0221 } 0222 0223 void KDebugSettingUtilTest::shouldReadRenameCategories() 0224 { 0225 QFETCH(QString, filename); 0226 QFETCH(int, numberofrenamecategories); 0227 const QString path = QString(QLatin1StringView(KDEBUGSETTINGS_DATA_DIR) + QLatin1Char('/') + filename); 0228 QFile file(path); 0229 QVERIFY(file.exists()); 0230 const RenameCategory::List lst = KDebugSettingsUtil::readRenameCategories(path); 0231 QCOMPARE(lst.count(), numberofrenamecategories); 0232 } 0233 0234 void KDebugSettingUtilTest::shouldConvertCategoryTypeFromString_data() 0235 { 0236 QTest::addColumn<QString>("input"); 0237 QTest::addColumn<LoggingCategory::LoggingType>("loggingType"); 0238 QTest::newRow("empty") << QString() << LoggingCategory::LoggingType::Info; 0239 QTest::newRow("WARNING") << QStringLiteral("WARNING") << LoggingCategory::LoggingType::Warning; 0240 QTest::newRow("Info") << QStringLiteral("INFO") << LoggingCategory::LoggingType::Info; 0241 QTest::newRow("Debug") << QStringLiteral("DEBUG") << LoggingCategory::LoggingType::Debug; 0242 QTest::newRow("Critical") << QStringLiteral("CRITICAL") << LoggingCategory::LoggingType::Critical; 0243 QTest::newRow("unknown") << QStringLiteral("foo") << LoggingCategory::LoggingType::Info; 0244 } 0245 0246 void KDebugSettingUtilTest::shouldConvertCategoryTypeFromString() 0247 { 0248 QFETCH(QString, input); 0249 QFETCH(LoggingCategory::LoggingType, loggingType); 0250 QCOMPARE(KDebugSettingsUtil::convertCategoryTypeFromString(input), loggingType); 0251 } 0252 0253 #include "moc_kdebugsettingutiltest.cpp"