diff options
author | Timur Pocheptsov <timur.pocheptsov@theqtcompany.com> | 2015-08-09 07:06:52 +0000 |
---|---|---|
committer | The Qt Project <gerrit-noreply@qt-project.org> | 2015-08-09 07:06:52 +0000 |
commit | 5bfac9d653357c906946563b9494d7ae69cdad92 (patch) | |
tree | 0cc119af894a398497eba6f56fe2f224f6947616 /tests | |
parent | f08e1ecdc88e9373a31c1505d5db7f905431c644 (diff) | |
parent | 77da617dc8e378a631ee8c15b1b414f16b87f147 (diff) |
Merge "Merge remote-tracking branch 'origin/5.5' into dev" into refs/staging/dev
Diffstat (limited to 'tests')
39 files changed, 369 insertions, 68 deletions
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); } diff --git a/tests/auto/corelib/io/qdebug/tst_qdebug.cpp b/tests/auto/corelib/io/qdebug/tst_qdebug.cpp index 1b7d410beb..db2805ebf0 100644 --- a/tests/auto/corelib/io/qdebug/tst_qdebug.cpp +++ b/tests/auto/corelib/io/qdebug/tst_qdebug.cpp @@ -411,18 +411,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\\\\\\\"\"")); - // surrogate pairs (including broken pairings) - ushort utf16[] = { 0xDC00, 0xD800, 0xDC00, 'x', 0xD800, 0xDC00, 0xD800, 0 }; + // 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\"")); + + // 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 @@ -657,5 +687,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 <typename T> +TestClassA& operator<< (TestClassA& s, T&) { return s; }; +template<> TestClassA& operator<< <TestClassB>(TestClassA& s, TestClassB& l); + QTEST_MAIN(tst_QDebug); #include "tst_qdebug.moc" diff --git a/tests/auto/corelib/io/qfileinfo/tst_qfileinfo.cpp b/tests/auto/corelib/io/qfileinfo/tst_qfileinfo.cpp index bbee33ac78..8d276b3616 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/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 } diff --git a/tests/auto/corelib/io/qprocess/tst_qprocess.cpp b/tests/auto/corelib/io/qprocess/tst_qprocess.cpp index 02501ca9d9..0ffac21186 100644 --- a/tests/auto/corelib/io/qprocess/tst_qprocess.cpp +++ b/tests/auto/corelib/io/qprocess/tst_qprocess.cpp @@ -155,6 +155,8 @@ private slots: void failToStart(); void failToStartWithWait(); void failToStartWithEventLoop(); + void failToStartEmptyArgs_data(); + void failToStartEmptyArgs(); protected slots: void readFromProcess(); @@ -1690,6 +1692,42 @@ void tst_QProcess::failToStartWithEventLoop() } } +void tst_QProcess::failToStartEmptyArgs_data() +{ + QTest::addColumn<int>("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::ProcessError"); + + QProcess process; + QSignalSpy errorSpy(&process, static_cast<void (QProcess::*)(QProcess::ProcessError)>(&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 diff --git a/tests/auto/corelib/mimetypes/qmimedatabase/tst_qmimedatabase.cpp b/tests/auto/corelib/mimetypes/qmimedatabase/tst_qmimedatabase.cpp index 7c32f2cc12..12abaf47c5 100644 --- a/tests/auto/corelib/mimetypes/qmimedatabase/tst_qmimedatabase.cpp +++ b/tests/auto/corelib/mimetypes/qmimedatabase/tst_qmimedatabase.cpp @@ -73,10 +73,45 @@ 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) +static QString seedAndTemplate() +{ + qsrand(QDateTime::currentDateTimeUtc().toTime_t()); + return QDir::tempPath() + "/tst_qmimedatabase-XXXXXX"; +} + tst_QMimeDatabase::tst_QMimeDatabase() + : m_temporaryDir(seedAndTemplate()) { } @@ -103,15 +138,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; @@ -836,8 +871,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"); @@ -882,8 +918,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(')'); 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 } 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/test/test.pro b/tests/auto/dbus/qdbusabstractadaptor/qdbusabstractadaptor/qdbusabstractadaptor.pro index d95fa941f0..d95fa941f0 100644 --- a/tests/auto/dbus/qdbusabstractadaptor/test/test.pro +++ b/tests/auto/dbus/qdbusabstractadaptor/qdbusabstractadaptor/qdbusabstractadaptor.pro 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/test/test.pro b/tests/auto/dbus/qdbusabstractinterface/qdbusabstractinterface/qdbusabstractinterface.pro index a8cc4c2b38..a8cc4c2b38 100644 --- a/tests/auto/dbus/qdbusabstractinterface/test/test.pro +++ b/tests/auto/dbus/qdbusabstractinterface/qdbusabstractinterface/qdbusabstractinterface.pro 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/test/test.pro b/tests/auto/dbus/qdbusinterface/qdbusinterface/qdbusinterface.pro index 170b555ee7..170b555ee7 100644 --- a/tests/auto/dbus/qdbusinterface/test/test.pro +++ b/tests/auto/dbus/qdbusinterface/qdbusinterface/qdbusinterface.pro 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/test/test.pro b/tests/auto/dbus/qdbusmarshall/qdbusmarshall/qdbusmarshall.pro index b0656231d2..b0656231d2 100644 --- a/tests/auto/dbus/qdbusmarshall/test/test.pro +++ b/tests/auto/dbus/qdbusmarshall/qdbusmarshall/qdbusmarshall.pro 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 Binary files differnew file mode 100644 index 0000000000..a51a1e3162 --- /dev/null +++ b/tests/auto/gui/image/qimage/images/jpeg_exif_invalid_data_QTBUG-46870.jpg diff --git a/tests/auto/gui/image/qimage/tst_qimage.cpp b/tests/auto/gui/image/qimage/tst_qimage.cpp index c1b32a273c..08f48abd20 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<bool*>(info); 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 *> QFontEngine_stopCollectingEngines(); -#endif +Q_AUTOTEST_EXPORT void QFontEngine_startCollectingEngines(); +Q_AUTOTEST_EXPORT QList<QFontEngine *> 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 b19f90935b..18da61925d 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"); @@ -1696,22 +1718,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); @@ -1727,7 +1750,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!"; @@ -1749,7 +1772,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); @@ -1765,7 +1788,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); @@ -1782,7 +1805,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); @@ -1805,7 +1828,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(); @@ -1815,7 +1838,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); @@ -1827,7 +1850,7 @@ void tst_QTextLayout::longText() } { - QTextLayout layout(longText, testFont); + QTextLayout layout(longText); layout.setCacheEnabled(true); layout.setFlags(Qt::TextForceLeftToRight); layout.beginLayout(); @@ -1838,7 +1861,7 @@ void tst_QTextLayout::longText() } { - QTextLayout layout(longText, testFont); + QTextLayout layout(longText); layout.setCacheEnabled(true); layout.setFlags(Qt::TextForceRightToLeft); layout.beginLayout(); @@ -1851,7 +1874,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)); @@ -2079,7 +2103,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/network/access/qnetworkreply/tst_qnetworkreply.cpp b/tests/auto/network/access/qnetworkreply/tst_qnetworkreply.cpp index 5a685037a1..4d41d4beb1 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<char>) #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) @@ -6047,8 +6055,8 @@ void tst_QNetworkReply::ignoreSslErrorsList_data() QList<QSslError> expectedSslErrors; QList<QSslCertificate> 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); diff --git a/tests/auto/network/socket/qudpsocket/tst_qudpsocket.cpp b/tests/auto/network/socket/qudpsocket/tst_qudpsocket.cpp index 5b27b7d2b4..dc41a93906 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()) 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 Binary files differnew file mode 100644 index 0000000000..4e46848106 --- /dev/null +++ b/tests/auto/network/ssl/qsslcertificate/certificates/dsa-cert-ss.der.pubkey 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 Binary files differnew file mode 100644 index 0000000000..05e3f82ebd --- /dev/null +++ b/tests/auto/network/ssl/qsslcertificate/certificates/ec-cert-ss.der.pubkey 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 5e7e250bfd..4c288fffaf 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; diff --git a/tests/auto/network/ssl/qsslsocket/tst_qsslsocket.cpp b/tests/auto/network/ssl/qsslsocket/tst_qsslsocket.cpp index 64288f50e1..c7d655af3d 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<QSslSocket> 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 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 @@ </TestFunction> <TestFunction name="encoding"> <Message type="qdebug" file="" line="0"> - <Description><![CDATA["\u00DClrich \u00DCml\u00E4ut"]]></Description> + <Description><![CDATA["Ülrich Ümläut"]]></Description> </Message> <Incident type="pass" file="" line="0" /> <Duration msecs="0"/> 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 @@ </TestFunction> <TestFunction name="encoding"> <Message type="qdebug" file="" line="0"> - <Description><![CDATA["\u00DClrich \u00DCml\u00E4ut"]]></Description> + <Description><![CDATA["Ülrich Ümläut"]]></Description> </Message> <Incident type="pass" file="" line="0" /> <Duration msecs="0"/> 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 @@ <failure message="failure message" result="fail"/> </testcase> <testcase result="pass" name="encoding"> - <!-- message=""\u00DClrich \u00DCml\u00E4ut"" type="qdebug" --> + <!-- message=""Ülrich Ümläut"" type="qdebug" --> </testcase> <testcase result="pass" name="cleanupTestCase"/> <system-err> @@ -46,6 +46,6 @@ <![CDATA[quotes " text" more text]]> <![CDATA[xml close > open < tags < text]]> <![CDATA[all > " mixed ]]]><![CDATA[]> up > " in < the ]]]><![CDATA[]> hopes < of triggering "< ]]]><![CDATA[]> bugs]]> -<![CDATA["\u00DClrich \u00DCml\u00E4ut"]]> +<![CDATA["Ülrich Ümläut"]]> </system-err> </testsuite> diff --git a/tests/auto/widgets/widgets/qcombobox/tst_qcombobox.cpp b/tests/auto/widgets/widgets/qcombobox/tst_qcombobox.cpp index fdc5bdd915..09129f0676 100644 --- a/tests/auto/widgets/widgets/qcombobox/tst_qcombobox.cpp +++ b/tests/auto/widgets/widgets/qcombobox/tst_qcombobox.cpp @@ -165,6 +165,7 @@ private slots: void setCustomModelAndView(); void updateDelegateOnEditableChange(); void respectChangedOwnershipOfItemView(); + void task_QTBUG_39088_inputMethodHints(); }; class MyAbstractItemDelegate : public QAbstractItemDelegate @@ -3170,6 +3171,14 @@ 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); +} + void tst_QComboBox::respectChangedOwnershipOfItemView() { QComboBox box1; diff --git a/tests/auto/widgets/widgets/qtextedit/tst_qtextedit.cpp b/tests/auto/widgets/widgets/qtextedit/tst_qtextedit.cpp index fb7c3e8a68..0cc812cbca 100644 --- a/tests/auto/widgets/widgets/qtextedit/tst_qtextedit.cpp +++ b/tests/auto/widgets/widgets/qtextedit/tst_qtextedit.cpp @@ -1909,9 +1909,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() |