File indexing completed on 2024-04-14 03:54:14

0001 /*
0002     SPDX-FileCopyrightText: 2007 Aaron Seigo <aseigo@kde.org>
0003     SPDX-FileCopyrightText: 2014 Marco Martin <mart@kde.org>
0004 
0005     SPDX-License-Identifier: LGPL-2.0-or-later
0006 */
0007 
0008 #include "fallbackpackagetest.h"
0009 
0010 #include "packageloader.h"
0011 #include "packagestructure.h"
0012 #include <KLocalizedString>
0013 
0014 void FallbackPackageTest::initTestCase()
0015 {
0016     m_fallPackagePath = QFINDTESTDATA("data/testpackage");
0017     m_fallbackPkg = KPackage::PackageLoader::self()->loadPackage(QStringLiteral("KPackage/Generic"));
0018     m_fallbackPkg.addFileDefinition("mainscript", QStringLiteral("ui/main.qml"));
0019     m_fallbackPkg.setPath(m_fallPackagePath);
0020 
0021     m_packagePath = QFINDTESTDATA("data/testfallbackpackage");
0022     m_pkg = KPackage::PackageLoader::self()->loadPackage(QStringLiteral("KPackage/Generic"));
0023     m_pkg.addFileDefinition("mainscript", QStringLiteral("ui/main.qml"));
0024     m_pkg.setPath(m_packagePath);
0025 }
0026 
0027 void FallbackPackageTest::beforeFallback()
0028 {
0029     QVERIFY(m_fallbackPkg.hasValidStructure());
0030     QVERIFY(m_pkg.hasValidStructure());
0031 
0032     // m_fallbackPkg should have otherfile.qml, m_pkg shouldn't
0033     QVERIFY(!m_fallbackPkg.filePath("ui", QStringLiteral("otherfile.qml")).isEmpty());
0034     QVERIFY(m_pkg.filePath("ui", QStringLiteral("otherfile.qml")).isEmpty());
0035 }
0036 
0037 void FallbackPackageTest::afterFallback()
0038 {
0039     m_pkg.setFallbackPackage(m_fallbackPkg);
0040 
0041     // after setting the fallback, m_pkg should resolve the exact same file as m_fallbackPkg
0042     // for otherfile.qml
0043     QVERIFY(!m_pkg.filePath("ui", QStringLiteral("otherfile.qml")).isEmpty());
0044     QCOMPARE(m_fallbackPkg.filePath("ui", QStringLiteral("otherfile.qml")), m_pkg.filePath("ui", QStringLiteral("otherfile.qml")));
0045     QVERIFY(m_fallbackPkg.filePath("mainscript") != m_pkg.filePath("mainscript"));
0046 }
0047 
0048 void FallbackPackageTest::cycle()
0049 {
0050     m_fallbackPkg.setFallbackPackage(m_pkg);
0051     m_pkg.setFallbackPackage(m_fallbackPkg);
0052 
0053     // The cycle should have been detected and filePath should take a not infinite time
0054     QTRY_COMPARE_WITH_TIMEOUT(m_fallbackPkg.filePath("ui", QStringLiteral("otherfile.qml")), m_pkg.filePath("ui", QStringLiteral("otherfile.qml")), 1000);
0055 }
0056 
0057 QTEST_MAIN(FallbackPackageTest)
0058 
0059 #include "moc_fallbackpackagetest.cpp"