File indexing completed on 2024-05-12 05:50:11
0001 /* 0002 SPDX-FileCopyrightText: 2016 Elvis Angelaccio <elvis.angelaccio@kde.org> 0003 0004 SPDX-License-Identifier: BSD-2-Clause 0005 */ 0006 0007 #include <KPluginMetaData> 0008 #include <QTest> 0009 0010 class MetaDataTest : public QObject 0011 { 0012 Q_OBJECT 0013 0014 private Q_SLOTS: 0015 0016 void initTestCase(); 0017 void testPluginLoading(); 0018 void testPluginMetadata(); 0019 0020 private: 0021 QVector<KPluginMetaData> m_plugins; 0022 }; 0023 0024 void MetaDataTest::initTestCase() 0025 { 0026 m_plugins = KPluginMetaData::findPlugins(QStringLiteral("kerfuffle")); 0027 } 0028 0029 // If a plugin has invalid JSON metadata (e.g. an extra comma somewhere) 0030 // it won't occur in the list of available plugins. 0031 void MetaDataTest::testPluginLoading() 0032 { 0033 QCOMPARE(m_plugins.count() % PLUGINS_COUNT, 0); 0034 } 0035 0036 void MetaDataTest::testPluginMetadata() 0037 { 0038 for (const KPluginMetaData &metaData : std::as_const(m_plugins)) { 0039 QVERIFY(!metaData.mimeTypes().isEmpty()); 0040 0041 const QJsonObject json = metaData.rawData(); 0042 QVERIFY(json.keys().contains(QLatin1String("X-KDE-Priority"))); 0043 QVERIFY(json.keys().contains(QLatin1String("KPlugin"))); 0044 0045 if (json.keys().contains(QLatin1String("X-KDE-Kerfuffle-ReadOnlyExecutables"))) { 0046 QVERIFY(json[QStringLiteral("X-KDE-Kerfuffle-ReadOnlyExecutables")].isArray()); 0047 } 0048 0049 if (json.keys().contains(QLatin1String("X-KDE-Kerfuffle-ReadWriteExecutables"))) { 0050 QVERIFY(json[QStringLiteral("X-KDE-Kerfuffle-ReadWriteExecutables")].isArray()); 0051 0052 // If there is a list of read-write executables, the plugin has to be read-write. 0053 QVERIFY(json.keys().contains(QLatin1String("X-KDE-Kerfuffle-ReadWrite"))); 0054 QVERIFY(json[QStringLiteral("X-KDE-Kerfuffle-ReadWrite")].toBool()); 0055 } 0056 } 0057 } 0058 0059 QTEST_GUILESS_MAIN(MetaDataTest) 0060 0061 #include "metadatatest.moc"