summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/libs/installer/permissionsettings.cpp26
-rw-r--r--src/libs/installer/permissionsettings.h14
-rw-r--r--tests/auto/installer/clientserver/tst_clientserver.cpp39
3 files changed, 67 insertions, 12 deletions
diff --git a/src/libs/installer/permissionsettings.cpp b/src/libs/installer/permissionsettings.cpp
index 6d5abdfe6..235c6667b 100644
--- a/src/libs/installer/permissionsettings.cpp
+++ b/src/libs/installer/permissionsettings.cpp
@@ -1,6 +1,6 @@
/**************************************************************************
**
-** Copyright (C) 2017 The Qt Company Ltd.
+** Copyright (C) 2022 The Qt Company Ltd.
** Contact: https://www.qt.io/licensing/
**
** This file is part of the Qt Installer Framework.
@@ -37,6 +37,30 @@ using namespace QInstaller;
\internal
*/
+PermissionSettings::PermissionSettings(const QString &organization, const QString &application, QObject *parent)
+ : QSettings(organization, application, parent)
+{
+ setIniCodec("UTF-8"); // to workaround QTBUG-102334
+}
+
+PermissionSettings::PermissionSettings(Scope scope, const QString &organization, const QString &application, QObject *parent)
+ : QSettings(scope, organization, application, parent)
+{
+ setIniCodec("UTF-8"); // QTBUG-102334
+}
+
+PermissionSettings::PermissionSettings(Format format, Scope scope, const QString &organization, const QString &application, QObject *parent)
+ : QSettings(format, scope, organization, application, parent)
+{
+ setIniCodec("UTF-8"); // QTBUG-102334
+}
+
+PermissionSettings::PermissionSettings(const QString &fileName, Format format, QObject *parent)
+ : QSettings(fileName, format, parent)
+{
+ setIniCodec("UTF-8"); // QTBUG-102334
+}
+
PermissionSettings::~PermissionSettings()
{
if (!fileName().isEmpty()) {
diff --git a/src/libs/installer/permissionsettings.h b/src/libs/installer/permissionsettings.h
index 3847c91db..2621624c2 100644
--- a/src/libs/installer/permissionsettings.h
+++ b/src/libs/installer/permissionsettings.h
@@ -1,6 +1,6 @@
/**************************************************************************
**
-** Copyright (C) 2017 The Qt Company Ltd.
+** Copyright (C) 2022 The Qt Company Ltd.
** Contact: https://www.qt.io/licensing/
**
** This file is part of the Qt Installer Framework.
@@ -37,16 +37,12 @@ class PermissionSettings : public QSettings
{
public:
explicit PermissionSettings(const QString &organization,
- const QString &application = QString(), QObject *parent = 0)
- : QSettings(organization, application, parent) {}
+ const QString &application = QString(), QObject *parent = 0);
PermissionSettings(Scope scope, const QString &organization,
- const QString &application = QString(), QObject *parent = 0)
- : QSettings(scope, organization, application, parent) {}
+ const QString &application = QString(), QObject *parent = 0);
PermissionSettings(Format format, Scope scope, const QString &organization,
- const QString &application = QString(), QObject *parent = 0)
- : QSettings(format, scope, organization, application, parent) {}
- PermissionSettings(const QString &fileName, Format format, QObject *parent = 0)
- : QSettings(fileName, format, parent) {}
+ const QString &application = QString(), QObject *parent = 0);
+ PermissionSettings(const QString &fileName, Format format, QObject *parent = 0);
~PermissionSettings();
};
diff --git a/tests/auto/installer/clientserver/tst_clientserver.cpp b/tests/auto/installer/clientserver/tst_clientserver.cpp
index bcd87815d..ffd96d14e 100644
--- a/tests/auto/installer/clientserver/tst_clientserver.cpp
+++ b/tests/auto/installer/clientserver/tst_clientserver.cpp
@@ -312,8 +312,17 @@ private slots:
delete object;
}
+ void testQSettingsWrapper_data()
+ {
+ QTest::addColumn<QSettings::Format>("format");
+ QTest::newRow("Native format") << QSettings::NativeFormat;
+ QTest::newRow("INI format") << QSettings::IniFormat;
+ }
+
void testQSettingsWrapper()
{
+ QFETCH(QSettings::Format, format);
+
RemoteServer server;
QString socketName = QUuid::createUuid().toString();
server.init(socketName, QLatin1String("SomeKey"), Protocol::Mode::Production);
@@ -322,14 +331,16 @@ private slots:
RemoteClient::instance().init(socketName, QLatin1String("SomeKey"), Protocol::Mode::Debug,
Protocol::StartAs::User);
- QSettingsWrapper wrapper("digia", "clientserver");
+ QSettingsWrapper wrapper(static_cast<QSettingsWrapper::Format>(format),
+ QSettingsWrapper::UserScope, "digia", "clientserver");
+
QCOMPARE(wrapper.isConnectedToServer(), false);
wrapper.clear();
QCOMPARE(wrapper.isConnectedToServer(), true);
wrapper.sync();
wrapper.setFallbacksEnabled(false);
- QSettings settings("digia", "clientserver");
+ QSettings settings(format, QSettings::UserScope, "digia", "clientserver");
settings.setFallbacksEnabled(false);
QCOMPARE(settings.fileName(), wrapper.fileName());
@@ -358,6 +369,30 @@ private slots:
QCOMPARE(wrapper.contains("key"), false);
QCOMPARE(settings.contains("key"), false);
+ const QDateTime dateTime = QDateTime::currentDateTimeUtc();
+ QCOMPARE(settings.iniCodec(), nullptr);
+ // The wrapper does not support this method, but assume:
+ // QCOMPARE(wrapper.iniCodec(), QTextCodec::codecForName("UTF-8"));
+ wrapper.setValue("dateTime", dateTime);
+ wrapper.sync();
+ QCOMPARE(wrapper.value("dateTime").toDateTime(), dateTime);
+ QCOMPARE(settings.value("dateTime").toDateTime(), dateTime);
+
+ wrapper.remove("dateTime");
+ wrapper.sync();
+ QCOMPARE(wrapper.contains("dateTime"), false);
+ QCOMPARE(settings.contains("dateTime"), false);
+
+ settings.setValue("dateTime", dateTime);
+ settings.sync();
+ QCOMPARE(wrapper.value("dateTime").toDateTime(), dateTime);
+ QCOMPARE(settings.value("dateTime").toDateTime(), dateTime);
+
+ settings.remove("dateTime");
+ settings.sync();
+ QCOMPARE(wrapper.contains("dateTime"), false);
+ QCOMPARE(settings.contains("dateTime"), false);
+
wrapper.beginGroup("group");
wrapper.setValue("key", "value");
wrapper.endGroup();