File indexing completed on 2024-04-21 14:54:55

0001 /*
0002     SPDX-License-Identifier: LGPL-2.0-or-later
0003     SPDX-FileCopyrightText: 2021 Harald Sitter <sitter@kde.org>
0004 */
0005 
0006 #include <QTest>
0007 
0008 #include "../src/metadata.cpp"
0009 
0010 using namespace KCrash;
0011 
0012 class MetadataTest : public QObject
0013 {
0014     Q_OBJECT
0015 private Q_SLOTS:
0016     void testEverything()
0017     {
0018         QTemporaryDir tmpDir;
0019         QVERIFY(tmpDir.isValid());
0020 
0021         const QString iniFile = QStringLiteral("%1/foo.ini").arg(tmpDir.path());
0022         Metadata data("BEFEHL");
0023 #ifdef Q_OS_LINUX
0024         MetadataINIWriter iniWriter(iniFile.toLocal8Bit());
0025         data.setAdditionalWriter(&iniWriter);
0026 #endif
0027         data.add("--ABC", "FOO");
0028         data.addBool("--Meow");
0029         data.close();
0030         const int argc = data.argc;
0031         QCOMPARE(argc, 4);
0032         QCOMPARE(data.argv.at(0), QStringLiteral("BEFEHL")); // make sure we do stringy comparison
0033         QCOMPARE(data.argv.at(1), QStringLiteral("--ABC"));
0034         QCOMPARE(data.argv.at(2), QStringLiteral("FOO"));
0035         QCOMPARE(data.argv.at(3), QStringLiteral("--Meow"));
0036         QCOMPARE(data.argv.at(4), nullptr); // list should be null terminated
0037 
0038 #ifdef Q_OS_LINUX
0039         QFile::exists(iniFile);
0040         QFile ini(iniFile);
0041         QVERIFY(ini.open(QFile::ReadOnly));
0042         QCOMPARE(ini.readLine(), "[KCrash]\n");
0043         QCOMPARE(ini.readLine(), "ABC=FOO\n");
0044         QCOMPARE(ini.readLine(), "Meow=true\n");
0045         QVERIFY(ini.atEnd()); // nothing after final newline
0046 #endif
0047     }
0048 
0049     void testNoFile()
0050     {
0051         // Doesn't explode without writer
0052         Metadata data("BEFEHL");
0053         data.add("--ABC", "FOO");
0054         data.close();
0055         const int argc = data.argc;
0056         QCOMPARE(argc, 3);
0057     }
0058 };
0059 
0060 QTEST_MAIN(MetadataTest)
0061 
0062 #include "metadatatest.moc"