From 6c8f32388bc7c7228887560151cde8e6d96cc546 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tor=20Arne=20Vestb=C3=B8?= Date: Tue, 4 Oct 2016 14:34:33 +0200 Subject: tst_QSettings: Detect if Apple platforms support writing to SystemScope A fair amount of tests are skipped if we can't write to the system scope, eg on iOS. Without this detection they will fail. Change-Id: I8257f1f24e69dae88925c20d2bff851e81701405 Reviewed-by: Jake Petroules --- tests/auto/corelib/io/qsettings/tst_qsettings.cpp | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) (limited to 'tests/auto/corelib/io/qsettings') diff --git a/tests/auto/corelib/io/qsettings/tst_qsettings.cpp b/tests/auto/corelib/io/qsettings/tst_qsettings.cpp index dcbeb9b927..26bbb16de3 100644 --- a/tests/auto/corelib/io/qsettings/tst_qsettings.cpp +++ b/tests/auto/corelib/io/qsettings/tst_qsettings.cpp @@ -54,6 +54,10 @@ #include #endif +#if defined(Q_OS_DARWIN) +#include +#endif + Q_DECLARE_METATYPE(QSettings::Format) #ifndef QSETTINGS_P_H_VERSION @@ -72,7 +76,19 @@ static inline bool canWriteNativeSystemSettings() else qErrnoWarning(result, "RegOpenKeyEx failed"); return result == ERROR_SUCCESS; -#else // Q_OS_WIN && !Q_OS_WINRT +#elif defined(Q_OS_DARWIN) + CFStringRef key = CFSTR("canWriteNativeSystemSettings"); + #define ANY_APP_USER_AND_HOST kCFPreferencesAnyApplication, kCFPreferencesAnyUser, kCFPreferencesAnyHost + CFPreferencesSetValue(key, CFSTR("true"), ANY_APP_USER_AND_HOST); + if (CFPreferencesSynchronize(ANY_APP_USER_AND_HOST)) { + // Cleanup + CFPreferencesSetValue(key, 0, ANY_APP_USER_AND_HOST); + CFPreferencesSynchronize(ANY_APP_USER_AND_HOST); + return true; + } else { + return false; + } +#else return true; #endif } -- cgit v1.2.3