From e2c0d1ea2e0c35a3899283237ede02b4f49aa5b3 Mon Sep 17 00:00:00 2001 From: Thiago Macieira Date: Tue, 17 Jan 2017 10:40:01 -0800 Subject: Read the .ini file back in text mode Because on Windows, the .ini files are saved with CRLF, but the files in the Qt resource are just LF (.gitattributes makes them so). Task-number: QTBUG-25446 Change-Id: I5eab0d9620bd1ba675b0a87c554f62cef0f98fcc Reviewed-by: Mitch Curtis Reviewed-by: Thiago Macieira --- tests/auto/corelib/io/qsettings/tst_qsettings.cpp | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) (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 dadf4b612e..f94349fd02 100644 --- a/tests/auto/corelib/io/qsettings/tst_qsettings.cpp +++ b/tests/auto/corelib/io/qsettings/tst_qsettings.cpp @@ -2315,14 +2315,14 @@ void tst_QSettings::setIniCodec() { QFile inFile(settings4.fileName()); - inFile.open(QIODevice::ReadOnly); + inFile.open(QIODevice::ReadOnly | QIODevice::Text); actualContents4 = inFile.readAll(); inFile.close(); } { QFile inFile(settings5.fileName()); - inFile.open(QIODevice::ReadOnly); + inFile.open(QIODevice::ReadOnly | QIODevice::Text); actualContents5 = inFile.readAll(); inFile.close(); } @@ -2330,9 +2330,6 @@ void tst_QSettings::setIniCodec() QConfFile::clearCache(); -#ifdef Q_OS_WIN - QEXPECT_FAIL("", "QTBUG-25446", Abort); -#endif QCOMPARE(actualContents4, expeContents4); QCOMPARE(actualContents5, expeContents5); -- cgit v1.2.3 From b8dbde10a065c3ba95b794b6d53ff62e8ca22ee7 Mon Sep 17 00:00:00 2001 From: Thierry Bastian Date: Mon, 30 Jan 2017 19:02:23 +0100 Subject: Fix data corruption when reading byte arrays from QSettings MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit On macOS, the code that read the plist is using QByteArray::fromRawCFData. When we return the data directly we need to detach the QByteArray so that it does not point CFData's data that will get deallocated just after the call. Task-number: QTBUG-58531 Change-Id: If829a304b986c99c8fc2aeeb992f2d539a4eef3a Reviewed-by: Thiago Macieira Reviewed-by: Tor Arne Vestbø --- tests/auto/corelib/io/qsettings/qsettings.qrc | 1 + tests/auto/corelib/io/qsettings/resourcefile6.plist | 10 ++++++++++ tests/auto/corelib/io/qsettings/tst_qsettings.cpp | 11 +++++++++++ 3 files changed, 22 insertions(+) create mode 100644 tests/auto/corelib/io/qsettings/resourcefile6.plist (limited to 'tests/auto/corelib/io/qsettings') diff --git a/tests/auto/corelib/io/qsettings/qsettings.qrc b/tests/auto/corelib/io/qsettings/qsettings.qrc index c0be7e013f..c664a6f68c 100644 --- a/tests/auto/corelib/io/qsettings/qsettings.qrc +++ b/tests/auto/corelib/io/qsettings/qsettings.qrc @@ -5,6 +5,7 @@ resourcefile3.ini resourcefile4.ini resourcefile5.ini + resourcefile6.plist bom.ini diff --git a/tests/auto/corelib/io/qsettings/resourcefile6.plist b/tests/auto/corelib/io/qsettings/resourcefile6.plist new file mode 100644 index 0000000000..6f994accac --- /dev/null +++ b/tests/auto/corelib/io/qsettings/resourcefile6.plist @@ -0,0 +1,10 @@ + + + + + passwordData + + RBxVAAsDVsO/ + + + diff --git a/tests/auto/corelib/io/qsettings/tst_qsettings.cpp b/tests/auto/corelib/io/qsettings/tst_qsettings.cpp index f94349fd02..199ab442c4 100644 --- a/tests/auto/corelib/io/qsettings/tst_qsettings.cpp +++ b/tests/auto/corelib/io/qsettings/tst_qsettings.cpp @@ -178,6 +178,7 @@ private slots: void testByteArray_data(); void testByteArray(); + void testByteArrayNativeFormat(); void iniCodec(); void bom(); void embeddedZeroByte_data(); @@ -670,6 +671,16 @@ void tst_QSettings::testByteArray() } } +void tst_QSettings::testByteArrayNativeFormat() +{ +#ifndef Q_OS_MACOS + QSKIP("This test is specific to macOS plist reading."); +#else + QSettings settings(":/resourcefile6.plist", QSettings::NativeFormat); + QCOMPARE(settings.value("passwordData"), QVariant(QByteArray::fromBase64("RBxVAAsDVsO/"))); +#endif +} + void tst_QSettings::iniCodec() { { -- cgit v1.2.3