From 954f0d93976362d29044439e4eaa11d2dff16624 Mon Sep 17 00:00:00 2001 From: Rainer Keller Date: Mon, 29 Jun 2015 10:16:36 +0200 Subject: Add test for invalid exif data Task-number: QTBUG-46870 Change-Id: Idfde92ca12336c6432798b4517e244c2f5a5ba4d Reviewed-by: Allan Sandfeld Jensen --- .../images/jpeg_exif_invalid_data_QTBUG-46870.jpg | Bin 0 -> 14122 bytes tests/auto/gui/image/qimage/tst_qimage.cpp | 8 ++++++++ 2 files changed, 8 insertions(+) create mode 100644 tests/auto/gui/image/qimage/images/jpeg_exif_invalid_data_QTBUG-46870.jpg (limited to 'tests/auto') diff --git a/tests/auto/gui/image/qimage/images/jpeg_exif_invalid_data_QTBUG-46870.jpg b/tests/auto/gui/image/qimage/images/jpeg_exif_invalid_data_QTBUG-46870.jpg new file mode 100644 index 0000000000..a51a1e3162 Binary files /dev/null and b/tests/auto/gui/image/qimage/images/jpeg_exif_invalid_data_QTBUG-46870.jpg differ diff --git a/tests/auto/gui/image/qimage/tst_qimage.cpp b/tests/auto/gui/image/qimage/tst_qimage.cpp index f7c71f05bd..8286c800c2 100644 --- a/tests/auto/gui/image/qimage/tst_qimage.cpp +++ b/tests/auto/gui/image/qimage/tst_qimage.cpp @@ -185,6 +185,7 @@ private slots: void exifOrientation(); void exif_QTBUG45865(); + void exif_invalid_data_QTBUG46870(); void cleanupFunctions(); @@ -2872,6 +2873,13 @@ void tst_QImage::exif_QTBUG45865() QCOMPARE(image.size(), QSize(5, 8)); } +void tst_QImage::exif_invalid_data_QTBUG46870() +{ + QImage image; + QVERIFY(image.load(m_prefix + "jpeg_exif_invalid_data_QTBUG-46870.jpg")); + QVERIFY(!image.isNull()); +} + static void cleanupFunction(void* info) { bool *called = static_cast(info); -- cgit v1.2.3 From 58e4bbc83f4cd9ee2b87eff34403ac52b069aa1f Mon Sep 17 00:00:00 2001 From: Thiago Macieira Date: Wed, 11 Mar 2015 19:53:18 -0700 Subject: tst_QUdpSocket: send two bytes in a datagram I'm getting an error with WSARecvFrom in nativeBytesAvailable() and I don't know why. The number of bytes obtained is correct and the test works for 2 bytes, so let's use that. The Windows nativeBytesAvailable() function has a comment saying that WSAIoctl sometimes indicates 1 byte available when there's a pending error notification, so that function proceeds to do a WSARecvFrom to peek the number of bytes. Somehow that function in this test is getting a SOCKET_ERROR I can't explain. Change-Id: Ic5b19e556e572a72a9df9a405b1fee3b7efb8b24 Reviewed-by: Richard J. Moore --- tests/auto/network/socket/qudpsocket/tst_qudpsocket.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) (limited to 'tests/auto') diff --git a/tests/auto/network/socket/qudpsocket/tst_qudpsocket.cpp b/tests/auto/network/socket/qudpsocket/tst_qudpsocket.cpp index 8de9987ed1..080f763f54 100644 --- a/tests/auto/network/socket/qudpsocket/tst_qudpsocket.cpp +++ b/tests/auto/network/socket/qudpsocket/tst_qudpsocket.cpp @@ -1574,7 +1574,7 @@ void tst_QUdpSocket::readyRead() QSignalSpy spy(&receiver, SIGNAL(readyRead())); // send a datagram to that port - sender.writeDatagram("a", makeNonAny(receiver.localAddress()), port); + sender.writeDatagram("aa", makeNonAny(receiver.localAddress()), port); // wait a little // if QTBUG-43857 is still going, we'll live-lock on socket notifications from receiver's socket @@ -1583,8 +1583,8 @@ void tst_QUdpSocket::readyRead() // make sure only one signal was emitted QCOMPARE(spy.count(), 1); QVERIFY(receiver.hasPendingDatagrams()); - QCOMPARE(receiver.bytesAvailable(), qint64(1)); - QCOMPARE(receiver.pendingDatagramSize(), qint64(1)); + QCOMPARE(receiver.bytesAvailable(), qint64(2)); + QCOMPARE(receiver.pendingDatagramSize(), qint64(2)); // write another datagram sender.writeDatagram("ab", makeNonAny(receiver.localAddress()), port); @@ -1594,7 +1594,7 @@ void tst_QUdpSocket::readyRead() QCOMPARE(spy.count(), 1); QVERIFY(receiver.hasPendingDatagrams()); QVERIFY(receiver.bytesAvailable() >= 1); // most likely is 1, but it could be 1 + 2 in the future - QCOMPARE(receiver.pendingDatagramSize(), qint64(1)); + QCOMPARE(receiver.pendingDatagramSize(), qint64(2)); // read all the datagrams (we could read one only, but we can't be sure the OS is queueing) while (receiver.hasPendingDatagrams()) -- cgit v1.2.3 From 62f6866508d9ce42bfa6080ff53abe0d8d0b3461 Mon Sep 17 00:00:00 2001 From: Thiago Macieira Date: Mon, 30 Mar 2015 14:53:55 -0700 Subject: Autotest: rename sub tests from "test" to something meaningful Otherwise, if I open tests/auto/dbus/dbus.pro in Qt Creator, it shows me "test", "test2", "test3", "test4" and it's very hard to know which test is which. Change-Id: Iee8cbc07c4434ce9b560ffff13d0654696c025b7 Reviewed-by: Frederik Gladhorn --- .../dbus/qdbusabstractadaptor/qdbusabstractadaptor.pro | 2 +- .../qdbusabstractadaptor/qdbusabstractadaptor.pro | 8 ++++++++ tests/auto/dbus/qdbusabstractadaptor/test/test.pro | 8 -------- .../qdbusabstractinterface/qdbusabstractinterface.pro | 2 +- .../qdbusabstractinterface/qdbusabstractinterface.pro | 13 +++++++++++++ tests/auto/dbus/qdbusabstractinterface/test/test.pro | 13 ------------- tests/auto/dbus/qdbusinterface/qdbusinterface.pro | 2 +- .../dbus/qdbusinterface/qdbusinterface/qdbusinterface.pro | 8 ++++++++ tests/auto/dbus/qdbusinterface/test/test.pro | 8 -------- tests/auto/dbus/qdbusmarshall/qdbusmarshall.pro | 2 +- .../dbus/qdbusmarshall/qdbusmarshall/qdbusmarshall.pro | 15 +++++++++++++++ tests/auto/dbus/qdbusmarshall/test/test.pro | 15 --------------- 12 files changed, 48 insertions(+), 48 deletions(-) create mode 100644 tests/auto/dbus/qdbusabstractadaptor/qdbusabstractadaptor/qdbusabstractadaptor.pro delete mode 100644 tests/auto/dbus/qdbusabstractadaptor/test/test.pro create mode 100644 tests/auto/dbus/qdbusabstractinterface/qdbusabstractinterface/qdbusabstractinterface.pro delete mode 100644 tests/auto/dbus/qdbusabstractinterface/test/test.pro create mode 100644 tests/auto/dbus/qdbusinterface/qdbusinterface/qdbusinterface.pro delete mode 100644 tests/auto/dbus/qdbusinterface/test/test.pro create mode 100644 tests/auto/dbus/qdbusmarshall/qdbusmarshall/qdbusmarshall.pro delete mode 100644 tests/auto/dbus/qdbusmarshall/test/test.pro (limited to 'tests/auto') diff --git a/tests/auto/dbus/qdbusabstractadaptor/qdbusabstractadaptor.pro b/tests/auto/dbus/qdbusabstractadaptor/qdbusabstractadaptor.pro index d67d81e4bf..1b35019f94 100644 --- a/tests/auto/dbus/qdbusabstractadaptor/qdbusabstractadaptor.pro +++ b/tests/auto/dbus/qdbusabstractadaptor/qdbusabstractadaptor.pro @@ -3,4 +3,4 @@ TARGET = tst_qdbusabstractadaptor QT = core core-private testlib TEMPLATE = subdirs CONFIG += ordered -SUBDIRS = qmyserver test +SUBDIRS = qmyserver qdbusabstractadaptor diff --git a/tests/auto/dbus/qdbusabstractadaptor/qdbusabstractadaptor/qdbusabstractadaptor.pro b/tests/auto/dbus/qdbusabstractadaptor/qdbusabstractadaptor/qdbusabstractadaptor.pro new file mode 100644 index 0000000000..d95fa941f0 --- /dev/null +++ b/tests/auto/dbus/qdbusabstractadaptor/qdbusabstractadaptor/qdbusabstractadaptor.pro @@ -0,0 +1,8 @@ +CONFIG += testcase +SOURCES += ../tst_qdbusabstractadaptor.cpp +HEADERS += ../myobject.h +TARGET = ../tst_qdbusabstractadaptor +DESTDIR = ./ + +QT = core core-private dbus testlib +DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0 diff --git a/tests/auto/dbus/qdbusabstractadaptor/test/test.pro b/tests/auto/dbus/qdbusabstractadaptor/test/test.pro deleted file mode 100644 index d95fa941f0..0000000000 --- a/tests/auto/dbus/qdbusabstractadaptor/test/test.pro +++ /dev/null @@ -1,8 +0,0 @@ -CONFIG += testcase -SOURCES += ../tst_qdbusabstractadaptor.cpp -HEADERS += ../myobject.h -TARGET = ../tst_qdbusabstractadaptor -DESTDIR = ./ - -QT = core core-private dbus testlib -DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0 diff --git a/tests/auto/dbus/qdbusabstractinterface/qdbusabstractinterface.pro b/tests/auto/dbus/qdbusabstractinterface/qdbusabstractinterface.pro index 623b07fcbd..99462b1b36 100644 --- a/tests/auto/dbus/qdbusabstractinterface/qdbusabstractinterface.pro +++ b/tests/auto/dbus/qdbusabstractinterface/qdbusabstractinterface.pro @@ -2,5 +2,5 @@ CONFIG += testcase TARGET = tst_qdbusabstractinterface TEMPLATE = subdirs CONFIG += ordered -SUBDIRS = qpinger test +SUBDIRS = qpinger qdbusabstractinterface OTHER_FILES += org.qtproject.QtDBus.Pinger.xml diff --git a/tests/auto/dbus/qdbusabstractinterface/qdbusabstractinterface/qdbusabstractinterface.pro b/tests/auto/dbus/qdbusabstractinterface/qdbusabstractinterface/qdbusabstractinterface.pro new file mode 100644 index 0000000000..a8cc4c2b38 --- /dev/null +++ b/tests/auto/dbus/qdbusabstractinterface/qdbusabstractinterface/qdbusabstractinterface.pro @@ -0,0 +1,13 @@ +CONFIG += testcase +SOURCES += ../tst_qdbusabstractinterface.cpp ../interface.cpp +HEADERS += ../interface.h + +TARGET = ../tst_qdbusabstractinterface +DESTDIR = ./ + +QT = core testlib +QT += dbus +DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0 + +DBUS_INTERFACES = ../org.qtproject.QtDBus.Pinger.xml +QDBUSXML2CPP_INTERFACE_HEADER_FLAGS += -i ../interface.h diff --git a/tests/auto/dbus/qdbusabstractinterface/test/test.pro b/tests/auto/dbus/qdbusabstractinterface/test/test.pro deleted file mode 100644 index a8cc4c2b38..0000000000 --- a/tests/auto/dbus/qdbusabstractinterface/test/test.pro +++ /dev/null @@ -1,13 +0,0 @@ -CONFIG += testcase -SOURCES += ../tst_qdbusabstractinterface.cpp ../interface.cpp -HEADERS += ../interface.h - -TARGET = ../tst_qdbusabstractinterface -DESTDIR = ./ - -QT = core testlib -QT += dbus -DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0 - -DBUS_INTERFACES = ../org.qtproject.QtDBus.Pinger.xml -QDBUSXML2CPP_INTERFACE_HEADER_FLAGS += -i ../interface.h diff --git a/tests/auto/dbus/qdbusinterface/qdbusinterface.pro b/tests/auto/dbus/qdbusinterface/qdbusinterface.pro index 093a888765..c8861cb2a4 100644 --- a/tests/auto/dbus/qdbusinterface/qdbusinterface.pro +++ b/tests/auto/dbus/qdbusinterface/qdbusinterface.pro @@ -3,4 +3,4 @@ TARGET = tst_qdbusinterface QT = core testlib TEMPLATE = subdirs CONFIG += ordered -SUBDIRS = qmyserver test +SUBDIRS = qmyserver qdbusinterface diff --git a/tests/auto/dbus/qdbusinterface/qdbusinterface/qdbusinterface.pro b/tests/auto/dbus/qdbusinterface/qdbusinterface/qdbusinterface.pro new file mode 100644 index 0000000000..170b555ee7 --- /dev/null +++ b/tests/auto/dbus/qdbusinterface/qdbusinterface/qdbusinterface.pro @@ -0,0 +1,8 @@ +CONFIG += testcase +SOURCES += ../tst_qdbusinterface.cpp +HEADERS += ../myobject.h +TARGET = ../tst_qdbusinterface +DESTDIR = ./ + +QT = core core-private dbus testlib +DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0 diff --git a/tests/auto/dbus/qdbusinterface/test/test.pro b/tests/auto/dbus/qdbusinterface/test/test.pro deleted file mode 100644 index 170b555ee7..0000000000 --- a/tests/auto/dbus/qdbusinterface/test/test.pro +++ /dev/null @@ -1,8 +0,0 @@ -CONFIG += testcase -SOURCES += ../tst_qdbusinterface.cpp -HEADERS += ../myobject.h -TARGET = ../tst_qdbusinterface -DESTDIR = ./ - -QT = core core-private dbus testlib -DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0 diff --git a/tests/auto/dbus/qdbusmarshall/qdbusmarshall.pro b/tests/auto/dbus/qdbusmarshall/qdbusmarshall.pro index dfbb206324..e9a41c0fb4 100644 --- a/tests/auto/dbus/qdbusmarshall/qdbusmarshall.pro +++ b/tests/auto/dbus/qdbusmarshall/qdbusmarshall.pro @@ -2,7 +2,7 @@ CONFIG += testcase TARGET = tst_qdbusmarshall TEMPLATE = subdirs CONFIG += ordered -SUBDIRS = qpong test +SUBDIRS = qpong qdbusmarshall QT = core-private testlib diff --git a/tests/auto/dbus/qdbusmarshall/qdbusmarshall/qdbusmarshall.pro b/tests/auto/dbus/qdbusmarshall/qdbusmarshall/qdbusmarshall.pro new file mode 100644 index 0000000000..b0656231d2 --- /dev/null +++ b/tests/auto/dbus/qdbusmarshall/qdbusmarshall/qdbusmarshall.pro @@ -0,0 +1,15 @@ +CONFIG += testcase +SOURCES += ../tst_qdbusmarshall.cpp +TARGET = ../tst_qdbusmarshall +DESTDIR = ./ + +QT = core-private dbus-private testlib + +contains(QT_CONFIG, dbus-linked) { + DEFINES += QT_LINKED_LIBDBUS + LIBS += $$QT_LIBS_DBUS + QMAKE_CXXFLAGS += $$QT_CFLAGS_DBUS +} else { + SOURCES += ../../../../../src/dbus/qdbus_symbols.cpp +} +DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0 diff --git a/tests/auto/dbus/qdbusmarshall/test/test.pro b/tests/auto/dbus/qdbusmarshall/test/test.pro deleted file mode 100644 index b0656231d2..0000000000 --- a/tests/auto/dbus/qdbusmarshall/test/test.pro +++ /dev/null @@ -1,15 +0,0 @@ -CONFIG += testcase -SOURCES += ../tst_qdbusmarshall.cpp -TARGET = ../tst_qdbusmarshall -DESTDIR = ./ - -QT = core-private dbus-private testlib - -contains(QT_CONFIG, dbus-linked) { - DEFINES += QT_LINKED_LIBDBUS - LIBS += $$QT_LIBS_DBUS - QMAKE_CXXFLAGS += $$QT_CFLAGS_DBUS -} else { - SOURCES += ../../../../../src/dbus/qdbus_symbols.cpp -} -DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0 -- cgit v1.2.3 From 0e9b51ebac1c9ba70d703c5729def6e2aab764f9 Mon Sep 17 00:00:00 2001 From: Friedemann Kleint Date: Tue, 14 Jul 2015 10:15:35 +0200 Subject: tst_qmimedatabase.cpp: Set write permission on files extracted from resources. Set QFileDevice::WriteUser on all files extracted from resources. These are read-only, which is preserved by QFile::copy(). This caused the deletion of the temporary directory to fail on Windows. Change-Id: Id99de9160471c38bcec68025c89cfabbe209bdbe Reviewed-by: Oswald Buddenhagen Reviewed-by: David Faure --- .../mimetypes/qmimedatabase/tst_qmimedatabase.cpp | 46 ++++++++++++++++++---- 1 file changed, 38 insertions(+), 8 deletions(-) (limited to 'tests/auto') diff --git a/tests/auto/corelib/mimetypes/qmimedatabase/tst_qmimedatabase.cpp b/tests/auto/corelib/mimetypes/qmimedatabase/tst_qmimedatabase.cpp index a0edf29607..1c9add86f7 100644 --- a/tests/auto/corelib/mimetypes/qmimedatabase/tst_qmimedatabase.cpp +++ b/tests/auto/corelib/mimetypes/qmimedatabase/tst_qmimedatabase.cpp @@ -72,6 +72,34 @@ static inline QString testSuiteWarning() return result; } +static bool copyResourceFile(const QString &sourceFileName, const QString &targetFileName, + QString *errorMessage) +{ + + QFile sourceFile(sourceFileName); + if (!sourceFile.exists()) { + *errorMessage = QDir::toNativeSeparators(sourceFileName) + QLatin1String(" does not exist."); + return false; + } + if (!sourceFile.copy(targetFileName)) { + *errorMessage = QLatin1String("Cannot copy ") + + QDir::toNativeSeparators(sourceFileName) + QLatin1String(" to ") + + QDir::toNativeSeparators(targetFileName) + QLatin1String(": ") + + sourceFile.errorString(); + return false; + } + // QFile::copy() sets the permissions of the source file which are read-only for + // resource files. Set write permission to enable deletion of the temporary directory. + QFile targetFile(targetFileName); + if (!targetFile.setPermissions(targetFile.permissions() | QFileDevice::WriteUser)) { + *errorMessage = QLatin1String("Cannot set write permission on ") + + QDir::toNativeSeparators(targetFileName) + QLatin1String(": ") + + targetFile.errorString(); + return false; + } + return true; +} + // Set LANG before QCoreApplication is created Q_CONSTRUCTOR_FUNCTION(initializeLang) @@ -101,15 +129,15 @@ void tst_QMimeDatabase::initTestCase() const QString freeDesktopXml = QStringLiteral("freedesktop.org.xml"); const QString xmlFileName = QLatin1String(RESOURCE_PREFIX) + freeDesktopXml; - QVERIFY2(QFileInfo(xmlFileName).exists(), qPrintable(xmlFileName + QStringLiteral(" does not exist"))); - QFile xml(xmlFileName); - QVERIFY(xml.copy(globalPackageDir + '/' + freeDesktopXml)); + const QString xmlTargetFileName = globalPackageDir + QLatin1Char('/') + freeDesktopXml; + QString errorMessage; + QVERIFY2(copyResourceFile(xmlFileName, xmlTargetFileName, &errorMessage), qPrintable(errorMessage)); m_testSuite = QFINDTESTDATA("testfiles"); if (m_testSuite.isEmpty()) qWarning("%s", qPrintable(testSuiteWarning())); - const QString errorMessage = QString::fromLatin1("Cannot find '%1'"); + errorMessage = QString::fromLatin1("Cannot find '%1'"); m_yastMimeTypes = QLatin1String(RESOURCE_PREFIX) + yastFileName; QVERIFY2(QFile::exists(m_yastMimeTypes), qPrintable(errorMessage.arg(yastFileName))); m_qmlAgainFileName = QLatin1String(RESOURCE_PREFIX) + qmlAgainFileName; @@ -830,8 +858,9 @@ void tst_QMimeDatabase::installNewGlobalMimeType() if (!QFileInfo(destDir).isDir()) QVERIFY(QDir(m_globalXdgDir).mkpath(destDir)); - QVERIFY(QFile::copy(m_yastMimeTypes, destFile)); - QVERIFY(QFile::copy(m_qmlAgainFileName, destQmlFile)); + QString errorMessage; + QVERIFY2(copyResourceFile(m_yastMimeTypes, destFile, &errorMessage), qPrintable(errorMessage)); + QVERIFY2(copyResourceFile(m_qmlAgainFileName, destQmlFile, &errorMessage), qPrintable(errorMessage)); if (!waitAndRunUpdateMimeDatabase(mimeDir)) QSKIP("shared-mime-info not found, skipping mime.cache test"); @@ -876,8 +905,9 @@ void tst_QMimeDatabase::installNewLocalMimeType() QFile::remove(destFile); const QString destQmlFile = destDir + QLatin1String(qmlAgainFileName); QFile::remove(destQmlFile); - QVERIFY(QFile::copy(m_yastMimeTypes, destFile)); - QVERIFY(QFile::copy(m_qmlAgainFileName, destQmlFile)); + QString errorMessage; + QVERIFY2(copyResourceFile(m_yastMimeTypes, destFile, &errorMessage), qPrintable(errorMessage)); + QVERIFY2(copyResourceFile(m_qmlAgainFileName, destQmlFile, &errorMessage), qPrintable(errorMessage)); if (!runUpdateMimeDatabase(mimeDir)) { const QString skipWarning = QStringLiteral("shared-mime-info not found, skipping mime.cache test (") + QDir::toNativeSeparators(mimeDir) + QLatin1Char(')'); -- cgit v1.2.3 From 5c67ce5d6da11b8c4e445bba2a3ffb7b6e7f45d9 Mon Sep 17 00:00:00 2001 From: Cesar Garcia Naranjo Date: Mon, 6 Jul 2015 13:23:10 +0000 Subject: QTimeZone: Convert fractional timezones properly. [ChangeLog][QtCore][QTimeZone] Fixed a wrong timezone conversion when the POSIX timezone rule contains a fractional timezone (e.g. VET4:30). Task-number: QTBUG-47037 Change-Id: I5d9052929bbcde174614ccf07c329264603e6431 Reviewed-by: Thiago Macieira --- tests/auto/corelib/tools/qtimezone/tst_qtimezone.cpp | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) (limited to 'tests/auto') diff --git a/tests/auto/corelib/tools/qtimezone/tst_qtimezone.cpp b/tests/auto/corelib/tools/qtimezone/tst_qtimezone.cpp index 2af37eb86e..b511abf670 100644 --- a/tests/auto/corelib/tools/qtimezone/tst_qtimezone.cpp +++ b/tests/auto/corelib/tools/qtimezone/tst_qtimezone.cpp @@ -823,6 +823,24 @@ void tst_QTimeZone::tzTest() QCOMPARE(dat.offsetFromUtc, 3600); QCOMPARE(dat.standardTimeOffset, 3600); QCOMPARE(dat.daylightTimeOffset, 0); + + // Test TZ timezone vs UTC timezone for fractionary negative offset + QTzTimeZonePrivate tztz1("America/Caracas"); + QUtcTimeZonePrivate tzutc1("UTC-04:30"); + QVERIFY(tztz1.isValid()); + QVERIFY(tzutc1.isValid()); + QTzTimeZonePrivate::Data datatz1 = tztz1.data(std); + QTzTimeZonePrivate::Data datautc1 = tzutc1.data(std); + QCOMPARE(datatz1.offsetFromUtc, datautc1.offsetFromUtc); + + // Test TZ timezone vs UTC timezone for fractionary positive offset + QTzTimeZonePrivate tztz2("Asia/Calcutta"); + QUtcTimeZonePrivate tzutc2("UTC+05:30"); + QVERIFY(tztz2.isValid()); + QVERIFY(tzutc2.isValid()); + QTzTimeZonePrivate::Data datatz2 = tztz2.data(std); + QTzTimeZonePrivate::Data datautc2 = tzutc2.data(std); + QCOMPARE(datatz2.offsetFromUtc, datautc2.offsetFromUtc); #endif // Q_OS_UNIX } -- cgit v1.2.3 From f01f1943e49ac3a60c54dd3f3009a445474dc412 Mon Sep 17 00:00:00 2001 From: Olivier Goffart Date: Sun, 26 Jul 2015 14:14:31 +0200 Subject: Fix compilation error while instantiating operator<< explicitly Task-number: QTBUG-47375 Change-Id: Ibd260de88c174c1aa3833a56b153b8b74d337338 Reviewed-by: Thiago Macieira --- tests/auto/corelib/io/qdebug/tst_qdebug.cpp | 9 +++++++++ 1 file changed, 9 insertions(+) (limited to 'tests/auto') diff --git a/tests/auto/corelib/io/qdebug/tst_qdebug.cpp b/tests/auto/corelib/io/qdebug/tst_qdebug.cpp index 32344f1e26..4e5cfed019 100644 --- a/tests/auto/corelib/io/qdebug/tst_qdebug.cpp +++ b/tests/auto/corelib/io/qdebug/tst_qdebug.cpp @@ -625,5 +625,14 @@ void tst_QDebug::threadSafety() const } } +// Should compile: instentiation of unrelated operator<< should not cause cause compilation +// error in QDebug operators (QTBUG-47375) +class TestClassA {}; +class TestClassB {}; + +template +TestClassA& operator<< (TestClassA& s, T&) { return s; }; +template<> TestClassA& operator<< (TestClassA& s, TestClassB& l); + QTEST_MAIN(tst_QDebug); #include "tst_qdebug.moc" -- cgit v1.2.3 From 2d43f8b79b00e7de7b7024f0e23d55c636fc9e40 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jeremy=20Lain=C3=A9?= Date: Tue, 28 Jul 2015 07:31:07 -0700 Subject: ssl: fix QNAM self-signed certificate test for non-OpenSSL backends Non-OpenSSL backends are not able to report a specific error code for self-signed certificates. Change-Id: I56bf130335b2afa65cf2bd5248a40ac0e32f74c2 Reviewed-by: Timur Pocheptsov Reviewed-by: Richard J. Moore --- .../auto/network/access/qnetworkreply/tst_qnetworkreply.cpp | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) (limited to 'tests/auto') diff --git a/tests/auto/network/access/qnetworkreply/tst_qnetworkreply.cpp b/tests/auto/network/access/qnetworkreply/tst_qnetworkreply.cpp index 262b380446..e30d01cb8e 100644 --- a/tests/auto/network/access/qnetworkreply/tst_qnetworkreply.cpp +++ b/tests/auto/network/access/qnetworkreply/tst_qnetworkreply.cpp @@ -88,6 +88,14 @@ Q_DECLARE_METATYPE(QSharedPointer) #include "../../../network-settings.h" +// Non-OpenSSL backends are not able to report a specific error code +// for self-signed certificates. +#ifndef QT_NO_OPENSSL +#define FLUKE_CERTIFICATE_ERROR QSslError::SelfSignedCertificate +#else +#define FLUKE_CERTIFICATE_ERROR QSslError::CertificateUntrusted +#endif + Q_DECLARE_METATYPE(QAuthenticator*) #ifndef QT_NO_NETWORKPROXY Q_DECLARE_METATYPE(QNetworkProxyQuery) @@ -6027,8 +6035,8 @@ void tst_QNetworkReply::ignoreSslErrorsList_data() QList expectedSslErrors; QList certs = QSslCertificate::fromPath(testDataDir + "/certs/qt-test-server-cacert.pem"); - QSslError rightError(QSslError::SelfSignedCertificate, certs.at(0)); - QSslError wrongError(QSslError::SelfSignedCertificate); + QSslError rightError(FLUKE_CERTIFICATE_ERROR, certs.at(0)); + QSslError wrongError(FLUKE_CERTIFICATE_ERROR); QTest::newRow("SSL-failure-empty-list") << "https://" + QtNetworkSettings::serverName() + "/index.html" << expectedSslErrors << QNetworkReply::SslHandshakeFailedError; expectedSslErrors.append(wrongError); -- cgit v1.2.3 From ce87d82d4ab141d40ec6fbe357e310f636fa0443 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jeremy=20Lain=C3=A9?= Date: Tue, 28 Jul 2015 07:35:18 -0700 Subject: ssl: fix comment typo in QSslSocket tests The comment about non-OpenSSL backends not reproting a specific error for self-signed certificates contained a typo, this fixes it. Change-Id: I3010981d5d87d68ebf5e984c003b8bbbfb019b96 Reviewed-by: Timur Pocheptsov --- tests/auto/network/ssl/qsslsocket/tst_qsslsocket.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'tests/auto') diff --git a/tests/auto/network/ssl/qsslsocket/tst_qsslsocket.cpp b/tests/auto/network/ssl/qsslsocket/tst_qsslsocket.cpp index b0a19a6c2d..b95b72a41e 100644 --- a/tests/auto/network/ssl/qsslsocket/tst_qsslsocket.cpp +++ b/tests/auto/network/ssl/qsslsocket/tst_qsslsocket.cpp @@ -71,7 +71,7 @@ Q_DECLARE_METATYPE(QSslSocket::PeerVerifyMode); typedef QSharedPointer QSslSocketPtr; // Non-OpenSSL backends are not able to report a specific error code -// for self-signed certificate for certificates. +// for self-signed certificates. #ifndef QT_NO_OPENSSL #define FLUKE_CERTIFICATE_ERROR QSslError::SelfSignedCertificate #else -- cgit v1.2.3 From 2a382655718dcf8d00822d8fdc1dfdae1666c67e Mon Sep 17 00:00:00 2001 From: Samuel Gaist Date: Thu, 9 Jul 2015 00:38:19 +0200 Subject: Fix typo in test results report for android Change-Id: Ibb2319b1e96ce34d4c61c8504b7700a78462c56c Reviewed-by: Eskil Abrahamsen Blomfeldt --- tests/auto/android/runtests_androiddeployqt.pl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'tests/auto') diff --git a/tests/auto/android/runtests_androiddeployqt.pl b/tests/auto/android/runtests_androiddeployqt.pl index 3e62e8614a..a73ea054b3 100755 --- a/tests/auto/android/runtests_androiddeployqt.pl +++ b/tests/auto/android/runtests_androiddeployqt.pl @@ -390,7 +390,7 @@ sub startTest system("$adb_tool $device_serial pull /data/data/$packageName/output.txt $output_dir/$output_file.txt") if ($get_txt); if ($get_txt){ - print "Tesresults for $packageName:\n"; + print "Test results for $packageName:\n"; my $insig = print_output("$output_dir/$output_file.txt", $packageName, $insignificance); } -- cgit v1.2.3 From edb5f22b0a5f791728951bc77e272279e06b6ab6 Mon Sep 17 00:00:00 2001 From: Joerg Bornemann Date: Thu, 23 Jul 2015 17:06:53 +0200 Subject: consistently handle empty program string in QProcess::start overloads All overloads of QProcess::start will now check whether the program string is empty and in that case - set error to FailedToStart, - set errorString to "No program defined", - emit error. Until now only one of the three overloads behaved like this. As a side effect, start(QString(), QStringList()) will not crash on Windows anymore. Task-number: QTBUG-47404 Change-Id: I2f93657204fe3643b1d74a74817843c05fc4a96b Reviewed-by: Oswald Buddenhagen Reviewed-by: Thiago Macieira Reviewed-by: Jake Petroules Reviewed-by: Kai Koehne --- tests/auto/corelib/io/qprocess/tst_qprocess.cpp | 38 +++++++++++++++++++++++++ 1 file changed, 38 insertions(+) (limited to 'tests/auto') diff --git a/tests/auto/corelib/io/qprocess/tst_qprocess.cpp b/tests/auto/corelib/io/qprocess/tst_qprocess.cpp index 0c65ceb0eb..99cb9ad6cb 100644 --- a/tests/auto/corelib/io/qprocess/tst_qprocess.cpp +++ b/tests/auto/corelib/io/qprocess/tst_qprocess.cpp @@ -156,6 +156,8 @@ private slots: void failToStart(); void failToStartWithWait(); void failToStartWithEventLoop(); + void failToStartEmptyArgs_data(); + void failToStartEmptyArgs(); protected slots: void readFromProcess(); @@ -1672,6 +1674,42 @@ void tst_QProcess::failToStartWithEventLoop() } } +void tst_QProcess::failToStartEmptyArgs_data() +{ + QTest::addColumn("startOverload"); + QTest::newRow("start(QString, QStringList, OpenMode)") << 0; + QTest::newRow("start(QString, OpenMode)") << 1; + QTest::newRow("start(OpenMode)") << 2; +} + +void tst_QProcess::failToStartEmptyArgs() +{ + QFETCH(int, startOverload); + qRegisterMetaType("QProcess::ProcessError"); + + QProcess process; + QSignalSpy errorSpy(&process, static_cast(&QProcess::error)); + QVERIFY(errorSpy.isValid()); + + switch (startOverload) { + case 0: + process.start(QString(), QStringList(), QIODevice::ReadWrite); + break; + case 1: + process.start(QString(), QIODevice::ReadWrite); + break; + case 2: + process.start(QIODevice::ReadWrite); + break; + default: + QFAIL("Unhandled QProcess::start overload."); + }; + + QVERIFY(!process.waitForStarted()); + QCOMPARE(errorSpy.count(), 1); + QCOMPARE(process.error(), QProcess::FailedToStart); +} + //----------------------------------------------------------------------------- #ifndef Q_OS_WINCE // Reading and writing to a process is not supported on Qt/CE -- cgit v1.2.3 From d800047dc57a773149545d3705a70419884feb46 Mon Sep 17 00:00:00 2001 From: BogDan Vatra Date: Tue, 7 Jul 2015 16:23:21 +0300 Subject: QLineEdit should inherit the input methods from QComboBox. Task-number: QTBUG-39088 Change-Id: I4dfe9a052c20a4cb0a9d6b0d3337cb5095a3694f Reviewed-by: Marc Mutz --- tests/auto/widgets/widgets/qcombobox/tst_qcombobox.cpp | 9 +++++++++ 1 file changed, 9 insertions(+) (limited to 'tests/auto') diff --git a/tests/auto/widgets/widgets/qcombobox/tst_qcombobox.cpp b/tests/auto/widgets/widgets/qcombobox/tst_qcombobox.cpp index c409698ec0..7824172812 100644 --- a/tests/auto/widgets/widgets/qcombobox/tst_qcombobox.cpp +++ b/tests/auto/widgets/widgets/qcombobox/tst_qcombobox.cpp @@ -164,6 +164,7 @@ private slots: void keyboardSelection(); void setCustomModelAndView(); void updateDelegateOnEditableChange(); + void task_QTBUG_39088_inputMethodHints(); }; class MyAbstractItemDelegate : public QAbstractItemDelegate @@ -3169,5 +3170,13 @@ void tst_QComboBox::updateDelegateOnEditableChange() } } +void tst_QComboBox::task_QTBUG_39088_inputMethodHints() +{ + QComboBox box; + box.setEditable(true); + box.setInputMethodHints(Qt::ImhNoPredictiveText); + QCOMPARE(box.lineEdit()->inputMethodHints(), Qt::ImhNoPredictiveText); +} + QTEST_MAIN(tst_QComboBox) #include "tst_qcombobox.moc" -- cgit v1.2.3 From d11307320393540a60a81cdd216b99352bbcd2a8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jeremy=20Lain=C3=A9?= Date: Wed, 29 Jul 2015 14:22:12 +0200 Subject: ssl: add test certificates with DSA and EC keys The QSslCertificate tests only covered certificates with RSA keys, this extends the test coverage to DSA and EC keys. Change-Id: Ibee26f449cf6c1d97cbac6b511972eb44d6f0bd2 Reviewed-by: Richard J. Moore --- .../certificates/dsa-cert-ss.der.pubkey | Bin 0 -> 442 bytes .../qsslcertificate/certificates/dsa-cert-ss.pem | 16 +++++++ .../certificates/dsa-cert-ss.pem.digest-md5 | 1 + .../certificates/dsa-cert-ss.pem.digest-sha1 | 1 + .../certificates/dsa-cert-ss.pem.pubkey | 12 ++++++ .../certificates/ec-cert-ss.der.pubkey | Bin 0 -> 120 bytes .../qsslcertificate/certificates/ec-cert-ss.pem | 11 +++++ .../certificates/ec-cert-ss.pem.digest-md5 | 1 + .../certificates/ec-cert-ss.pem.digest-sha1 | 1 + .../certificates/ec-cert-ss.pem.pubkey | 5 +++ .../certificates/gencertificates.sh | 46 ++++++++++++++++++++- .../ssl/qsslcertificate/tst_qsslcertificate.cpp | 14 +++++-- 12 files changed, 103 insertions(+), 5 deletions(-) create mode 100644 tests/auto/network/ssl/qsslcertificate/certificates/dsa-cert-ss.der.pubkey create mode 100644 tests/auto/network/ssl/qsslcertificate/certificates/dsa-cert-ss.pem create mode 100644 tests/auto/network/ssl/qsslcertificate/certificates/dsa-cert-ss.pem.digest-md5 create mode 100644 tests/auto/network/ssl/qsslcertificate/certificates/dsa-cert-ss.pem.digest-sha1 create mode 100644 tests/auto/network/ssl/qsslcertificate/certificates/dsa-cert-ss.pem.pubkey create mode 100644 tests/auto/network/ssl/qsslcertificate/certificates/ec-cert-ss.der.pubkey create mode 100644 tests/auto/network/ssl/qsslcertificate/certificates/ec-cert-ss.pem create mode 100644 tests/auto/network/ssl/qsslcertificate/certificates/ec-cert-ss.pem.digest-md5 create mode 100644 tests/auto/network/ssl/qsslcertificate/certificates/ec-cert-ss.pem.digest-sha1 create mode 100644 tests/auto/network/ssl/qsslcertificate/certificates/ec-cert-ss.pem.pubkey (limited to 'tests/auto') diff --git a/tests/auto/network/ssl/qsslcertificate/certificates/dsa-cert-ss.der.pubkey b/tests/auto/network/ssl/qsslcertificate/certificates/dsa-cert-ss.der.pubkey new file mode 100644 index 0000000000..4e46848106 Binary files /dev/null and b/tests/auto/network/ssl/qsslcertificate/certificates/dsa-cert-ss.der.pubkey differ diff --git a/tests/auto/network/ssl/qsslcertificate/certificates/dsa-cert-ss.pem b/tests/auto/network/ssl/qsslcertificate/certificates/dsa-cert-ss.pem new file mode 100644 index 0000000000..d81f8f1def --- /dev/null +++ b/tests/auto/network/ssl/qsslcertificate/certificates/dsa-cert-ss.pem @@ -0,0 +1,16 @@ +-----BEGIN CERTIFICATE----- +MIICijCCAkgCCQC7PDslmXiXHzALBglghkgBZQMEAwIwKTEaMBgGA1UEAwwRbmFt +ZS93aXRoL3NsYXNoZXMxCzAJBgNVBAYTAk5PMB4XDTE1MDcyOTEyMTAyNloXDTE1 +MDgyODEyMTAyNlowKTEaMBgGA1UEAwwRbmFtZS93aXRoL3NsYXNoZXMxCzAJBgNV +BAYTAk5PMIIBtjCCASsGByqGSM44BAEwggEeAoGBAMJjrSlWu595Nf9UAAeggH6k +US30P+pigB5WEgeToqTkpIwHO24GdEL+dGtFVWwT+r+rSuI+SZPMMSQWpVcgjeCq +oaPpn+9P5gCof1jmn4oegis4K8hJANnsDDdE1HRkeVDSzFlkmvk+FnVfB0wI0T8F +k7BV4wZDyvgTKko6t7YZAhUAoXZvBxhaUam1WnS18Yrk+1IT3u8CgYAx22xg8DQG +4HE2vGH0p3Ug2FziCtjpDaN1ryomPbroQSK7/x9dhuy/4b1H2KdJufawWTVPdBI5 +TfXXvCcJEmQKKegarq3DFPGkpH+rp72GejEgmBMUU22+1NHga3VzSspLjAK2e/+r ++foHHzJnGQs6JrvMNaXK+UVJxXRp878CGgOBhAACgYAKoweyuHdke1ngEmgXMPrC +NBJiPPHPcEX9CSZasSka7gI6OWZDk6H80W1KRPxHMeKb4V06wa02IbZvWA5zeStC +OtmMCylk5Tzav8/UqYeDAqjddbSm7i423/pjmUh+eD/wLHvJxYanRm8nqBQLe1jL +2NmVkb1OpCyMK+sRF+K+sjALBglghkgBZQMEAwIDLwAwLAIUHVt2TWRAe/JSEHY1 +x6+igQb3AFQCFHYwbrScyMUwuVkNft2ttDN1I7ak +-----END CERTIFICATE----- diff --git a/tests/auto/network/ssl/qsslcertificate/certificates/dsa-cert-ss.pem.digest-md5 b/tests/auto/network/ssl/qsslcertificate/certificates/dsa-cert-ss.pem.digest-md5 new file mode 100644 index 0000000000..dba3fdff03 --- /dev/null +++ b/tests/auto/network/ssl/qsslcertificate/certificates/dsa-cert-ss.pem.digest-md5 @@ -0,0 +1 @@ +MD5 Fingerprint=35:B0:60:B2:37:14:43:31:01:71:C0:D9:CE:AF:20:CB diff --git a/tests/auto/network/ssl/qsslcertificate/certificates/dsa-cert-ss.pem.digest-sha1 b/tests/auto/network/ssl/qsslcertificate/certificates/dsa-cert-ss.pem.digest-sha1 new file mode 100644 index 0000000000..3879ef954f --- /dev/null +++ b/tests/auto/network/ssl/qsslcertificate/certificates/dsa-cert-ss.pem.digest-sha1 @@ -0,0 +1 @@ +SHA1 Fingerprint=BD:46:36:00:D7:31:3F:95:46:55:62:1A:FB:CA:36:A3:3D:27:15:92 diff --git a/tests/auto/network/ssl/qsslcertificate/certificates/dsa-cert-ss.pem.pubkey b/tests/auto/network/ssl/qsslcertificate/certificates/dsa-cert-ss.pem.pubkey new file mode 100644 index 0000000000..c44fd6f4a9 --- /dev/null +++ b/tests/auto/network/ssl/qsslcertificate/certificates/dsa-cert-ss.pem.pubkey @@ -0,0 +1,12 @@ +-----BEGIN PUBLIC KEY----- +MIIBtjCCASsGByqGSM44BAEwggEeAoGBAMJjrSlWu595Nf9UAAeggH6kUS30P+pi +gB5WEgeToqTkpIwHO24GdEL+dGtFVWwT+r+rSuI+SZPMMSQWpVcgjeCqoaPpn+9P +5gCof1jmn4oegis4K8hJANnsDDdE1HRkeVDSzFlkmvk+FnVfB0wI0T8Fk7BV4wZD +yvgTKko6t7YZAhUAoXZvBxhaUam1WnS18Yrk+1IT3u8CgYAx22xg8DQG4HE2vGH0 +p3Ug2FziCtjpDaN1ryomPbroQSK7/x9dhuy/4b1H2KdJufawWTVPdBI5TfXXvCcJ +EmQKKegarq3DFPGkpH+rp72GejEgmBMUU22+1NHga3VzSspLjAK2e/+r+foHHzJn +GQs6JrvMNaXK+UVJxXRp878CGgOBhAACgYAKoweyuHdke1ngEmgXMPrCNBJiPPHP +cEX9CSZasSka7gI6OWZDk6H80W1KRPxHMeKb4V06wa02IbZvWA5zeStCOtmMCylk +5Tzav8/UqYeDAqjddbSm7i423/pjmUh+eD/wLHvJxYanRm8nqBQLe1jL2NmVkb1O +pCyMK+sRF+K+sg== +-----END PUBLIC KEY----- diff --git a/tests/auto/network/ssl/qsslcertificate/certificates/ec-cert-ss.der.pubkey b/tests/auto/network/ssl/qsslcertificate/certificates/ec-cert-ss.der.pubkey new file mode 100644 index 0000000000..05e3f82ebd Binary files /dev/null and b/tests/auto/network/ssl/qsslcertificate/certificates/ec-cert-ss.der.pubkey differ diff --git a/tests/auto/network/ssl/qsslcertificate/certificates/ec-cert-ss.pem b/tests/auto/network/ssl/qsslcertificate/certificates/ec-cert-ss.pem new file mode 100644 index 0000000000..c4843c4420 --- /dev/null +++ b/tests/auto/network/ssl/qsslcertificate/certificates/ec-cert-ss.pem @@ -0,0 +1,11 @@ +-----BEGIN CERTIFICATE----- +MIIBfjCCAQUCCQC0FR+dPQNT7TAKBggqhkjOPQQDAjApMRowGAYDVQQDDBFuYW1l +L3dpdGgvc2xhc2hlczELMAkGA1UEBhMCTk8wHhcNMTUwNzI5MTIyNDA2WhcNMTUw +ODI4MTIyNDA2WjApMRowGAYDVQQDDBFuYW1lL3dpdGgvc2xhc2hlczELMAkGA1UE +BhMCTk8wdjAQBgcqhkjOPQIBBgUrgQQAIgNiAAQk+TMJ/Zu30xojWhWSFnllEgEF ++jBRIxSoJ8T7vaPy3dV0Dxomv5NxOi0kn1kzYUzMoMReK/IAJ3bfRGyFbV4i/KDJ +VAvyEevvMnp2ewKxmwlg9E9n+d4Tm7tf5+3Tz+EwCgYIKoZIzj0EAwIDZwAwZAIw +cM1DRkrcg4IPUZZaP96rI70H7OT3VDg5zSNMkEE/QBPGtE7T1Lzkxk96e/BkiQoV +AjB/t955UraOxLtnqjSHvVmiczWK+2b4QV+wiQBV6XTLI6FUeKLa70I0ruLdIgJ4 +zKU= +-----END CERTIFICATE----- diff --git a/tests/auto/network/ssl/qsslcertificate/certificates/ec-cert-ss.pem.digest-md5 b/tests/auto/network/ssl/qsslcertificate/certificates/ec-cert-ss.pem.digest-md5 new file mode 100644 index 0000000000..69ad0aa247 --- /dev/null +++ b/tests/auto/network/ssl/qsslcertificate/certificates/ec-cert-ss.pem.digest-md5 @@ -0,0 +1 @@ +MD5 Fingerprint=83:EF:5F:FF:C1:DB:E0:AC:4A:FA:E1:1C:9F:07:9B:1E diff --git a/tests/auto/network/ssl/qsslcertificate/certificates/ec-cert-ss.pem.digest-sha1 b/tests/auto/network/ssl/qsslcertificate/certificates/ec-cert-ss.pem.digest-sha1 new file mode 100644 index 0000000000..7547b5ce3f --- /dev/null +++ b/tests/auto/network/ssl/qsslcertificate/certificates/ec-cert-ss.pem.digest-sha1 @@ -0,0 +1 @@ +SHA1 Fingerprint=06:07:56:98:99:A1:45:D7:94:14:5A:B9:92:97:35:35:C8:EA:7C:3E diff --git a/tests/auto/network/ssl/qsslcertificate/certificates/ec-cert-ss.pem.pubkey b/tests/auto/network/ssl/qsslcertificate/certificates/ec-cert-ss.pem.pubkey new file mode 100644 index 0000000000..1ced61d62c --- /dev/null +++ b/tests/auto/network/ssl/qsslcertificate/certificates/ec-cert-ss.pem.pubkey @@ -0,0 +1,5 @@ +-----BEGIN PUBLIC KEY----- +MHYwEAYHKoZIzj0CAQYFK4EEACIDYgAEJPkzCf2bt9MaI1oVkhZ5ZRIBBfowUSMU +qCfE+72j8t3VdA8aJr+TcTotJJ9ZM2FMzKDEXivyACd230RshW1eIvygyVQL8hHr +7zJ6dnsCsZsJYPRPZ/neE5u7X+ft08/h +-----END PUBLIC KEY----- diff --git a/tests/auto/network/ssl/qsslcertificate/certificates/gencertificates.sh b/tests/auto/network/ssl/qsslcertificate/certificates/gencertificates.sh index b21776536b..50d17b9453 100755 --- a/tests/auto/network/ssl/qsslcertificate/certificates/gencertificates.sh +++ b/tests/auto/network/ssl/qsslcertificate/certificates/gencertificates.sh @@ -34,7 +34,8 @@ # This script generates digital certificates of different types. -#--- Certificates --------------------------------------------------------------------------- +#--- RSA Certificates ----------------------------------------------------------------------- + echo -e "\ngenerating 1024-bit RSA private key to PEM file ..." openssl genrsa -out rsa-pri-1024.pem 1024 @@ -57,6 +58,38 @@ openssl x509 -req -in req.pem -out cert.pem -CA ca-cert.pem -set_serial 17 echo -e "\n generating a certifificate signed by a dummy CA to DER file ..." openssl x509 -req -in req.pem -out cert.der -CA ca-cert.pem -set_serial 17 -outform der +#--- DSA Certificates ----------------------------------------------------------------------- +echo -e "\ngenerating DSA parameters to PEM file ..." +openssl dsaparam -out dsapar-1024.pem 1024 + +echo -e "\ngenerating DSA private key to PEM file ..." +openssl gendsa dsapar-1024.pem -out dsa-pri-1024.pem +/bin/rm dsapar-1024.pem + +echo -e "\ngenerating DSA public key to PEM and DER file ..." +openssl dsa -in dsa-pri-1024.pem -pubout -out dsa-pub-1024.pem +openssl dsa -in dsa-pri-1024.pem -pubout -out dsa-pub-1024.der -outform der + +echo -e "\ngenerating certificate signing request (CSR) ..." +openssl req -out req.pem -new -key dsa-pri-1024.pem -subj "/CN=name\/with\/slashes/C=NO" + +echo -e "\n generating a self-signed certifificate to PEM file ..." +openssl x509 -req -in req.pem -out dsa-cert-ss.pem -signkey dsa-pri-1024.pem + +#--- EC Certificates ------------------------------------------------------------------------ +echo -e "\ngenerating EC private key to PEM file ..." +openssl ecparam -name secp384r1 -genkey -noout -out ec-pri-384.pem + +echo -e "\ngenerating EC public key to PEM and DER file ..." +openssl ec -in ec-pri-384.pem -pubout -out ec-pub-384.pem +openssl ec -in ec-pri-384.pem -pubout -out ec-pub-384.der -outform DER + +echo -e "\ngenerating certificate signing request (CSR) ..." +openssl req -out req.pem -new -key ec-pri-384.pem -subj "/CN=name\/with\/slashes/C=NO" + +echo -e "\n generating a self-signed certifificate to PEM file ..." +openssl x509 -req -in req.pem -out ec-cert-ss.pem -signkey ec-pri-384.pem + #--- Public keys -------------------------------------------------------------------------------- echo -e "\n associate public keys with all certificates ..." # Note: For now, there is only one public key (encoded in both PEM and DER), but that could change. @@ -64,6 +97,10 @@ echo -e "\n associate public keys with all certificates ..." /bin/cp rsa-pub-1024.der cert-ss.der.pubkey /bin/cp rsa-pub-1024.pem cert.pem.pubkey /bin/cp rsa-pub-1024.der cert.der.pubkey +/bin/cp dsa-pub-1024.pem dsa-cert-ss.pem.pubkey +/bin/cp dsa-pub-1024.der dsa-cert-ss.der.pubkey +/bin/cp ec-pub-384.pem ec-cert-ss.pem.pubkey +/bin/cp ec-pub-384.der ec-cert-ss.der.pubkey #--- Digests -------------------------------------------------------------------------------- echo -e "\n generating md5 and sha1 digests of all certificates ..." @@ -72,6 +109,8 @@ do openssl x509 -in ca-cert.pem -noout -fingerprint -$digest > ca-cert.pem.digest-$digest openssl x509 -in cert-ss.pem -noout -fingerprint -$digest > cert-ss.pem.digest-$digest openssl x509 -in cert.pem -noout -fingerprint -$digest > cert.pem.digest-$digest + openssl x509 -in dsa-cert-ss.pem -noout -fingerprint -$digest > dsa-cert-ss.pem.digest-$digest + openssl x509 -in ec-cert-ss.pem -noout -fingerprint -$digest > ec-cert-ss.pem.digest-$digest done #--- Subjet Alternative Name extension ---------------------------------------------------- @@ -93,4 +132,7 @@ openssl req -x509 -in req-san.pem -out $outname -key rsa-pri-1024.pem \ /bin/cp san.cnf $outname.san echo -e "\n cleaning up ..." -/bin/rm rsa-pri-1024.pem rsa-pub-1024.* req*.pem +/bin/rm rsa-pri-1024.pem rsa-pub-1024.* +/bin/rm dsa-pri-1024.pem dsa-pub-1024.* +/bin/rm ec-pri-384.pem ec-pub-384.* +/bin/rm req*.pem diff --git a/tests/auto/network/ssl/qsslcertificate/tst_qsslcertificate.cpp b/tests/auto/network/ssl/qsslcertificate/tst_qsslcertificate.cpp index 604c0ef782..748c240f3d 100644 --- a/tests/auto/network/ssl/qsslcertificate/tst_qsslcertificate.cpp +++ b/tests/auto/network/ssl/qsslcertificate/tst_qsslcertificate.cpp @@ -494,12 +494,20 @@ void tst_QSslCertificate::publicKey() QFETCH(QSsl::EncodingFormat, format); QFETCH(QString, pubkeyFilePath); + QSsl::KeyAlgorithm algorithm; + if (QFileInfo(pubkeyFilePath).fileName().startsWith("dsa-")) + algorithm = QSsl::Dsa; + else if (QFileInfo(pubkeyFilePath).fileName().startsWith("ec-")) + algorithm = QSsl::Ec; + else + algorithm = QSsl::Rsa; + QByteArray encodedCert = readFile(certFilePath); QSslCertificate certificate(encodedCert, format); QVERIFY(!certificate.isNull()); QByteArray encodedPubkey = readFile(pubkeyFilePath); - QSslKey pubkey(encodedPubkey, QSsl::Rsa, format, QSsl::PublicKey); // ### support DSA as well! + QSslKey pubkey(encodedPubkey, algorithm, format, QSsl::PublicKey); QVERIFY(!pubkey.isNull()); QCOMPARE(certificate.publicKey(), pubkey); @@ -581,7 +589,7 @@ void tst_QSslCertificate::fromPath_data() QTest::newRow("\"certificates/*\" fixed der") << QString("certificates/*") << int(QRegExp::FixedString) << false << 0; QTest::newRow("\"certificates/*\" regexp pem") << QString("certificates/*") << int(QRegExp::RegExp) << true << 0; QTest::newRow("\"certificates/*\" regexp der") << QString("certificates/*") << int(QRegExp::RegExp) << false << 0; - QTest::newRow("\"certificates/*\" wildcard pem") << QString("certificates/*") << int(QRegExp::Wildcard) << true << 5; + QTest::newRow("\"certificates/*\" wildcard pem") << QString("certificates/*") << int(QRegExp::Wildcard) << true << 7; QTest::newRow("\"certificates/ca*\" wildcard pem") << QString("certificates/ca*") << int(QRegExp::Wildcard) << true << 1; QTest::newRow("\"certificates/cert*\" wildcard pem") << QString("certificates/cert*") << int(QRegExp::Wildcard) << true << 4; QTest::newRow("\"certificates/cert-[sure]*\" wildcard pem") << QString("certificates/cert-[sure]*") << int(QRegExp::Wildcard) << true << 3; @@ -612,7 +620,7 @@ void tst_QSslCertificate::fromPath_data() QTest::newRow("\"d.*/c.*.pem\" wildcard pem") << QString("d.*/c.*.pem") << int(QRegExp::Wildcard) << true << 0; QTest::newRow("\"d.*/c.*.pem\" wildcard der") << QString("d.*/c.*.pem") << int(QRegExp::Wildcard) << false << 0; #ifdef Q_OS_LINUX - QTest::newRow("absolute path wildcard pem") << (testDataDir + "/certificates/*.pem") << int(QRegExp::Wildcard) << true << 5; + QTest::newRow("absolute path wildcard pem") << (testDataDir + "/certificates/*.pem") << int(QRegExp::Wildcard) << true << 7; #endif QTest::newRow("trailing-whitespace") << QString("more-certificates/trailing-whitespace.pem") << int(QRegExp::FixedString) << true << 1; -- cgit v1.2.3 From c57c89b3c1b2b61c838b98458f6dbfad297dc7e3 Mon Sep 17 00:00:00 2001 From: Konstantin Ritt Date: Fri, 1 May 2015 08:21:29 +0400 Subject: Don't expose qt_setQtEnableTestFont(bool) by default Build it only in -developer-build mode for tests that might depend on exact-matching font behavior. Return earlier to avoid doing any useless job. Change-Id: I966ee5689f03403e45f4c957b63e3113f0467803 Reviewed-by: Eskil Abrahamsen Blomfeldt --- tests/auto/gui/text/qfontcache/tst_qfontcache.cpp | 14 ++-- .../auto/gui/text/qtextlayout/tst_qtextlayout.cpp | 76 ++++++++++++++-------- .../widgets/widgets/qtextedit/tst_qtextedit.cpp | 5 +- 3 files changed, 62 insertions(+), 33 deletions(-) (limited to 'tests/auto') diff --git a/tests/auto/gui/text/qfontcache/tst_qfontcache.cpp b/tests/auto/gui/text/qfontcache/tst_qfontcache.cpp index 0658d99fb2..272827e57b 100644 --- a/tests/auto/gui/text/qfontcache/tst_qfontcache.cpp +++ b/tests/auto/gui/text/qfontcache/tst_qfontcache.cpp @@ -51,15 +51,15 @@ private slots: void clear(); }; -QT_BEGIN_NAMESPACE -extern void qt_setQtEnableTestFont(bool value); // qfontdatabase.cpp - #ifdef QT_BUILD_INTERNAL +QT_BEGIN_NAMESPACE +// qfontdatabase.cpp +Q_AUTOTEST_EXPORT void qt_setQtEnableTestFont(bool value); // qfontengine.cpp -extern void QFontEngine_startCollectingEngines(); -extern QList QFontEngine_stopCollectingEngines(); -#endif +Q_AUTOTEST_EXPORT void QFontEngine_startCollectingEngines(); +Q_AUTOTEST_EXPORT QList QFontEngine_stopCollectingEngines(); QT_END_NAMESPACE +#endif tst_QFontCache::tst_QFontCache() { @@ -79,6 +79,7 @@ void tst_QFontCache::clear() QFontEngine *fontEngine = 0; +#ifdef QT_BUILD_INTERNAL { // we're never caching the box (and the "test") font engines // let's ensure we're not leaking them as well as the cached ones @@ -88,6 +89,7 @@ void tst_QFontCache::clear() f.setFamily("__Qt__Box__Engine__"); f.exactMatch(); // loads engine } +#endif { QFontDatabase db; diff --git a/tests/auto/gui/text/qtextlayout/tst_qtextlayout.cpp b/tests/auto/gui/text/qtextlayout/tst_qtextlayout.cpp index 105afa9a91..51f726ac86 100644 --- a/tests/auto/gui/text/qtextlayout/tst_qtextlayout.cpp +++ b/tests/auto/gui/text/qtextlayout/tst_qtextlayout.cpp @@ -68,6 +68,7 @@ public slots: private slots: void getSetCheck(); void lineBreaking(); +#ifdef QT_BUILD_INTERNAL void simpleBoundingRect(); void threeLineBoundingRect(); void boundingRectWithLongLineAndNoWrap(); @@ -83,16 +84,20 @@ private slots: void horizontalAlignment(); void horizontalAlignmentMultiline_data(); void horizontalAlignmentMultiline(); +#endif void defaultWordSeparators_data(); void defaultWordSeparators(); void cursorMovementFromInvalidPositions(); void cursorMovementInsideSpaces(); void charWordStopOnLineSeparator(); +#ifdef QT_BUILD_INTERNAL void xToCursorAtEndOfLine(); +#endif void boundingRectTopLeft(); void graphemeBoundaryForSurrogatePairs(); void tabStops(); void integerOverflow(); +#ifdef QT_BUILD_INTERNAL void testDefaultTabs(); void testTabs(); void testMultilineTab(); @@ -103,6 +108,7 @@ private slots: void testMultiTab(); void testTabDPIScale(); void tabsForRtl(); +#endif void tabHeight(); void capitalization_allUpperCase(); void capitalization_allUpperCase_newline(); @@ -119,12 +125,14 @@ private slots: void layoutWithCustomTabStops(); // QTextLine stuff +#ifdef QT_BUILD_INTERNAL void setNumColumnsWrapAtWordBoundaryOrAnywhere(); void setNumColumnsWordWrap(); void smallTextLengthNoWrap(); void smallTextLengthWordWrap(); void smallTextLengthWrapAtWordBoundaryOrAnywhere(); void testLineBreakingAllSpaces(); +#endif void lineWidthFromBOM(); void textWidthVsWIdth(); void textWithSurrogates_qtbug15679(); @@ -143,7 +151,7 @@ private: void tst_QTextLayout::getSetCheck() { QString str("Bogus text"); - QTextLayout layout(str, testFont); + QTextLayout layout(str); layout.beginLayout(); QTextEngine *engine = layout.engine(); QTextInlineObject obj1(0, engine); @@ -177,13 +185,18 @@ void tst_QTextLayout::getSetCheck() QCOMPARE(true, obj2.cacheEnabled()); } +#ifdef QT_BUILD_INTERNAL QT_BEGIN_NAMESPACE -extern void qt_setQtEnableTestFont(bool value); +// qfontdatabase.cpp +Q_AUTOTEST_EXPORT void qt_setQtEnableTestFont(bool value); QT_END_NAMESPACE +#endif tst_QTextLayout::tst_QTextLayout() { +#ifdef QT_BUILD_INTERNAL qt_setQtEnableTestFont(true); +#endif } tst_QTextLayout::~tst_QTextLayout() @@ -193,10 +206,14 @@ tst_QTextLayout::~tst_QTextLayout() void tst_QTextLayout::init() { testFont = QFont(); +#ifdef QT_BUILD_INTERNAL testFont.setFamily("__Qt__Box__Engine__"); +#endif testFont.setPixelSize(TESTFONT_SIZE); testFont.setWeight(QFont::Normal); +#ifdef QT_BUILD_INTERNAL QCOMPARE(QFontMetrics(testFont).width('a'), testFont.pixelSize()); +#endif } void tst_QTextLayout::cleanup() @@ -286,6 +303,7 @@ void tst_QTextLayout::lineBreaking() #endif } +#ifdef QT_BUILD_INTERNAL void tst_QTextLayout::simpleBoundingRect() { /* just check if boundingRect() gives sane values. The text is not broken. */ @@ -972,6 +990,7 @@ void tst_QTextLayout::horizontalAlignmentMultiline() QCOMPARE(rect.left(), lastLeft); QCOMPARE(rect.right(), lastRight); } +#endif void tst_QTextLayout::defaultWordSeparators_data() { @@ -1009,7 +1028,7 @@ void tst_QTextLayout::defaultWordSeparators() QFETCH(QString, text); QFETCH(int, startPos); QFETCH(int, endPos); - QTextLayout layout(text, testFont); + QTextLayout layout(text); QCOMPARE(layout.nextCursorPosition(startPos, QTextLayout::SkipWords), endPos); QCOMPARE(layout.previousCursorPosition(endPos, QTextLayout::SkipWords), startPos); @@ -1019,7 +1038,7 @@ void tst_QTextLayout::cursorMovementFromInvalidPositions() { int badpos = 10000; - QTextLayout layout("ABC", testFont); + QTextLayout layout("ABC"); QCOMPARE(layout.previousCursorPosition(-badpos, QTextLayout::SkipCharacters), -badpos); QCOMPARE(layout.nextCursorPosition(-badpos, QTextLayout::SkipCharacters), -badpos); @@ -1030,13 +1049,13 @@ void tst_QTextLayout::cursorMovementFromInvalidPositions() void tst_QTextLayout::cursorMovementInsideSpaces() { - QTextLayout layout("ABC DEF", testFont); + QTextLayout layout("ABC DEF"); QCOMPARE(layout.previousCursorPosition(6, QTextLayout::SkipWords), 0); QCOMPARE(layout.nextCursorPosition(6, QTextLayout::SkipWords), 15); - QTextLayout layout2("ABC\t\t\t\t\t\t\t\t\t\t\t\tDEF", testFont); + QTextLayout layout2("ABC\t\t\t\t\t\t\t\t\t\t\t\tDEF"); QCOMPARE(layout2.previousCursorPosition(6, QTextLayout::SkipWords), 0); QCOMPARE(layout2.nextCursorPosition(6, QTextLayout::SkipWords), 15); @@ -1048,13 +1067,14 @@ void tst_QTextLayout::charWordStopOnLineSeparator() QString txt; txt.append(lineSeparator); txt.append(lineSeparator); - QTextLayout layout(txt, testFont); + QTextLayout layout(txt); QTextEngine *engine = layout.engine(); const QCharAttributes *attrs = engine->attributes(); QVERIFY(attrs); QVERIFY(attrs[1].graphemeBoundary); } +#ifdef QT_BUILD_INTERNAL void tst_QTextLayout::xToCursorAtEndOfLine() { QString text = "FirstLine SecondLine"; @@ -1078,13 +1098,14 @@ void tst_QTextLayout::xToCursorAtEndOfLine() line = layout.lineAt(1); QCOMPARE(line.xToCursor(100000), 20); } +#endif void tst_QTextLayout::boundingRectTopLeft() { QString text = "FirstLine\nSecondLine"; text.replace('\n', QChar::LineSeparator); - QTextLayout layout(text, testFont); + QTextLayout layout(text); layout.setCacheEnabled(true); layout.beginLayout(); @@ -1106,7 +1127,7 @@ void tst_QTextLayout::graphemeBoundaryForSurrogatePairs() txt.append(0xd87e); txt.append(0xdc25); txt.append("b"); - QTextLayout layout(txt, testFont); + QTextLayout layout(txt); QTextEngine *engine = layout.engine(); const QCharAttributes *attrs = engine->attributes(); QVERIFY(attrs); @@ -1119,13 +1140,13 @@ void tst_QTextLayout::graphemeBoundaryForSurrogatePairs() void tst_QTextLayout::tabStops() { QString txt("Hello there\tworld"); - QTextLayout layout(txt, testFont); + QTextLayout layout(txt); layout.beginLayout(); QTextLine line = layout.createLine(); QVERIFY(line.isValid()); line.setNumColumns(11); - QCOMPARE(line.textLength(), TESTFONT_SIZE); + QCOMPARE(line.textLength(), 12); line = layout.createLine(); QVERIFY(line.isValid()); @@ -1142,7 +1163,7 @@ void tst_QTextLayout::integerOverflow() for (int i = 0; i < 8; ++i) txt += txt; - QTextLayout layout(txt, testFont); + QTextLayout layout(txt); layout.beginLayout(); QTextLine line = layout.createLine(); @@ -1155,6 +1176,7 @@ void tst_QTextLayout::integerOverflow() layout.endLayout(); } +#ifdef QT_BUILD_INTERNAL void tst_QTextLayout::setNumColumnsWrapAtWordBoundaryOrAnywhere() { QString txt("This is a small test text"); @@ -1695,22 +1717,23 @@ void tst_QTextLayout::testTabDPIScale() QCOMPARE(line.cursorToX(12), tabs.at(1).position * scale - TESTFONT_SIZE * 5); QCOMPARE(line.cursorToX(18), tabs.at(2).position * scale - TESTFONT_SIZE * 3 / 2.0); } +#endif void tst_QTextLayout::tabHeight() { - QTextLayout layout("\t", testFont); + QTextLayout layout("\t"); layout.setCacheEnabled(true); layout.beginLayout(); QTextLine line = layout.createLine(); layout.endLayout(); - QCOMPARE(qRound(line.ascent()), QFontMetrics(testFont).ascent()); - QCOMPARE(qRound(line.descent()), QFontMetrics(testFont).descent()); + QCOMPARE(qRound(line.ascent()), QFontMetrics(layout.font()).ascent()); + QCOMPARE(qRound(line.descent()), QFontMetrics(layout.font()).descent()); } void tst_QTextLayout::capitalization_allUpperCase() { - QFont font(testFont); + QFont font; font.setCapitalization(QFont::AllUppercase); QTextLayout layout("Test", font); layout.setCacheEnabled(true); @@ -1726,7 +1749,7 @@ void tst_QTextLayout::capitalization_allUpperCase() void tst_QTextLayout::capitalization_allUpperCase_newline() { - QFont font(testFont); + QFont font; font.setCapitalization(QFont::AllUppercase); QString tmp = "hello\nworld!"; @@ -1748,7 +1771,7 @@ void tst_QTextLayout::capitalization_allUpperCase_newline() void tst_QTextLayout::capitalization_allLowerCase() { - QFont font(testFont); + QFont font; font.setCapitalization(QFont::AllLowercase); QTextLayout layout("Test", font); layout.setCacheEnabled(true); @@ -1764,7 +1787,7 @@ void tst_QTextLayout::capitalization_allLowerCase() void tst_QTextLayout::capitalization_smallCaps() { - QFont font(testFont); + QFont font; font.setCapitalization(QFont::SmallCaps); QTextLayout layout("Test", font); layout.setCacheEnabled(true); @@ -1781,7 +1804,7 @@ void tst_QTextLayout::capitalization_smallCaps() void tst_QTextLayout::capitalization_capitalize() { - QFont font(testFont); + QFont font; font.setCapitalization(QFont::Capitalize); QTextLayout layout("hello\tworld", font); layout.setCacheEnabled(true); @@ -1804,7 +1827,7 @@ void tst_QTextLayout::longText() QString longText(128000, 'a'); { - QTextLayout layout(longText, testFont); + QTextLayout layout(longText); layout.setCacheEnabled(true); layout.beginLayout(); QTextLine line = layout.createLine(); @@ -1814,7 +1837,7 @@ void tst_QTextLayout::longText() } for (int cap = QFont::MixedCase; cap < QFont::Capitalize + 1; ++cap) { - QFont f(testFont); + QFont f; f.setCapitalization(QFont::Capitalization(cap)); QTextLayout layout(longText, f); layout.setCacheEnabled(true); @@ -1826,7 +1849,7 @@ void tst_QTextLayout::longText() } { - QTextLayout layout(longText, testFont); + QTextLayout layout(longText); layout.setCacheEnabled(true); layout.setFlags(Qt::TextForceLeftToRight); layout.beginLayout(); @@ -1837,7 +1860,7 @@ void tst_QTextLayout::longText() } { - QTextLayout layout(longText, testFont); + QTextLayout layout(longText); layout.setCacheEnabled(true); layout.setFlags(Qt::TextForceRightToLeft); layout.beginLayout(); @@ -1850,7 +1873,8 @@ void tst_QTextLayout::longText() void tst_QTextLayout::widthOfTabs() { - QTextEngine engine("ddd\t\t", testFont); + QTextEngine engine; + engine.text = "ddd\t\t"; engine.ignoreBidi = true; engine.itemize(); QCOMPARE(qRound(engine.width(0, 5)), qRound(engine.boundingBox(0, 5).width)); @@ -2078,7 +2102,7 @@ void tst_QTextLayout::cursorInNonStopChars() void tst_QTextLayout::justifyTrailingSpaces() { - QTextLayout layout(QStringLiteral(" t"), testFont); + QTextLayout layout(QStringLiteral(" t")); layout.setTextOption(QTextOption(Qt::AlignJustify)); layout.beginLayout(); diff --git a/tests/auto/widgets/widgets/qtextedit/tst_qtextedit.cpp b/tests/auto/widgets/widgets/qtextedit/tst_qtextedit.cpp index 399f82fdca..35a6a8e4e0 100644 --- a/tests/auto/widgets/widgets/qtextedit/tst_qtextedit.cpp +++ b/tests/auto/widgets/widgets/qtextedit/tst_qtextedit.cpp @@ -1907,9 +1907,12 @@ void tst_QTextEdit::setText() QCOMPARE(browser.toPlainText(), QLatin1String("with space")); } +#ifdef QT_BUILD_INTERNAL QT_BEGIN_NAMESPACE -extern void qt_setQtEnableTestFont(bool value); +// qfontdatabase.cpp +Q_AUTOTEST_EXPORT void qt_setQtEnableTestFont(bool value); QT_END_NAMESPACE +#endif #ifdef QT_BUILD_INTERNAL void tst_QTextEdit::fullWidthSelection_data() -- cgit v1.2.3 From 8fdd1e3867019fc62ee2bba3c8a892d8e701f8ed Mon Sep 17 00:00:00 2001 From: Alex Merry Date: Mon, 3 Aug 2015 10:37:19 +0100 Subject: QLoggingCategory: fix default severity in Q_LOGGING_CATEGORY macro [ChangeLog][QtCore][QLoggingCategory] Fixed behavior of default severity passed to constructor or Q_LOGGING_CATEGORY with regards to QtInfoMsg, which was previously treated as being more severe than QtFatalMsg. This is because the code was using the numeric value of QtMsgType as a proxy for severity (via the <= operator), but the value of QtInfoMsg is greater than QtFatalMsg. Instead, the severity ordering must be dealt with explicitly. Change-Id: I5f178afc735221b00cb67c2cea4fa964bd9079ce Reviewed-by: Kai Koehne --- .../auto/corelib/io/qloggingcategory/tst_qloggingcategory.cpp | 11 +++++++++++ 1 file changed, 11 insertions(+) (limited to 'tests/auto') diff --git a/tests/auto/corelib/io/qloggingcategory/tst_qloggingcategory.cpp b/tests/auto/corelib/io/qloggingcategory/tst_qloggingcategory.cpp index deef9eecbf..0f2cfd406d 100644 --- a/tests/auto/corelib/io/qloggingcategory/tst_qloggingcategory.cpp +++ b/tests/auto/corelib/io/qloggingcategory/tst_qloggingcategory.cpp @@ -376,6 +376,7 @@ private slots: #ifdef Q_COMPILER_VARIADIC_MACROS Q_LOGGING_CATEGORY(TST_MACRO_2, "tst.macro.2", QtDebugMsg) Q_LOGGING_CATEGORY(TST_MACRO_3, "tst.macro.3", QtFatalMsg) + Q_LOGGING_CATEGORY(TST_MACRO_4, "tst.macro.4", QtInfoMsg) #endif void QLoggingCategoryMacro() @@ -383,6 +384,7 @@ private slots: const QLoggingCategory &cat1 = TST_MACRO_1(); QCOMPARE(cat1.categoryName(), "tst.macro.1"); QCOMPARE(cat1.isDebugEnabled(), true); + QCOMPARE(cat1.isInfoEnabled(), true); QCOMPARE(cat1.isWarningEnabled(), true); QCOMPARE(cat1.isCriticalEnabled(), true); @@ -390,14 +392,23 @@ private slots: const QLoggingCategory &cat2 = TST_MACRO_2(); QCOMPARE(cat2.categoryName(), "tst.macro.2"); QCOMPARE(cat2.isDebugEnabled(), true); + QCOMPARE(cat2.isInfoEnabled(), true); QCOMPARE(cat2.isWarningEnabled(), true); QCOMPARE(cat2.isCriticalEnabled(), true); const QLoggingCategory &cat3 = TST_MACRO_3(); QCOMPARE(cat3.categoryName(), "tst.macro.3"); QCOMPARE(cat3.isDebugEnabled(), false); + QCOMPARE(cat3.isInfoEnabled(), false); QCOMPARE(cat3.isWarningEnabled(), false); QCOMPARE(cat3.isCriticalEnabled(), false); + + const QLoggingCategory &cat4 = TST_MACRO_4(); + QCOMPARE(cat4.categoryName(), "tst.macro.4"); + QCOMPARE(cat4.isDebugEnabled(), false); + QCOMPARE(cat4.isInfoEnabled(), true); + QCOMPARE(cat4.isWarningEnabled(), true); + QCOMPARE(cat4.isCriticalEnabled(), true); #endif } -- cgit v1.2.3 From 5f1a0cb42a5aa509e0660fc892f2291593fb08ef Mon Sep 17 00:00:00 2001 From: Thiago Macieira Date: Wed, 5 Aug 2015 08:49:16 -0700 Subject: Seed the random number generator before using QTemporaryDir Otherwise, on some systems (Windows), we'll always create the same dirs. Change-Id: Id3d5c7bf4d4c45069621ffff13f79ba91e0f974b Reviewed-by: Christopher Adams --- tests/auto/corelib/io/qfileinfo/tst_qfileinfo.cpp | 8 +++++++- tests/auto/corelib/mimetypes/qmimedatabase/tst_qmimedatabase.cpp | 7 +++++++ 2 files changed, 14 insertions(+), 1 deletion(-) (limited to 'tests/auto') diff --git a/tests/auto/corelib/io/qfileinfo/tst_qfileinfo.cpp b/tests/auto/corelib/io/qfileinfo/tst_qfileinfo.cpp index 2b01cfd7a9..96ad78a666 100644 --- a/tests/auto/corelib/io/qfileinfo/tst_qfileinfo.cpp +++ b/tests/auto/corelib/io/qfileinfo/tst_qfileinfo.cpp @@ -144,12 +144,18 @@ inline bool qIsLikelyToBeNfs(int /* handle */) #endif #endif +static QString seedAndTemplate() +{ + qsrand(QDateTime::currentDateTimeUtc().toTime_t()); + return QDir::tempPath() + "/tst_qfileinfo-XXXXXX"; +} class tst_QFileInfo : public QObject { Q_OBJECT public: - tst_QFileInfo() : m_currentDir(QDir::currentPath()) {} + tst_QFileInfo() : m_currentDir(QDir::currentPath()), m_dir(seedAndTemplate()) + {} private slots: void initTestCase(); diff --git a/tests/auto/corelib/mimetypes/qmimedatabase/tst_qmimedatabase.cpp b/tests/auto/corelib/mimetypes/qmimedatabase/tst_qmimedatabase.cpp index 1c9add86f7..99ebf77a3d 100644 --- a/tests/auto/corelib/mimetypes/qmimedatabase/tst_qmimedatabase.cpp +++ b/tests/auto/corelib/mimetypes/qmimedatabase/tst_qmimedatabase.cpp @@ -103,7 +103,14 @@ static bool copyResourceFile(const QString &sourceFileName, const QString &targe // Set LANG before QCoreApplication is created Q_CONSTRUCTOR_FUNCTION(initializeLang) +static QString seedAndTemplate() +{ + qsrand(QDateTime::currentDateTimeUtc().toTime_t()); + return QDir::tempPath() + "/tst_qmimedatabase-XXXXXX"; +} + tst_QMimeDatabase::tst_QMimeDatabase() + : m_temporaryDir(seedAndTemplate()) { } -- cgit v1.2.3 From 644ac04af0c3ef7d20ddc6077f85547fcba8caf5 Mon Sep 17 00:00:00 2001 From: Thiago Macieira Date: Fri, 31 Jul 2015 17:26:07 -0700 Subject: Change how QDebug escapes QStrings in the output [ChangeLog][Important Behavior Changes] QDebug output for QStrings changed compared to Qt 5.5.0 to more closely match the output of previous Qt versions. Like Qt 5.5.0, QDebug will escape non-printable characters, the backslash and quote characters, but will no longer escape the printable characters. Task-number: QTBUG-47316 Change-Id: I52dd43c12685407bb9a6ffff13f62ef68cbc80c5 Reviewed-by: Kai Koehne --- tests/auto/corelib/io/qdebug/tst_qdebug.cpp | 40 +++++++++++++++++++--- .../testlib/selftests/expected_badxml.lightxml | 2 +- tests/auto/testlib/selftests/expected_badxml.xml | 2 +- .../testlib/selftests/expected_badxml.xunitxml | 4 +-- 4 files changed, 39 insertions(+), 9 deletions(-) (limited to 'tests/auto') diff --git a/tests/auto/corelib/io/qdebug/tst_qdebug.cpp b/tests/auto/corelib/io/qdebug/tst_qdebug.cpp index 4e5cfed019..3e19e816c9 100644 --- a/tests/auto/corelib/io/qdebug/tst_qdebug.cpp +++ b/tests/auto/corelib/io/qdebug/tst_qdebug.cpp @@ -379,18 +379,48 @@ void tst_QDebug::qDebugQString() const qDebug().noquote().nospace() << qSetFieldWidth(8) << string; QCOMPARE(s_msg, " " + string); - string = QLatin1String("\nSm\xF8rg\xE5sbord\\"); + string = "Sm\xc3\xb8rg\xc3\xa5sbord " // Latin script + "\xce\x91\xce\xb8\xce\xae\xce\xbd\xce\xb1 " // Greek script + "\xd0\x9c\xd0\xbe\xd1\x81\xd0\xba\xd0\xb2\xd0\xb0"; // Cyrillic script qDebug().noquote().nospace() << string; QCOMPARE(s_msg, string); + // This string only contains printable characters qDebug() << string; - QCOMPARE(s_msg, QString("\"\\nSm\\u00F8rg\\u00E5sbord\\\\\"")); + QCOMPARE(s_msg, '"' + string + '"'); + + string = "\n\t\\\""; + qDebug().noquote().nospace() << string; + QCOMPARE(s_msg, string); + + // This string only contains characters that must be escaped + qDebug() << string; + QCOMPARE(s_msg, QString("\"\\n\\t\\\\\\\"\"")); + + // Unicode escapes, BMP + string = "\1" // U+0001: START OF HEADING (category Cc) + "\x7f" // U+007F: DELETE (category Cc) + "\xc2\xad" // U+00AD: SOFT HYPHEN (category Cf) + "\xef\xbb\xbf"; // U+FEFF: ZERO WIDTH NO-BREAK SPACE / BOM (category Cf) + qDebug() << string; + QCOMPARE(s_msg, QString("\"\\u0001\\u007F\\u00AD\\uFEFF\"")); + + // Unicode printable non-BMP + string = "\xf0\x90\x80\x80"; // U+10000: LINEAR B SYLLABLE B008 A (category Lo) + qDebug() << string; + QCOMPARE(s_msg, '"' + string + '"'); + + // non-BMP and non-printable + string = "\xf3\xa0\x80\x81 " // U+E0001: LANGUAGE TAG (category Cf) + "\xf4\x80\x80\x80"; // U+100000: Plane 16 Private Use (category Co) + qDebug() << string; + QCOMPARE(s_msg, QString("\"\\U000E0001 \\U00100000\"")); - // surrogate pairs (including broken pairings) - ushort utf16[] = { 0xDC00, 0xD800, 0xDC00, 'x', 0xD800, 0xDC00, 0xD800, 0 }; + // broken surrogate pairs + ushort utf16[] = { 0xDC00, 0xD800, 'x', 0xD800, 0 }; string = QString::fromUtf16(utf16); qDebug() << string; - QCOMPARE(s_msg, QString("\"\\uDC00\\U00010000x\\U00010000\\uD800\"")); + QCOMPARE(s_msg, QString("\"\\uDC00\\uD800x\\uD800\"")); } void tst_QDebug::qDebugQStringRef() const diff --git a/tests/auto/testlib/selftests/expected_badxml.lightxml b/tests/auto/testlib/selftests/expected_badxml.lightxml index e0de44f0be..94f479a79a 100644 --- a/tests/auto/testlib/selftests/expected_badxml.lightxml +++ b/tests/auto/testlib/selftests/expected_badxml.lightxml @@ -113,7 +113,7 @@ - + diff --git a/tests/auto/testlib/selftests/expected_badxml.xml b/tests/auto/testlib/selftests/expected_badxml.xml index 8667c2d9cd..c1266bfeed 100644 --- a/tests/auto/testlib/selftests/expected_badxml.xml +++ b/tests/auto/testlib/selftests/expected_badxml.xml @@ -115,7 +115,7 @@ - + diff --git a/tests/auto/testlib/selftests/expected_badxml.xunitxml b/tests/auto/testlib/selftests/expected_badxml.xunitxml index 46f4be4391..49048fdad6 100644 --- a/tests/auto/testlib/selftests/expected_badxml.xunitxml +++ b/tests/auto/testlib/selftests/expected_badxml.xunitxml @@ -30,7 +30,7 @@ - + @@ -46,6 +46,6 @@ open < tags < text]]> " mixed ]]]> up > " in < the ]]]> hopes < of triggering "< ]]]> bugs]]> - + -- cgit v1.2.3