aboutsummaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
authorChristian Kandeler <christian.kandeler@qt.io>2018-05-14 12:20:33 +0200
committerChristian Kandeler <christian.kandeler@qt.io>2018-06-01 07:19:24 +0000
commit40746dae36452398649481fecad9cdc5f25cc80f (patch)
treec97c73364bdd5dfd3069b7a0b062fcee8ef38182 /tests
parent78e19d1f234bb1ba9957c877e57d128f09d1459a (diff)
Add support for system-level settings
In addition to the traditional per-user settings, there is now also a system-wide settings file affecting all users. The file's platform- specific default location can be overridden at build time. The qbs-config tool can write these settings via the new --system option. [ChangeLog] Introduced the concept of system-level qbs settings Change-Id: Ie6f675a74e96ce1fa7b2dd0712f6106071e848a6 Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
Diffstat (limited to 'tests')
-rw-r--r--tests/auto/blackbox/blackbox.pro1
-rw-r--r--tests/auto/blackbox/blackbox.qbs1
-rw-r--r--tests/auto/blackbox/tst_blackbox.cpp89
-rw-r--r--tests/auto/blackbox/tst_blackbox.h1
-rw-r--r--tests/auto/tools/tst_tools.cpp4
5 files changed, 94 insertions, 2 deletions
diff --git a/tests/auto/blackbox/blackbox.pro b/tests/auto/blackbox/blackbox.pro
index 5e58e0e19..42848d077 100644
--- a/tests/auto/blackbox/blackbox.pro
+++ b/tests/auto/blackbox/blackbox.pro
@@ -4,6 +4,7 @@ HEADERS = tst_blackbox.h tst_blackboxbase.h
SOURCES = tst_blackbox.cpp tst_blackboxbase.cpp
OBJECTS_DIR = generic
MOC_DIR = $${OBJECTS_DIR}-moc
+qbs_enable_unit_tests:DEFINES += QBS_ENABLE_UNIT_TESTS
include(../auto.pri)
diff --git a/tests/auto/blackbox/blackbox.qbs b/tests/auto/blackbox/blackbox.qbs
index 55c116480..917e8345b 100644
--- a/tests/auto/blackbox/blackbox.qbs
+++ b/tests/auto/blackbox/blackbox.qbs
@@ -25,4 +25,5 @@ QbsAutotest {
"tst_blackbox.h",
]
cpp.defines: base.concat(["SRCDIR=" + Utilities.cStringQuote(path)])
+ .concat(qbsbuildconfig.enableUnitTests ? ["QBS_ENABLE_UNIT_TESTS"] : [])
}
diff --git a/tests/auto/blackbox/tst_blackbox.cpp b/tests/auto/blackbox/tst_blackbox.cpp
index 8ca35249a..844b421c4 100644
--- a/tests/auto/blackbox/tst_blackbox.cpp
+++ b/tests/auto/blackbox/tst_blackbox.cpp
@@ -33,6 +33,7 @@
#include <api/languageinfo.h>
#include <tools/hostosinfo.h>
#include <tools/installoptions.h>
+#include <tools/preferences.h>
#include <tools/profile.h>
#include <tools/qttools.h>
#include <tools/shellutils.h>
@@ -4600,6 +4601,94 @@ void TestBlackbox::pseudoMultiplexing()
QCOMPARE(runQbs(), 0);
}
+void TestBlackbox::qbsConfig()
+{
+ QbsRunParameters params("config");
+#ifdef QBS_ENABLE_UNIT_TESTS
+ QTemporaryDir tempSystemSettingsDir;
+ params.environment.insert("QBS_AUTOTEST_SYSTEM_SETTINGS_DIR", tempSystemSettingsDir.path());
+ QTemporaryDir tempUserSettingsDir;
+ QVERIFY(tempSystemSettingsDir.isValid());
+ QVERIFY(tempUserSettingsDir.isValid());
+ const QStringList settingsDirArgs = QStringList{"--settings-dir", tempUserSettingsDir.path()};
+
+ // Set values.
+ params.arguments = settingsDirArgs + QStringList{"--system", "key.subkey.scalar", "s"};
+ QCOMPARE(runQbs(params), 0);
+ params.arguments = settingsDirArgs + QStringList{"--system", "key.subkey.list", "['sl']"};
+ QCOMPARE(runQbs(params), 0);
+ params.arguments = settingsDirArgs + QStringList{"--user", "key.subkey.scalar", "u"};
+ QCOMPARE(runQbs(params), 0);
+ params.arguments = settingsDirArgs + QStringList{"key.subkey.list", "[\"u1\",\"u2\"]"};
+ QCOMPARE(runQbs(params), 0);
+
+ // Check outputs.
+ const auto valueExtractor = [this] {
+ const QByteArray trimmed = m_qbsStdout.trimmed();
+ return trimmed.mid(trimmed.lastIndexOf(':') + 2);
+ };
+ params.arguments = settingsDirArgs + QStringList{"--list", "key.subkey.scalar"};
+ QCOMPARE(runQbs(params), 0);
+ QCOMPARE(valueExtractor(), QByteArray("\"u\""));
+ params.arguments = settingsDirArgs + QStringList{"--list", "--user", "key.subkey.scalar"};
+ QCOMPARE(runQbs(params), 0);
+ QCOMPARE(valueExtractor(), QByteArray("\"u\""));
+ params.arguments = settingsDirArgs + QStringList{"--list", "--system", "key.subkey.scalar"};
+ QCOMPARE(runQbs(params), 0);
+ QCOMPARE(valueExtractor(), QByteArray("\"s\""));
+ params.arguments = settingsDirArgs + QStringList{"--list", "key.subkey.list"};
+ QCOMPARE(runQbs(params), 0);
+ QCOMPARE(valueExtractor(), QByteArray("[\"u1\", \"u2\", \"sl\"]"));
+ params.arguments = settingsDirArgs + QStringList{"--list", "--user", "key.subkey.list"};
+ QCOMPARE(runQbs(params), 0);
+ QCOMPARE(valueExtractor(), QByteArray("[\"u1\", \"u2\"]"));
+ params.arguments = settingsDirArgs + QStringList{"--list", "--system", "key.subkey.list"};
+ QCOMPARE(runQbs(params), 0);
+ QCOMPARE(valueExtractor(), QByteArray("[\"sl\"]"));
+
+ // Remove some values and re-check.
+ params.arguments = settingsDirArgs + QStringList{"--unset", "key.subkey.scalar"};
+ QCOMPARE(runQbs(params), 0);
+ params.arguments = settingsDirArgs + QStringList{"--system", "--unset", "key.subkey.list"};
+ QCOMPARE(runQbs(params), 0);
+ params.arguments = settingsDirArgs + QStringList{"--list", "key.subkey.scalar"};
+ QCOMPARE(runQbs(params), 0);
+ QCOMPARE(valueExtractor(), QByteArray("\"s\""));
+ params.arguments = settingsDirArgs + QStringList{"--list", "key.subkey.list"};
+ QCOMPARE(runQbs(params), 0);
+ QCOMPARE(valueExtractor(), QByteArray("[\"u1\", \"u2\"]"));
+
+ // Check preferences.ignoreSystemSearchPaths
+ params.arguments = settingsDirArgs
+ + QStringList{"--system", "preferences.qbsSearchPaths", "['/usr/lib/qbs']"};
+ QCOMPARE(runQbs(params), 0);
+ params.arguments = settingsDirArgs
+ + QStringList{"preferences.qbsSearchPaths", "['/home/user/qbs']"};
+ QCOMPARE(runQbs(params), 0);
+ qbs::Settings settings(tempUserSettingsDir.path(), tempSystemSettingsDir.path());
+ const qbs::Preferences prefs(&settings, "SomeProfile");
+ QVERIFY2(prefs.searchPaths().contains("/usr/lib/qbs")
+ && prefs.searchPaths().contains("/home/user/qbs"),
+ qPrintable(prefs.searchPaths().join(',')));
+ settings.setValue("profiles.SomeProfile.preferences.ignoreSystemSearchPaths", true);
+ QVERIFY2(!prefs.searchPaths().contains("/usr/lib/qbs")
+ && prefs.searchPaths().contains("/home/user/qbs"),
+ qPrintable(prefs.searchPaths().join(',')));
+
+#else
+ qDebug() << "ability to redirect the system settings dir not compiled in, skipping"
+ "most qbs-config tests";
+#endif // QBS_ENABLE_UNIT_TESTS
+
+ // Check that trying to write to actual system settings causes access failure.
+ params.expectFailure = true;
+ params.environment.clear();
+ params.arguments = QStringList{"--system", "key.subkey.scalar", "s"};
+ QVERIFY(runQbs(params) != 0);
+ QVERIFY2(m_qbsStderr.contains("You do not have permission to write to that location."),
+ m_qbsStderr.constData());
+}
+
void TestBlackbox::radAfterIncompleteBuild_data()
{
QTest::addColumn<QString>("projectFileName");
diff --git a/tests/auto/blackbox/tst_blackbox.h b/tests/auto/blackbox/tst_blackbox.h
index e5adc762f..6562e8cbc 100644
--- a/tests/auto/blackbox/tst_blackbox.h
+++ b/tests/auto/blackbox/tst_blackbox.h
@@ -205,6 +205,7 @@ private slots:
void properQuoting();
void propertiesInExportItems();
void pseudoMultiplexing();
+ void qbsConfig();
void qbsVersion();
void qtBug51237();
void radAfterIncompleteBuild();
diff --git a/tests/auto/tools/tst_tools.cpp b/tests/auto/tools/tst_tools.cpp
index cf94553ba..0073f9e68 100644
--- a/tests/auto/tools/tst_tools.cpp
+++ b/tests/auto/tools/tst_tools.cpp
@@ -300,11 +300,11 @@ void TestTools::testSettingsMigration()
if (hasOldSettings) {
QVERIFY(QFileInfo(settings.baseDirectory() + "/qbs/" QBS_VERSION "/profiles/right.txt")
.exists());
- QCOMPARE(settings.value("key").toString(),
+ QCOMPARE(settings.value("key", Settings::UserScope).toString(),
settings.baseDirectory() + "/qbs/" QBS_VERSION "/profilesright");
} else {
QVERIFY(!QFileInfo(settings.baseDirectory() + "/qbs/" QBS_VERSION "/profiles").exists());
- QVERIFY(settings.allKeys().empty());
+ QVERIFY(settings.allKeys(Settings::UserScope).empty());
}
}