summaryrefslogtreecommitdiffstats
path: root/tests/auto
diff options
context:
space:
mode:
authorSamuel Gaist <samuel.gaist@edeltech.ch>2014-03-28 22:52:04 +0100
committerThe Qt Project <gerrit-noreply@qt-project.org>2014-03-31 12:12:21 +0200
commit35a11d6fce6820fa71db7c8b696d25b5de508277 (patch)
tree0d254cc9d6ef702056a1d36c21cec03a80a41be4 /tests/auto
parent0c7241ccf2592617b602873aae5f3113ed548215 (diff)
OS X QSettings auto test/writing check update
This patch aims to provide an updated test that follows changes started in 10.7: new rule is that only root can access SystemScope settings. It also disables the sync() workaround code path which is at least not executed during the tst_QSettings execution and returns wrong value to the test. From Apple's documentation: "Note that modification of some preferences domains (those not belonging to the “Current User”) requires root privileges (or Admin privileges prior to OS X v10.6)—see Authorization Services Programming Guide for information on how to gain suitable privileges" https://developer.apple.com/library/mac/documentation/CoreFoundation/Reference/CFPreferencesUtils/Reference/reference.html [ChangeLog][QtCore][QSettings] QSettings now returns the correct value for isWritable() when using SystemScope settings. Task-number: QTBUG-9824 Task-number: QTBUG-21062 Task-number: QTBUG-22745 Change-Id: Ib6a1490ec596b99d189ec4de9a0f28ecfd684172 Reviewed-by: Liang Qi <liang.qi@digia.com>
Diffstat (limited to 'tests/auto')
-rw-r--r--tests/auto/corelib/io/qsettings/tst_qsettings.cpp27
1 files changed, 24 insertions, 3 deletions
diff --git a/tests/auto/corelib/io/qsettings/tst_qsettings.cpp b/tests/auto/corelib/io/qsettings/tst_qsettings.cpp
index 12c89b1cf4..501ad6f415 100644
--- a/tests/auto/corelib/io/qsettings/tst_qsettings.cpp
+++ b/tests/auto/corelib/io/qsettings/tst_qsettings.cpp
@@ -50,6 +50,7 @@
#include <QtCore/QString>
#include <QtCore/QDir>
#include <QtCore/QThread>
+#include <QtCore/QSysInfo>
#include <QtGui/QKeySequence>
#include <cctype>
@@ -2797,10 +2798,30 @@ void tst_QSettings::isWritable()
QSettings s1(format, QSettings::SystemScope, "software.org", "KillerAPP");
QSettings s2(format, QSettings::SystemScope, "software.org", "Something Different");
QSettings s3(format, QSettings::SystemScope, "foo.org", "Something Different");
+
if (s1.contains("foo")) {
- QVERIFY(s1.isWritable());
- QVERIFY(s2.isWritable());
- QVERIFY(s3.isWritable());
+#if defined(Q_OS_MACX)
+ if (QSysInfo::macVersion() >= QSysInfo::MV_10_9) {
+ QVERIFY(s1.isWritable());
+ if (format == QSettings::NativeFormat) {
+ QVERIFY(!s2.isWritable());
+ QVERIFY(!s3.isWritable());
+ } else {
+ QVERIFY(s2.isWritable());
+ QVERIFY(s3.isWritable());
+ }
+ } else if (QSysInfo::macVersion() >= QSysInfo::MV_10_7 &&
+ format == QSettings::NativeFormat) {
+ QVERIFY(!s1.isWritable());
+ QVERIFY(!s2.isWritable());
+ QVERIFY(!s3.isWritable());
+ } else
+#endif
+ {
+ QVERIFY(s1.isWritable());
+ QVERIFY(s2.isWritable());
+ QVERIFY(s3.isWritable());
+ }
} else {
QVERIFY(!s1.isWritable());
QVERIFY(!s2.isWritable());