1 /*
2     SPDX-FileCopyrightText: 2017-2021 Laurent Montel <montel@kde.org>
3 
4     SPDX-License-Identifier: LGPL-2.0-or-later
5 
6 */
7 
8 #include "saverulesjobtest.h"
9 #include "loadcategoriesjob.h"
10 #include "saverulesjob.h"
11 
12 #include <QProcess>
13 #include <QTest>
14 
QTEST_GUILESS_MAIN(SaveRulesJobTest)15 QTEST_GUILESS_MAIN(SaveRulesJobTest)
16 
17 void compareFile(const QString &name)
18 {
19     const QString refFile = QLatin1String(KDEBUGSETTINGS_DATA_DIR) + QLatin1Char('/') + name + QStringLiteral(".ref");
20     const QString generatedFile = QLatin1String(KDEBUGSETTINGS_BINARY_DATA_DIR) + QLatin1Char('/') + name + QStringLiteral("-generated.ref");
21 
22     // compare to reference file
23     QStringList args = QStringList() << QStringLiteral("-u") << refFile << generatedFile;
24     QProcess proc;
25     proc.setProcessChannelMode(QProcess::ForwardedChannels);
26     proc.start(QStringLiteral("diff"), args);
27     QVERIFY(proc.waitForFinished());
28     QCOMPARE(proc.exitCode(), 0);
29 }
30 
SaveRulesJobTest(QObject * parent)31 SaveRulesJobTest::SaveRulesJobTest(QObject *parent)
32     : QObject(parent)
33 {
34 }
35 
shouldSaveLoadRules_data()36 void SaveRulesJobTest::shouldSaveLoadRules_data()
37 {
38     QTest::addColumn<QString>("filename");
39     QTest::newRow("oneelementwarning.ini") << QStringLiteral("oneelementwarning");
40     QTest::newRow("oneelementall.ini") << QStringLiteral("oneelementall");
41     QTest::newRow("oneelementinfo.ini") << QStringLiteral("oneelementinfo");
42     QTest::newRow("oneelementonelineoff.ini") << QStringLiteral("oneelementonelineoff");
43     QTest::newRow("oneelementonelinecritical.ini") << QStringLiteral("oneelementonelinecritical");
44 }
45 
shouldSaveLoadRules()46 void SaveRulesJobTest::shouldSaveLoadRules()
47 {
48     QFETCH(QString, filename);
49     LoadCategoriesJob job;
50     job.setFileName(QLatin1String(KDEBUGSETTINGS_DATA_DIR) + QLatin1Char('/') + filename + QStringLiteral(".ini"));
51     job.start();
52 
53     const LoggingCategory::List customCategories = job.customCategories();
54 
55     const LoggingCategory::List qtKdeCategories = job.qtKdeCategories();
56 
57     SaveRulesJob saveJob;
58     QDir().mkpath(QLatin1String(KDEBUGSETTINGS_BINARY_DATA_DIR));
59     saveJob.setFileName(QLatin1String(KDEBUGSETTINGS_BINARY_DATA_DIR) + QLatin1Char('/') + filename + QStringLiteral("-generated.ref"));
60     qDebug() << " save " << saveJob.fileName();
61     saveJob.setListCustom(customCategories);
62     saveJob.setListKde(qtKdeCategories);
63     QVERIFY(saveJob.start());
64     compareFile(filename);
65 }
66