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"