File indexing completed on 2024-04-21 15:02:36

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 
0011 #include "packageloader.h"
0012 #include "packagestructure.h"
0013 #include <KLocalizedString>
0014 
0015 void FallbackPackageTest::initTestCase()
0016 {
0017     m_fallPackagePath = QFINDTESTDATA("data/testpackage");
0018     m_fallbackPkg = KPackage::PackageLoader::self()->loadPackage(QStringLiteral("KPackage/Generic"));
0019     m_fallbackPkg.addFileDefinition("mainscript", QStringLiteral("ui/main.qml"), i18n("Main Script File"));
0020     m_fallbackPkg.setPath(m_fallPackagePath);
0021 
0022     m_packagePath = QFINDTESTDATA("data/testfallbackpackage");
0023     m_pkg = KPackage::PackageLoader::self()->loadPackage(QStringLiteral("KPackage/Generic"));
0024     m_pkg.addFileDefinition("mainscript", QStringLiteral("ui/main.qml"), i18n("Main Script File"));
0025     m_pkg.setPath(m_packagePath);
0026 }
0027 
0028 void FallbackPackageTest::beforeFallback()
0029 {
0030     QVERIFY(m_fallbackPkg.hasValidStructure());
0031     QVERIFY(m_pkg.hasValidStructure());
0032 
0033     // m_fallbackPkg should have otherfile.qml, m_pkg shouldn't
0034     QVERIFY(!m_fallbackPkg.filePath("ui", QStringLiteral("otherfile.qml")).isEmpty());
0035     QVERIFY(m_pkg.filePath("ui", QStringLiteral("otherfile.qml")).isEmpty());
0036 }
0037 
0038 void FallbackPackageTest::afterFallback()
0039 {
0040     m_pkg.setFallbackPackage(m_fallbackPkg);
0041 
0042     // after setting the fallback, m_pkg should resolve the exact same file as m_fallbackPkg
0043     // for otherfile.qml
0044     QVERIFY(!m_pkg.filePath("ui", QStringLiteral("otherfile.qml")).isEmpty());
0045     QCOMPARE(m_fallbackPkg.filePath("ui", QStringLiteral("otherfile.qml")), m_pkg.filePath("ui", QStringLiteral("otherfile.qml")));
0046     QVERIFY(m_fallbackPkg.filePath("mainscript") != m_pkg.filePath("mainscript"));
0047 }
0048 
0049 void FallbackPackageTest::cycle()
0050 {
0051     m_fallbackPkg.setFallbackPackage(m_pkg);
0052     m_pkg.setFallbackPackage(m_fallbackPkg);
0053 
0054     // The cycle should have been detected and filePath should take a not infinite time
0055     QTRY_COMPARE_WITH_TIMEOUT(m_fallbackPkg.filePath("ui", QStringLiteral("otherfile.qml")), m_pkg.filePath("ui", QStringLiteral("otherfile.qml")), 1000);
0056 }
0057 
0058 QTEST_MAIN(FallbackPackageTest)
0059 
0060 #include "moc_fallbackpackagetest.cpp"