summaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
authorMaurice Kalinowski <maurice.kalinowski@digia.com>2014-04-03 08:21:18 +0200
committerMaurice Kalinowski <maurice.kalinowski@digia.com>2014-08-13 09:40:56 +0200
commit091653e9e71c3e2ada54efe6b3592340e16eaa85 (patch)
tree832fa7a95b27cf59e5a01588367febb7ff9a62ee /tests
parent7487592cceaf3d2cfe002257e1d7f0b023c0ec8a (diff)
Implement native settings format for WinRT
WinRT stores settings inside the app bundle, not in the registry. Some tests are not fully functional due to errors in the file implementation (See QTBUG-40588). QSettings::SystemScope translates to a roaming container on WinRT, meaning that settings stored inside there should be uploaded and shared among devices. However, this is untested so far. The tests have been updated for those platforms which do not store the order of keys. This has been done on some locations only so far, but needed to be done on more places for WinRT. Task-number: QTBUG-33498 Change-Id: Ifd0194387b09c220d31812b4b6fd0ce9a7d84d24 Reviewed-by: Andrew Knight <andrew.knight@digia.com>
Diffstat (limited to 'tests')
-rw-r--r--tests/auto/corelib/io/qsettings/tst_qsettings.cpp87
1 files changed, 63 insertions, 24 deletions
diff --git a/tests/auto/corelib/io/qsettings/tst_qsettings.cpp b/tests/auto/corelib/io/qsettings/tst_qsettings.cpp
index 2c9868cd10..7f1c31044b 100644
--- a/tests/auto/corelib/io/qsettings/tst_qsettings.cpp
+++ b/tests/auto/corelib/io/qsettings/tst_qsettings.cpp
@@ -184,14 +184,14 @@ void tst_QSettings::getSetCheck()
QCOMPARE(true, obj1.fallbacksEnabled());
}
-#if defined(Q_OS_WINCE)
+#if defined(Q_OS_WINCE) || defined(Q_OS_WINRT)
static void removePath(const QString& _path)
{
QString path = _path;
QDir dir(path);
if (!dir.exists())
return;
- QStringList entries = dir.entryList();
+ QStringList entries = dir.entryList(QDir::NoDotAndDotDot);
foreach(QString name, entries) {
QString absolute = path + name;
if (QFileInfo(absolute).isDir())
@@ -342,6 +342,17 @@ void tst_QSettings::init()
system(QString("rm -fr %1 2> /dev/null").arg(settingsPath()).toLatin1());
#endif
+#if defined(Q_OS_WINRT)
+ QSettings(QSettings::UserScope, "software.org", "KillerAPP").clear();
+ QSettings(QSettings::SystemScope, "software.org", "KillerAPP").clear();
+ QSettings(QSettings::UserScope, "other.software.org", "KillerAPP").clear();
+ QSettings(QSettings::SystemScope, "other.software.org", "KillerAPP").clear();
+ QSettings(QSettings::UserScope, "software.org").clear();
+ QSettings(QSettings::SystemScope, "software.org").clear();
+ QSettings(QSettings::UserScope, "other.software.org").clear();
+ QSettings(QSettings::SystemScope, "other.software.org").clear();
+ removePath(settingsPath());
+#endif
QFile::remove("foo");
}
@@ -552,7 +563,7 @@ void tst_QSettings::ctor()
} else {
caseSensitive = pathconf(QDir::currentPath().toLatin1().constData(), _PC_CASE_SENSITIVE);
}
-#elif defined(Q_OS_WIN32)
+#elif defined(Q_OS_WIN32) || defined(Q_OS_WINRT)
caseSensitive = false;
#endif
if (caseSensitive)
@@ -626,8 +637,8 @@ void tst_QSettings::ctor()
QCoreApplication::instance()->setOrganizationName("");
QCoreApplication::instance()->setApplicationName("");
QSettings settings;
-#ifdef Q_OS_MAC
- QEXPECT_FAIL("native", "Default settings on Mac are valid, despite organization domain, name, and app name being null", Continue);
+#if defined(Q_OS_MAC) || defined(Q_OS_WINRT)
+ QEXPECT_FAIL("native", "Default settings on Mac/WinRT are valid, despite organization domain, name, and app name being null", Continue);
#endif
QCOMPARE(settings.status(), QSettings::AccessError);
QCoreApplication::instance()->setOrganizationName("software.org");
@@ -641,8 +652,8 @@ void tst_QSettings::ctor()
}
QSettings settings(format, QSettings::UserScope, "", "");
-#ifdef Q_OS_MAC
- QEXPECT_FAIL("native", "Default settings on Mac are valid, despite organization domain, name, and app name being null", Continue);
+#if defined(Q_OS_MAC) || defined(Q_OS_WINRT)
+ QEXPECT_FAIL("native", "Default settings on Mac/WinRT are valid, despite organization domain, name, and app name being null", Continue);
#endif
QCOMPARE(settings.status(), QSettings::AccessError);
QSettings settings2(format, QSettings::UserScope, "software.org", "KillerAPP");
@@ -1747,14 +1758,18 @@ void tst_QSettings::testChildKeysAndGroups()
settings1.beginGroup("/alpha");
QCOMPARE(settings1.childKeys(), QStringList());
- QCOMPARE(settings1.childGroups(), QStringList() << "beta" << "gamma");
+ QStringList children = settings1.childGroups();
+ children.sort();
+ QCOMPARE(children, QStringList() << "beta" << "gamma");
settings1.beginGroup("/beta");
QCOMPARE(settings1.childKeys(), QStringList() << "geometry");
QCOMPARE(settings1.childGroups(), QStringList() << "geometry");
settings1.beginGroup("/geometry");
- QCOMPARE(settings1.childKeys(), QStringList() << "height" << "width" << "x" << "y");
+ children = settings1.childKeys();
+ children.sort();
+ QCOMPARE(children, QStringList() << "height" << "width" << "x" << "y");
QCOMPARE(settings1.childGroups(), QStringList());
settings1.beginGroup("/width");
@@ -2044,7 +2059,7 @@ void tst_QSettings::fromFile()
QString path = "foo";
-#ifdef Q_OS_WIN
+#if defined(Q_OS_WIN) && !defined(Q_OS_WINRT)
if (format == QSettings::NativeFormat)
path = "\\HKEY_CURRENT_USER\\Software\\foo";
#endif
@@ -2063,7 +2078,7 @@ void tst_QSettings::fromFile()
QCOMPARE(settings2.value("alpha").toInt(), 2);
settings1.sync();
-#ifndef Q_OS_WIN
+#if !defined(Q_OS_WIN) || defined(Q_OS_WINRT)
QVERIFY(QFile::exists("foo"));
#endif
QCOMPARE(settings1.value("alpha").toInt(), 2);
@@ -2894,7 +2909,9 @@ void tst_QSettings::childGroups()
}
settings.beginGroup("gamma");
- QCOMPARE(settings.childGroups(), QStringList() << "d" << "f");
+ QStringList childGroups = settings.childGroups();
+ childGroups.sort();
+ QCOMPARE(childGroups, QStringList() << "d" << "f");
settings.beginGroup("d");
QCOMPARE(settings.childGroups(), QStringList());
settings.endGroup();
@@ -2909,14 +2926,20 @@ void tst_QSettings::childGroups()
settings.endGroup();
settings.beginGroup("/omicron///h/i///");
- QCOMPARE(settings.childGroups(), QStringList() << "j" << "k");
+ childGroups = settings.childGroups();
+ childGroups.sort();
+ QCOMPARE(childGroups, QStringList() << "j" << "k");
settings.endGroup();
settings.beginGroup("////");
- QCOMPARE(settings.childGroups(), QStringList() << "alpha" << "gamma" << "omicron" << "zeta");
+ childGroups = settings.childGroups();
+ childGroups.sort();
+ QCOMPARE(childGroups, QStringList() << "alpha" << "gamma" << "omicron" << "zeta");
settings.endGroup();
- QCOMPARE(settings.childGroups(), QStringList() << "alpha" << "gamma" << "omicron" << "zeta");
+ childGroups = settings.childGroups();
+ childGroups.sort();
+ QCOMPARE(childGroups, QStringList() << "alpha" << "gamma" << "omicron" << "zeta");
}
}
#endif
@@ -2969,7 +2992,9 @@ void tst_QSettings::childKeys()
settings.endGroup();
settings.beginGroup("alpha");
- QCOMPARE(settings.childKeys(), QStringList() << "a" << "b" << "c");
+ QStringList childKeys = settings.childKeys();
+ childKeys.sort();
+ QCOMPARE(childKeys, QStringList() << "a" << "b" << "c");
settings.endGroup();
settings.beginGroup("d");
@@ -2981,10 +3006,14 @@ void tst_QSettings::childKeys()
settings.endGroup();
settings.beginGroup("////");
- QCOMPARE(settings.childKeys(), QStringList() << "alpha" << "beta" << "gamma");
+ childKeys = settings.childKeys();
+ childKeys.sort();
+ QCOMPARE(childKeys, QStringList() << "alpha" << "beta" << "gamma");
settings.endGroup();
- QCOMPARE(settings.childKeys(), QStringList() << "alpha" << "beta" << "gamma");
+ childKeys = settings.childKeys();
+ childKeys.sort();
+ QCOMPARE(childKeys, QStringList() << "alpha" << "beta" << "gamma");
}
}
#endif
@@ -3025,14 +3054,18 @@ void tst_QSettings::allKeys()
}
settings.beginGroup("gamma");
- QCOMPARE(settings.allKeys(), QStringList() << "d" << "d/e" << "f/g");
+ QStringList keys = settings.allKeys();
+ keys.sort();
+ QCOMPARE(keys, QStringList() << "d" << "d/e" << "f/g");
settings.beginGroup("d");
QCOMPARE(settings.allKeys(), QStringList() << "e");
settings.endGroup();
settings.endGroup();
settings.beginGroup("alpha");
- QCOMPARE(settings.allKeys(), QStringList() << "a" << "b" << "c");
+ keys = settings.allKeys();
+ keys.sort();
+ QCOMPARE(keys, QStringList() << "a" << "b" << "c");
settings.endGroup();
settings.beginGroup("d");
@@ -3040,14 +3073,20 @@ void tst_QSettings::allKeys()
settings.endGroup();
settings.beginGroup("/omicron///h/i///");
- QCOMPARE(settings.allKeys(), QStringList() << "j/x" << "k/y");
+ keys = settings.allKeys();
+ keys.sort();
+ QCOMPARE(keys, QStringList() << "j/x" << "k/y");
settings.endGroup();
settings.beginGroup("////");
- QCOMPARE(settings.allKeys(), allKeys);
+ keys = settings.allKeys();
+ keys.sort();
+ QCOMPARE(keys, allKeys);
settings.endGroup();
- QCOMPARE(settings.allKeys(), allKeys);
+ keys = settings.allKeys();
+ keys.sort();
+ QCOMPARE(keys, allKeys);
}
}
#endif
@@ -3262,7 +3301,7 @@ void tst_QSettings::rainersSyncBugOnMac()
{
QFETCH(QSettings::Format, format);
-#ifdef Q_OS_OSX
+#if defined(Q_OS_OSX) || defined(Q_OS_WINRT)
if (format == QSettings::NativeFormat)
QSKIP("OSX does not support direct reads from and writes to .plist files, due to caching and background syncing. See QTBUG-34899.");
#endif