File indexing completed on 2024-04-28 07:45:20
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"