diff options
author | Samuel Gaist <samuel.gaist@edeltech.ch> | 2014-03-28 22:52:04 +0100 |
---|---|---|
committer | The Qt Project <gerrit-noreply@qt-project.org> | 2014-03-31 12:12:21 +0200 |
commit | 35a11d6fce6820fa71db7c8b696d25b5de508277 (patch) | |
tree | 0d254cc9d6ef702056a1d36c21cec03a80a41be4 /tests | |
parent | 0c7241ccf2592617b602873aae5f3113ed548215 (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')
-rw-r--r-- | tests/auto/corelib/io/qsettings/tst_qsettings.cpp | 27 |
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()); |