diff options
Diffstat (limited to 'tests/auto/installer')
5 files changed, 112 insertions, 5 deletions
diff --git a/tests/auto/installer/binaryformat/tst_binaryformat.cpp b/tests/auto/installer/binaryformat/tst_binaryformat.cpp index 6b40452c0..c9cd2b00f 100644 --- a/tests/auto/installer/binaryformat/tst_binaryformat.cpp +++ b/tests/auto/installer/binaryformat/tst_binaryformat.cpp @@ -128,7 +128,7 @@ private slots: // throws QInstaller::BinaryContent::findMagicCookie(&file, QInstaller::BinaryContent::MagicCookie); } catch (const QInstaller::Error &error) { - QCOMPARE(qPrintable(error.message()), "No marker found, stopped after 71.00 KiB."); + QCOMPARE(qPrintable(error.message()), "No marker found, stopped after 71.00 KB."); } catch (...) { QFAIL("Unexpected error."); } diff --git a/tests/auto/installer/packagemanagercore/tst_packagemanagercore.cpp b/tests/auto/installer/packagemanagercore/tst_packagemanagercore.cpp index 47fb41bf1..67fa7e2c5 100644 --- a/tests/auto/installer/packagemanagercore/tst_packagemanagercore.cpp +++ b/tests/auto/installer/packagemanagercore/tst_packagemanagercore.cpp @@ -34,6 +34,7 @@ #include <progresscoordinator.h> #include <QDir> +#include <QFile> #include <QTemporaryFile> #include <QTest> @@ -118,15 +119,18 @@ private slots: QVERIFY(core.calculateComponentsToInstall()); { - QTemporaryFile dummy(testDirectory + QLatin1String("/dummy")); - dummy.open(); + QFile dummy(testDirectory + QLatin1String("/dummy")); + QVERIFY(dummy.open(QIODevice::ReadWrite)); core.runInstaller(); QVERIFY(QDir(testDirectory).exists()); QVERIFY(QFileInfo(dummy.fileName()).exists()); + + dummy.close(); + QVERIFY(dummy.remove()); } - QDir().rmdir(testDirectory); + QVERIFY(QDir().rmdir(testDirectory)); ProgressCoordinator::instance()->reset(); } @@ -257,6 +261,58 @@ private slots: core.calculateComponentsToInstall(); QCOMPARE(core.requiredDiskSpace(), 250ULL); } + + void testDirectoryWritable() + { + PackageManagerCore core; + + const QString testDirectory = QInstaller::generateTemporaryFileName(); + QVERIFY(QDir().mkpath(testDirectory)); + QVERIFY(QDir(testDirectory).exists()); + + // should be writable + QVERIFY(core.directoryWritable(testDirectory)); + +#if defined(Q_OS_LINUX) || defined(Q_OS_MACOS) + QFile dirDevice(testDirectory); + dirDevice.setPermissions(QFileDevice::ReadOwner | QFileDevice::ExeOwner); + + // should not be writable + QVERIFY(!core.directoryWritable(testDirectory)); + + dirDevice.setPermissions(QFileDevice::ReadOwner | QFileDevice::WriteOwner | QFileDevice::ExeOwner); +#endif + QVERIFY(QDir().rmdir(testDirectory)); + } + + void testSubdirectoriesWritable() + { + PackageManagerCore core; + + const QString testDirectory = QInstaller::generateTemporaryFileName(); + QVERIFY(QDir().mkpath(testDirectory)); + QVERIFY(QDir(testDirectory).exists()); + + const QString testSubdirectory = testDirectory + "/" + QString::number(qrand() % 1000); + + QVERIFY(QDir().mkpath(testSubdirectory)); + QVERIFY(QDir(testSubdirectory).exists()); + + // should be writable + QVERIFY(core.subdirectoriesWritable(testDirectory)); + +#if defined(Q_OS_LINUX) || defined(Q_OS_MACOS) + QFile dirDevice(testSubdirectory); + dirDevice.setPermissions(QFileDevice::ReadOwner | QFileDevice::ExeOwner); + + // should not be writable + QVERIFY(!core.subdirectoriesWritable(testDirectory)); + + dirDevice.setPermissions(QFileDevice::ReadOwner | QFileDevice::WriteOwner | QFileDevice::ExeOwner); +#endif + QVERIFY(QDir().rmdir(testSubdirectory)); + QVERIFY(QDir().rmdir(testDirectory)); + } }; diff --git a/tests/auto/installer/repository/tst_repository.cpp b/tests/auto/installer/repository/tst_repository.cpp index 8d5d278a2..7b8405baf 100644 --- a/tests/auto/installer/repository/tst_repository.cpp +++ b/tests/auto/installer/repository/tst_repository.cpp @@ -1,4 +1,6 @@ #include "repository.h" +#include "repositorycategory.h" +#include "settings.h" #include <QDataStream> #include <QString> @@ -114,6 +116,51 @@ private slots: s1 >> r1; s2 >> r2; QCOMPARE(r1, r2); } + + void testUpdateRepositoryCategories() + { + Settings settings; + + RepositoryCategory category; + category.setEnabled(true); + category.setDisplayName(QLatin1String("category")); + + Repository original(QUrl("http://example.com/"), true); + original.setEnabled(true); + category.addRepository(original); + + Repository replacement = original; + replacement.setUsername(QLatin1String("user")); + replacement.setPassword(QLatin1String("pass")); + + QSet<RepositoryCategory> categories; + categories.insert(category); + settings.setRepositoryCategories(categories); + + QHash<QString, QPair<Repository, Repository>> update; + + // non-empty update + update.insert(QLatin1String("replace"), qMakePair(original, replacement)); + QVERIFY(settings.updateRepositoryCategories(update) == Settings::UpdatesApplied); + + // verify that the values really updated + QVERIFY(settings.repositoryCategories().values().at(0) + .repositories().values().at(0).username() == "user"); + + QVERIFY(settings.repositoryCategories().values().at(0) + .repositories().values().at(0).password() == "pass"); + + // empty update + update.clear(); + QVERIFY(settings.updateRepositoryCategories(update) == Settings::NoUpdatesApplied); + + // non-matching repository update + Repository nonMatching(QUrl("https://www.qt.io/"), true); + nonMatching.setEnabled(true); + + update.insert(QLatin1String("replace"), qMakePair(nonMatching, replacement)); + QVERIFY(settings.updateRepositoryCategories(update) == Settings::NoUpdatesApplied); + } }; QTEST_MAIN(tst_Repository) diff --git a/tests/auto/installer/scriptengine/tst_scriptengine.cpp b/tests/auto/installer/scriptengine/tst_scriptengine.cpp index 7118d067d..b7c602e26 100644 --- a/tests/auto/installer/scriptengine/tst_scriptengine.cpp +++ b/tests/auto/installer/scriptengine/tst_scriptengine.cpp @@ -280,7 +280,11 @@ private slots: // ignore Output from script setExpectedScriptOutput("function receive()"); +#if QT_VERSION >= QT_VERSION_CHECK(5,12,0) + QTest::ignoreMessage(QtWarningMsg, "<Unknown File>:38: ReferenceError: foo is not defined"); +#else QTest::ignoreMessage(QtWarningMsg, ":38: ReferenceError: foo is not defined"); +#endif emiter.produceSignal(); const QJSValue value = m_scriptEngine->evaluate(""); diff --git a/tests/auto/installer/settings/tst_settings.cpp b/tests/auto/installer/settings/tst_settings.cpp index 0edf3fd7b..ab8611e12 100644 --- a/tests/auto/installer/settings/tst_settings.cpp +++ b/tests/auto/installer/settings/tst_settings.cpp @@ -49,7 +49,7 @@ void tst_Settings::loadTutorialConfig() QCOMPARE(settings.installerApplicationIcon(), QLatin1String(":/installer.ico")); QCOMPARE(settings.installerWindowIcon(), QLatin1String(":/installer.ico")); QCOMPARE(settings.systemIconSuffix(), QLatin1String(".ico")); -#elif defined(Q_OS_OSX) +#elif defined(Q_OS_MACOS) QCOMPARE(settings.installerApplicationIcon(), QLatin1String(":/installer.icns")); QCOMPARE(settings.installerWindowIcon(), QLatin1String(":/installer.icns")); QCOMPARE(settings.systemIconSuffix(), QLatin1String(".icns")); |