File indexing completed on 2025-02-23 05:24:01
0001 /* 0002 SPDX-FileCopyrightText: 2017-2024 Laurent Montel <montel@kde.org> 0003 0004 SPDX-License-Identifier: LGPL-2.0-or-later 0005 0006 */ 0007 0008 #include "saverulesjobtest.h" 0009 #include "jobs/loadcategoriesjob.h" 0010 #include "jobs/saverulesjob.h" 0011 0012 #include <QProcess> 0013 #include <QTest> 0014 0015 QTEST_GUILESS_MAIN(SaveRulesJobTest) 0016 0017 void compareFile(const QString &name) 0018 { 0019 const QString refFile = QLatin1StringView(KDEBUGSETTINGS_DATA_DIR) + QLatin1Char('/') + name + QStringLiteral(".ref"); 0020 const QString generatedFile = QLatin1StringView(KDEBUGSETTINGS_BINARY_DATA_DIR) + QLatin1Char('/') + name + QStringLiteral("-generated.ref"); 0021 QProcess proc; 0022 0023 #ifdef _WIN32 0024 QStringList args = QStringList() << QStringLiteral("Compare-Object") << QString(QStringLiteral("(Get-Content %1)")).arg(refFile) 0025 << QString(QStringLiteral("(Get-Content %1)")).arg(generatedFile); 0026 0027 proc.start(QStringLiteral("powershell"), args); 0028 QVERIFY(proc.waitForFinished()); 0029 0030 auto pStdOut = proc.readAllStandardOutput(); 0031 if (pStdOut.size()) { 0032 qDebug() << "Files are different, diff output message:\n" << pStdOut.toStdString().c_str(); 0033 } 0034 0035 QCOMPARE(pStdOut.size(), 0); 0036 #else 0037 // compare to reference file 0038 const QStringList args = QStringList() << QStringLiteral("-u") << refFile << generatedFile; 0039 0040 proc.setProcessChannelMode(QProcess::ForwardedChannels); 0041 proc.start(QStringLiteral("diff"), args); 0042 QVERIFY(proc.waitForFinished()); 0043 QCOMPARE(proc.exitCode(), 0); 0044 #endif 0045 } 0046 0047 SaveRulesJobTest::SaveRulesJobTest(QObject *parent) 0048 : QObject(parent) 0049 { 0050 } 0051 0052 void SaveRulesJobTest::shouldSaveLoadRules_data() 0053 { 0054 QTest::addColumn<QString>("filename"); 0055 QTest::newRow("oneelementwarning.ini") << QStringLiteral("oneelementwarning"); 0056 QTest::newRow("oneelementall.ini") << QStringLiteral("oneelementall"); 0057 QTest::newRow("oneelementinfo.ini") << QStringLiteral("oneelementinfo"); 0058 QTest::newRow("oneelementonelineoff.ini") << QStringLiteral("oneelementonelineoff"); 0059 QTest::newRow("oneelementonelinecritical.ini") << QStringLiteral("oneelementonelinecritical"); 0060 } 0061 0062 void SaveRulesJobTest::shouldSaveLoadRules() 0063 { 0064 QFETCH(QString, filename); 0065 LoadCategoriesJob job; 0066 job.setFileName(QLatin1StringView(KDEBUGSETTINGS_DATA_DIR) + QLatin1Char('/') + filename + QStringLiteral(".ini")); 0067 job.start(); 0068 0069 const LoggingCategory::List customCategories = job.customCategories(); 0070 0071 const LoggingCategory::List qtKdeCategories = job.qtKdeCategories(); 0072 0073 SaveRulesJob saveJob; 0074 QDir().mkpath(QLatin1StringView(KDEBUGSETTINGS_BINARY_DATA_DIR)); 0075 saveJob.setFileName(QLatin1StringView(KDEBUGSETTINGS_BINARY_DATA_DIR) + QLatin1Char('/') + filename + QStringLiteral("-generated.ref")); 0076 qDebug() << " save " << saveJob.fileName(); 0077 saveJob.setListCustom(customCategories); 0078 saveJob.setListKde(qtKdeCategories); 0079 QVERIFY(saveJob.start()); 0080 compareFile(filename); 0081 } 0082 0083 #include "moc_saverulesjobtest.cpp"