summaryrefslogtreecommitdiffstats
path: root/tests/auto/installer
diff options
context:
space:
mode:
Diffstat (limited to 'tests/auto/installer')
-rw-r--r--tests/auto/installer/binaryformat/tst_binaryformat.cpp2
-rw-r--r--tests/auto/installer/packagemanagercore/tst_packagemanagercore.cpp62
-rw-r--r--tests/auto/installer/repository/tst_repository.cpp47
-rw-r--r--tests/auto/installer/scriptengine/tst_scriptengine.cpp4
-rw-r--r--tests/auto/installer/settings/tst_settings.cpp2
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"));