From aa578c4e296a3bf5117fd878fcac70d1c11bd255 Mon Sep 17 00:00:00 2001 From: Robin Burchell Date: Thu, 20 Mar 2014 23:21:49 +0100 Subject: [PATCH] TestHTTPServer: Make listening an explicit operation that reports failure. Use this to print the error message when listening fails, and switch to always stack allocating TestHTTPServer instances for easier cleanup. Change-Id: I63b2bd38963b66611dc08a5c322615d91a91e675 Reviewed-by: John Brooks Reviewed-by: J-P Nurmi Reviewed-by: Lorn Potter --- tests/auto/qml/qqmlcomponent/tst_qqmlcomponent.cpp | 8 +-- .../auto/qml/qqmlecmascript/tst_qqmlecmascript.cpp | 12 ++-- tests/auto/qml/qqmllanguage/tst_qqmllanguage.cpp | 18 +++-- .../qml/qqmlmoduleplugin/tst_qqmlmoduleplugin.cpp | 8 +-- .../qqmlxmlhttprequest/tst_qqmlxmlhttprequest.cpp | 83 +++++++++++----------- .../tst_qquickanimatedimage.cpp | 16 ++--- .../qquickborderimage/tst_qquickborderimage.cpp | 35 ++++----- .../qquickfontloader/tst_qquickfontloader.cpp | 5 +- tests/auto/quick/qquickimage/tst_qquickimage.cpp | 20 +++--- tests/auto/quick/qquickloader/tst_qquickloader.cpp | 16 ++--- .../qquickpixmapcache/tst_qquickpixmapcache.cpp | 10 ++- tests/auto/quick/qquicktext/tst_qquicktext.cpp | 6 +- .../quick/qquicktextedit/tst_qquicktextedit.cpp | 9 ++- .../quick/qquicktextinput/tst_qquicktextinput.cpp | 3 +- tests/auto/shared/testhttpserver.cpp | 15 ++-- tests/auto/shared/testhttpserver.h | 5 +- tests/manual/httpserver/main.cpp | 6 +- 17 files changed, 147 insertions(+), 128 deletions(-) diff --git a/tests/auto/qml/qqmlcomponent/tst_qqmlcomponent.cpp b/tests/auto/qml/qqmlcomponent/tst_qqmlcomponent.cpp index dbf28a5..d5a5f10 100644 --- a/tests/auto/qml/qqmlcomponent/tst_qqmlcomponent.cpp +++ b/tests/auto/qml/qqmlcomponent/tst_qqmlcomponent.cpp @@ -267,8 +267,8 @@ void tst_qqmlcomponent::qmlCreateParentReference() void tst_qqmlcomponent::async() { - TestHTTPServer server(SERVER_PORT); - QVERIFY(server.isValid()); + TestHTTPServer server; + QVERIFY2(server.listen(SERVER_PORT), qPrintable(server.errorString())); server.serveDirectory(dataDirectory()); QQmlComponent component(&engine); @@ -287,8 +287,8 @@ void tst_qqmlcomponent::async() void tst_qqmlcomponent::asyncHierarchy() { - TestHTTPServer server(SERVER_PORT); - QVERIFY(server.isValid()); + TestHTTPServer server; + QVERIFY2(server.listen(SERVER_PORT), qPrintable(server.errorString())); server.serveDirectory(dataDirectory()); // ensure that the item hierarchy is compiled correctly. diff --git a/tests/auto/qml/qqmlecmascript/tst_qqmlecmascript.cpp b/tests/auto/qml/qqmlecmascript/tst_qqmlecmascript.cpp index b6c564a..2809124 100644 --- a/tests/auto/qml/qqmlecmascript/tst_qqmlecmascript.cpp +++ b/tests/auto/qml/qqmlecmascript/tst_qqmlecmascript.cpp @@ -4169,8 +4169,8 @@ void tst_qqmlecmascript::importScripts() QFETCH(QStringList, propertyNames); QFETCH(QVariantList, propertyValues); - TestHTTPServer server(8111); - QVERIFY(server.isValid()); + TestHTTPServer server; + QVERIFY2(server.listen(8111), qPrintable(server.errorString())); server.serveDirectory(dataDirectory() + "/remote"); QStringList importPathList = engine.importPathList(); @@ -5997,8 +5997,8 @@ void tst_qqmlecmascript::include() // Remote - error { - TestHTTPServer server(8111); - QVERIFY(server.isValid()); + TestHTTPServer server; + QVERIFY2(server.listen(8111), qPrintable(server.errorString())); server.serveDirectory(dataDirectory()); QQmlComponent component(&engine, testFileUrl("include_remote_missing.qml")); @@ -6022,8 +6022,8 @@ void tst_qqmlecmascript::includeRemoteSuccess() #endif // Remote - success - TestHTTPServer server(8111); - QVERIFY(server.isValid()); + TestHTTPServer server; + QVERIFY2(server.listen(8111), qPrintable(server.errorString())); server.serveDirectory(dataDirectory()); QQmlComponent component(&engine, testFileUrl("include_remote.qml")); diff --git a/tests/auto/qml/qqmllanguage/tst_qqmllanguage.cpp b/tests/auto/qml/qqmllanguage/tst_qqmllanguage.cpp index fa0c393..cf43352 100644 --- a/tests/auto/qml/qqmllanguage/tst_qqmllanguage.cpp +++ b/tests/auto/qml/qqmllanguage/tst_qqmllanguage.cpp @@ -2237,7 +2237,8 @@ void tst_qqmllanguage::basicRemote() QFETCH(QString, type); QFETCH(QString, error); - TestHTTPServer server(14447); + TestHTTPServer server; + QVERIFY2(server.listen(14447), qPrintable(server.errorString())); server.serveDirectory(dataDirectory()); QQmlComponent component(&engine, url); @@ -2281,7 +2282,8 @@ void tst_qqmllanguage::importsRemote() QFETCH(QString, type); QFETCH(QString, error); - TestHTTPServer server(14447); + TestHTTPServer server; + QVERIFY2(server.listen(14447), qPrintable(server.errorString())); server.serveDirectory(dataDirectory()); testType(qml,type,error); @@ -2373,7 +2375,8 @@ void tst_qqmllanguage::importsInstalledRemote() QFETCH(QString, type); QFETCH(QString, error); - TestHTTPServer server(14447); + TestHTTPServer server; + QVERIFY2(server.listen(14447), qPrintable(server.errorString())); server.serveDirectory(dataDirectory()); QString serverdir = "http://127.0.0.1:14447/lib/"; @@ -2439,7 +2442,8 @@ void tst_qqmllanguage::importsPath() QFETCH(QString, qml); QFETCH(QString, value); - TestHTTPServer server(14447); + TestHTTPServer server; + QVERIFY2(server.listen(14447), qPrintable(server.errorString())); server.serveDirectory(dataDirectory()); engine.setImportPathList(QStringList(defaultImportPathList) << importPath); @@ -3018,7 +3022,8 @@ void tst_qqmllanguage::registeredCompositeType() // QTBUG-18268 void tst_qqmllanguage::remoteLoadCrash() { - TestHTTPServer server(14448); + TestHTTPServer server; + QVERIFY2(server.listen(14448), qPrintable(server.errorString())); server.serveDirectory(dataDirectory()); QQmlComponent component(&engine); @@ -3508,7 +3513,8 @@ void tst_qqmllanguage::compositeSingletonQmlDirError() // Load a remote composite singleton type via qmldir that defines the type as a singleton void tst_qqmllanguage::compositeSingletonRemote() { - TestHTTPServer server(14447); + TestHTTPServer server; + QVERIFY2(server.listen(14447), qPrintable(server.errorString())); server.serveDirectory(dataDirectory()); QQmlComponent component(&engine, testFile("singletonTest15.qml")); diff --git a/tests/auto/qml/qqmlmoduleplugin/tst_qqmlmoduleplugin.cpp b/tests/auto/qml/qqmlmoduleplugin/tst_qqmlmoduleplugin.cpp index 15be1fd..1861b37 100644 --- a/tests/auto/qml/qqmlmoduleplugin/tst_qqmlmoduleplugin.cpp +++ b/tests/auto/qml/qqmlmoduleplugin/tst_qqmlmoduleplugin.cpp @@ -247,8 +247,8 @@ void tst_qqmlmoduleplugin::importPluginWithQmlFile() void tst_qqmlmoduleplugin::remoteImportWithQuotedUrl() { - TestHTTPServer server(SERVER_PORT); - QVERIFY(server.isValid()); + TestHTTPServer server; + QVERIFY2(server.listen(SERVER_PORT), qPrintable(server.errorString())); server.serveDirectory(m_dataImportsDirectory); QQmlEngine engine; @@ -268,8 +268,8 @@ void tst_qqmlmoduleplugin::remoteImportWithQuotedUrl() void tst_qqmlmoduleplugin::remoteImportWithUnquotedUri() { - TestHTTPServer server(SERVER_PORT); - QVERIFY(server.isValid()); + TestHTTPServer server; + QVERIFY2(server.listen(SERVER_PORT), qPrintable(server.errorString())); server.serveDirectory(m_dataImportsDirectory); QQmlEngine engine; diff --git a/tests/auto/qml/qqmlxmlhttprequest/tst_qqmlxmlhttprequest.cpp b/tests/auto/qml/qqmlxmlhttprequest/tst_qqmlxmlhttprequest.cpp index 17becb3..e1ccde2 100644 --- a/tests/auto/qml/qqmlxmlhttprequest/tst_qqmlxmlhttprequest.cpp +++ b/tests/auto/qml/qqmlxmlhttprequest/tst_qqmlxmlhttprequest.cpp @@ -240,13 +240,12 @@ void tst_qqmlxmlhttprequest::open() QFETCH(QString, url); QFETCH(bool, remote); - QScopedPointer server; // ensure deletion in case test fails + TestHTTPServer server; if (remote) { - server.reset(new TestHTTPServer(SERVER_PORT)); - QVERIFY(server->isValid()); - QVERIFY(server->wait(testFileUrl("open_network.expect"), - testFileUrl("open_network.reply"), - testFileUrl("testdocument.html"))); + QVERIFY2(server.listen(SERVER_PORT), qPrintable(server.errorString())); + QVERIFY(server.wait(testFileUrl("open_network.expect"), + testFileUrl("open_network.reply"), + testFileUrl("testdocument.html"))); } QQmlComponent component(&engine, qmlFile); @@ -322,8 +321,8 @@ void tst_qqmlxmlhttprequest::open_arg_count() // Test valid setRequestHeader() calls void tst_qqmlxmlhttprequest::setRequestHeader() { - TestHTTPServer server(SERVER_PORT); - QVERIFY(server.isValid()); + TestHTTPServer server; + QVERIFY2(server.listen(SERVER_PORT), qPrintable(server.errorString())); QVERIFY(server.wait(testFileUrl("setRequestHeader.expect"), testFileUrl("setRequestHeader.reply"), testFileUrl("testdocument.html"))); @@ -340,8 +339,8 @@ void tst_qqmlxmlhttprequest::setRequestHeader() // Test valid setRequestHeader() calls with different header cases void tst_qqmlxmlhttprequest::setRequestHeader_caseInsensitive() { - TestHTTPServer server(SERVER_PORT); - QVERIFY(server.isValid()); + TestHTTPServer server; + QVERIFY2(server.listen(SERVER_PORT), qPrintable(server.errorString())); QVERIFY(server.wait(testFileUrl("setRequestHeader.expect"), testFileUrl("setRequestHeader.reply"), testFileUrl("testdocument.html"))); @@ -397,8 +396,8 @@ void tst_qqmlxmlhttprequest::setRequestHeader_illegalName() { QFETCH(QString, name); - TestHTTPServer server(SERVER_PORT); - QVERIFY(server.isValid()); + TestHTTPServer server; + QVERIFY2(server.listen(SERVER_PORT), qPrintable(server.errorString())); QVERIFY(server.wait(testFileUrl("open_network.expect"), testFileUrl("open_network.reply"), testFileUrl("testdocument.html"))); @@ -423,8 +422,8 @@ void tst_qqmlxmlhttprequest::setRequestHeader_illegalName() // Test that attempting to set a header after a request is sent throws an exception void tst_qqmlxmlhttprequest::setRequestHeader_sent() { - TestHTTPServer server(SERVER_PORT); - QVERIFY(server.isValid()); + TestHTTPServer server; + QVERIFY2(server.listen(SERVER_PORT), qPrintable(server.errorString())); QVERIFY(server.wait(testFileUrl("open_network.expect"), testFileUrl("open_network.reply"), testFileUrl("testdocument.html"))); @@ -475,8 +474,8 @@ void tst_qqmlxmlhttprequest::send_alreadySent() void tst_qqmlxmlhttprequest::send_ignoreData() { { - TestHTTPServer server(SERVER_PORT); - QVERIFY(server.isValid()); + TestHTTPServer server; + QVERIFY2(server.listen(SERVER_PORT), qPrintable(server.errorString())); QVERIFY(server.wait(testFileUrl("send_ignoreData_GET.expect"), testFileUrl("send_ignoreData.reply"), testFileUrl("testdocument.html"))); @@ -492,8 +491,8 @@ void tst_qqmlxmlhttprequest::send_ignoreData() } { - TestHTTPServer server(SERVER_PORT); - QVERIFY(server.isValid()); + TestHTTPServer server; + QVERIFY2(server.listen(SERVER_PORT), qPrintable(server.errorString())); QVERIFY(server.wait(testFileUrl("send_ignoreData_HEAD.expect"), testFileUrl("send_ignoreData.reply"), QUrl())); @@ -509,8 +508,8 @@ void tst_qqmlxmlhttprequest::send_ignoreData() } { - TestHTTPServer server(SERVER_PORT); - QVERIFY(server.isValid()); + TestHTTPServer server; + QVERIFY2(server.listen(SERVER_PORT), qPrintable(server.errorString())); QVERIFY(server.wait(testFileUrl("send_ignoreData_DELETE.expect"), testFileUrl("send_ignoreData.reply"), QUrl())); @@ -532,8 +531,8 @@ void tst_qqmlxmlhttprequest::send_withdata() QFETCH(QString, file_expected); QFETCH(QString, file_qml); - TestHTTPServer server(SERVER_PORT); - QVERIFY(server.isValid()); + TestHTTPServer server; + QVERIFY2(server.listen(SERVER_PORT), qPrintable(server.errorString())); QVERIFY(server.wait(testFileUrl(file_expected), testFileUrl("send_data.reply"), testFileUrl("testdocument.html"))); @@ -602,8 +601,8 @@ void tst_qqmlxmlhttprequest::abort_opened() // Test abort() aborts in progress send void tst_qqmlxmlhttprequest::abort() { - TestHTTPServer server(SERVER_PORT); - QVERIFY(server.isValid()); + TestHTTPServer server; + QVERIFY2(server.listen(SERVER_PORT), qPrintable(server.errorString())); QVERIFY(server.wait(testFileUrl("abort.expect"), testFileUrl("abort.reply"), testFileUrl("testdocument.html"))); @@ -626,8 +625,8 @@ void tst_qqmlxmlhttprequest::getResponseHeader() { QQmlEngine engine; // Avoid cookie contamination - TestHTTPServer server(SERVER_PORT); - QVERIFY(server.isValid()); + TestHTTPServer server; + QVERIFY2(server.listen(SERVER_PORT), qPrintable(server.errorString())); QVERIFY(server.wait(testFileUrl("getResponseHeader.expect"), testFileUrl("getResponseHeader.reply"), testFileUrl("testdocument.html"))); @@ -693,8 +692,8 @@ void tst_qqmlxmlhttprequest::getAllResponseHeaders() { QQmlEngine engine; // Avoid cookie contamination - TestHTTPServer server(SERVER_PORT); - QVERIFY(server.isValid()); + TestHTTPServer server; + QVERIFY2(server.listen(SERVER_PORT), qPrintable(server.errorString())); QVERIFY(server.wait(testFileUrl("getResponseHeader.expect"), testFileUrl("getResponseHeader.reply"), testFileUrl("testdocument.html"))); @@ -754,8 +753,8 @@ void tst_qqmlxmlhttprequest::status() QFETCH(QUrl, replyUrl); QFETCH(int, status); - TestHTTPServer server(SERVER_PORT); - QVERIFY(server.isValid()); + TestHTTPServer server; + QVERIFY2(server.listen(SERVER_PORT), qPrintable(server.errorString())); QVERIFY(server.wait(testFileUrl("status.expect"), replyUrl, testFileUrl("testdocument.html"))); @@ -793,8 +792,8 @@ void tst_qqmlxmlhttprequest::statusText() QFETCH(QUrl, replyUrl); QFETCH(QString, statusText); - TestHTTPServer server(SERVER_PORT); - QVERIFY(server.isValid()); + TestHTTPServer server; + QVERIFY2(server.listen(SERVER_PORT), qPrintable(server.errorString())); QVERIFY(server.wait(testFileUrl("status.expect"), replyUrl, testFileUrl("testdocument.html"))); @@ -833,8 +832,8 @@ void tst_qqmlxmlhttprequest::responseText() QFETCH(QUrl, bodyUrl); QFETCH(QString, responseText); - TestHTTPServer server(SERVER_PORT); - QVERIFY(server.isValid()); + TestHTTPServer server; + QVERIFY2(server.listen(SERVER_PORT), qPrintable(server.errorString())); QVERIFY(server.wait(testFileUrl("status.expect"), replyUrl, bodyUrl)); @@ -934,8 +933,8 @@ void tst_qqmlxmlhttprequest::invalidMethodUsage() void tst_qqmlxmlhttprequest::redirects() { { - TestHTTPServer server(SERVER_PORT); - QVERIFY(server.isValid()); + TestHTTPServer server; + QVERIFY2(server.listen(SERVER_PORT), qPrintable(server.errorString())); server.addRedirect("redirect.html", "http://127.0.0.1:14445/redirecttarget.html"); server.serveDirectory(dataDirectory()); @@ -951,8 +950,8 @@ void tst_qqmlxmlhttprequest::redirects() } { - TestHTTPServer server(SERVER_PORT); - QVERIFY(server.isValid()); + TestHTTPServer server; + QVERIFY2(server.listen(SERVER_PORT), qPrintable(server.errorString())); server.addRedirect("redirect.html", "http://127.0.0.1:14445/redirectmissing.html"); server.serveDirectory(dataDirectory()); @@ -968,8 +967,8 @@ void tst_qqmlxmlhttprequest::redirects() } { - TestHTTPServer server(SERVER_PORT); - QVERIFY(server.isValid()); + TestHTTPServer server; + QVERIFY2(server.listen(SERVER_PORT), qPrintable(server.errorString())); server.addRedirect("redirect.html", "http://127.0.0.1:14445/redirect.html"); server.serveDirectory(dataDirectory()); @@ -1070,8 +1069,8 @@ void tst_qqmlxmlhttprequest::stateChangeCallingContext() // ensure that we don't crash by attempting to evaluate // without a valid calling context. - TestHTTPServer server(SERVER_PORT); - QVERIFY(server.isValid()); + TestHTTPServer server; + QVERIFY2(server.listen(SERVER_PORT), qPrintable(server.errorString())); server.serveDirectory(dataDirectory(), TestHTTPServer::Delay); QQmlComponent component(&engine, testFileUrl("stateChangeCallingContext.qml")); diff --git a/tests/auto/quick/qquickanimatedimage/tst_qquickanimatedimage.cpp b/tests/auto/quick/qquickanimatedimage/tst_qquickanimatedimage.cpp index d10963b..49bbb3a 100644 --- a/tests/auto/quick/qquickanimatedimage/tst_qquickanimatedimage.cpp +++ b/tests/auto/quick/qquickanimatedimage/tst_qquickanimatedimage.cpp @@ -259,8 +259,8 @@ void tst_qquickanimatedimage::remote() QFETCH(QString, fileName); QFETCH(bool, paused); - TestHTTPServer server(14449); - QVERIFY(server.isValid()); + TestHTTPServer server; + QVERIFY2(server.listen(14449), qPrintable(server.errorString())); server.serveDirectory(dataDirectory()); QQmlEngine engine; @@ -324,8 +324,8 @@ void tst_qquickanimatedimage::invalidSource() void tst_qquickanimatedimage::sourceSizeChanges() { - TestHTTPServer server(14449); - QVERIFY(server.isValid()); + TestHTTPServer server; + QVERIFY2(server.listen(14449), qPrintable(server.errorString())); server.serveDirectory(dataDirectory()); QQmlEngine engine; @@ -390,8 +390,8 @@ void tst_qquickanimatedimage::sourceSizeChanges() void tst_qquickanimatedimage::qtbug_16520() { - TestHTTPServer server(14449); - QVERIFY(server.isValid()); + TestHTTPServer server; + QVERIFY2(server.listen(14449), qPrintable(server.errorString())); server.serveDirectory(dataDirectory()); QQmlEngine engine; @@ -413,8 +413,8 @@ void tst_qquickanimatedimage::qtbug_16520() void tst_qquickanimatedimage::progressAndStatusChanges() { - TestHTTPServer server(14449); - QVERIFY(server.isValid()); + TestHTTPServer server; + QVERIFY2(server.listen(14449), qPrintable(server.errorString())); server.serveDirectory(dataDirectory()); QQmlEngine engine; diff --git a/tests/auto/quick/qquickborderimage/tst_qquickborderimage.cpp b/tests/auto/quick/qquickborderimage/tst_qquickborderimage.cpp index 4e7b652..c02a5c7 100644 --- a/tests/auto/quick/qquickborderimage/tst_qquickborderimage.cpp +++ b/tests/auto/quick/qquickborderimage/tst_qquickborderimage.cpp @@ -143,11 +143,10 @@ void tst_qquickborderimage::imageSource() QFETCH(bool, remote); QFETCH(QString, error); - TestHTTPServer *server = 0; + TestHTTPServer server; if (remote) { - server = new TestHTTPServer(SERVER_PORT); - QVERIFY(server->isValid()); - server->serveDirectory(dataDirectory()); + QVERIFY2(server.listen(SERVER_PORT), qPrintable(server.errorString())); + server.serveDirectory(dataDirectory()); } if (!error.isEmpty()) @@ -177,7 +176,6 @@ void tst_qquickborderimage::imageSource() } delete obj; - delete server; } void tst_qquickborderimage::clearSource() @@ -292,11 +290,11 @@ void tst_qquickborderimage::sciSource() QFETCH(bool, valid); bool remote = source.startsWith("http"); - TestHTTPServer *server = 0; + + TestHTTPServer server; if (remote) { - server = new TestHTTPServer(SERVER_PORT); - QVERIFY(server->isValid()); - server->serveDirectory(dataDirectory()); + QVERIFY2(server.listen(SERVER_PORT), qPrintable(server.errorString())); + server.serveDirectory(dataDirectory()); } QString componentStr = "import QtQuick 2.0\nBorderImage { source: \"" + source + "\"; width: 300; height: 300 }"; @@ -325,7 +323,6 @@ void tst_qquickborderimage::sciSource() } delete obj; - delete server; } void tst_qquickborderimage::sciSource_data() @@ -435,11 +432,10 @@ void tst_qquickborderimage::statusChanges() QFETCH(bool, remote); QFETCH(QQuickImageBase::Status, finalStatus); - TestHTTPServer *server = 0; + TestHTTPServer server; if (remote) { - server = new TestHTTPServer(SERVER_PORT); - QVERIFY(server->isValid()); - server->serveDirectory(dataDirectory(), TestHTTPServer::Delay); + QVERIFY2(server.listen(SERVER_PORT), qPrintable(server.errorString())); + server.serveDirectory(dataDirectory()); } QString componentStr = "import QtQuick 2.0\nBorderImage { width: 300; height: 300 }"; @@ -452,18 +448,17 @@ void tst_qquickborderimage::statusChanges() QVERIFY(obj != 0); obj->setSource(source); if (remote) - server->sendDelayedItem(); + server.sendDelayedItem(); QTRY_VERIFY(obj->status() == finalStatus); QCOMPARE(spy.count(), emissions); delete obj; - delete server; } void tst_qquickborderimage::sourceSizeChanges() { - TestHTTPServer server(14449); - QVERIFY(server.isValid()); + TestHTTPServer server; + QVERIFY2(server.listen(14449), qPrintable(server.errorString())); server.serveDirectory(dataDirectory()); QQmlEngine engine; @@ -528,8 +523,8 @@ void tst_qquickborderimage::sourceSizeChanges() void tst_qquickborderimage::progressAndStatusChanges() { - TestHTTPServer server(14449); - QVERIFY(server.isValid()); + TestHTTPServer server; + QVERIFY2(server.listen(14449), qPrintable(server.errorString())); server.serveDirectory(dataDirectory()); QQmlEngine engine; diff --git a/tests/auto/quick/qquickfontloader/tst_qquickfontloader.cpp b/tests/auto/quick/qquickfontloader/tst_qquickfontloader.cpp index bcb496e..5c2bbf1 100644 --- a/tests/auto/quick/qquickfontloader/tst_qquickfontloader.cpp +++ b/tests/auto/quick/qquickfontloader/tst_qquickfontloader.cpp @@ -75,8 +75,7 @@ private: TestHTTPServer server; }; -tst_qquickfontloader::tst_qquickfontloader() : - server(SERVER_PORT) +tst_qquickfontloader::tst_qquickfontloader() { } @@ -84,7 +83,7 @@ void tst_qquickfontloader::initTestCase() { QQmlDataTest::initTestCase(); server.serveDirectory(dataDirectory()); - QVERIFY(server.isValid()); + QVERIFY2(server.listen(SERVER_PORT), qPrintable(server.errorString())); } void tst_qquickfontloader::noFont() diff --git a/tests/auto/quick/qquickimage/tst_qquickimage.cpp b/tests/auto/quick/qquickimage/tst_qquickimage.cpp index b23591b..b73dcdf 100644 --- a/tests/auto/quick/qquickimage/tst_qquickimage.cpp +++ b/tests/auto/quick/qquickimage/tst_qquickimage.cpp @@ -176,9 +176,9 @@ void tst_qquickimage::imageSource() QFETCH(bool, cache); QFETCH(QString, error); - TestHTTPServer server(SERVER_PORT); + TestHTTPServer server; if (remote) { - QVERIFY(server.isValid()); + QVERIFY2(server.listen(SERVER_PORT), qPrintable(server.errorString())); server.serveDirectory(dataDirectory()); server.addRedirect("oldcolors.png", SERVER_ADDR "/colors.png"); } @@ -524,8 +524,8 @@ void tst_qquickimage::noLoading() { qRegisterMetaType(); - TestHTTPServer server(SERVER_PORT); - QVERIFY(server.isValid()); + TestHTTPServer server; + QVERIFY2(server.listen(SERVER_PORT), qPrintable(server.errorString())); server.serveDirectory(dataDirectory()); server.addRedirect("oldcolors.png", SERVER_ADDR "/colors.png"); @@ -685,8 +685,8 @@ void tst_qquickimage::nullPixmapPaint() void tst_qquickimage::imageCrash_QTBUG_22125() { - TestHTTPServer server(SERVER_PORT); - QVERIFY(server.isValid()); + TestHTTPServer server; + QVERIFY2(server.listen(SERVER_PORT), qPrintable(server.errorString())); server.serveDirectory(dataDirectory(), TestHTTPServer::Delay); { @@ -756,8 +756,8 @@ void tst_qquickimage::sourceSize() void tst_qquickimage::sourceSizeChanges() { - TestHTTPServer server(14449); - QVERIFY(server.isValid()); + TestHTTPServer server; + QVERIFY2(server.listen(14449), qPrintable(server.errorString())); server.serveDirectory(dataDirectory()); QQmlEngine engine; @@ -822,8 +822,8 @@ void tst_qquickimage::sourceSizeChanges() void tst_qquickimage::progressAndStatusChanges() { - TestHTTPServer server(14449); - QVERIFY(server.isValid()); + TestHTTPServer server; + QVERIFY2(server.listen(14449), qPrintable(server.errorString())); server.serveDirectory(dataDirectory()); QQmlEngine engine; diff --git a/tests/auto/quick/qquickloader/tst_qquickloader.cpp b/tests/auto/quick/qquickloader/tst_qquickloader.cpp index 877bb59..9ac2663 100644 --- a/tests/auto/quick/qquickloader/tst_qquickloader.cpp +++ b/tests/auto/quick/qquickloader/tst_qquickloader.cpp @@ -446,8 +446,8 @@ void tst_QQuickLoader::noResize() void tst_QQuickLoader::networkRequestUrl() { - TestHTTPServer server(SERVER_PORT); - QVERIFY(server.isValid()); + TestHTTPServer server; + QVERIFY2(server.listen(SERVER_PORT), qPrintable(server.errorString())); server.serveDirectory(dataDirectory()); QQmlComponent component(&engine); @@ -470,8 +470,8 @@ void tst_QQuickLoader::networkRequestUrl() /* XXX Component waits until all dependencies are loaded. Is this actually possible? */ void tst_QQuickLoader::networkComponent() { - TestHTTPServer server(SERVER_PORT); - QVERIFY(server.isValid()); + TestHTTPServer server; + QVERIFY2(server.listen(SERVER_PORT), qPrintable(server.errorString())); server.serveDirectory(dataDirectory(), TestHTTPServer::Delay); QQmlComponent component(&engine); @@ -503,8 +503,8 @@ void tst_QQuickLoader::networkComponent() void tst_QQuickLoader::failNetworkRequest() { - TestHTTPServer server(SERVER_PORT); - QVERIFY(server.isValid()); + TestHTTPServer server; + QVERIFY2(server.listen(SERVER_PORT), qPrintable(server.errorString())); server.serveDirectory(dataDirectory()); QTest::ignoreMessage(QtWarningMsg, SERVER_ADDR "/IDontExist.qml: File not found"); @@ -718,8 +718,8 @@ void tst_QQuickLoader::initialPropertyValues() QFETCH(QStringList, propertyNames); QFETCH(QVariantList, propertyValues); - TestHTTPServer server(SERVER_PORT); - QVERIFY(server.isValid()); + TestHTTPServer server; + QVERIFY2(server.listen(SERVER_PORT), qPrintable(server.errorString())); server.serveDirectory(dataDirectory()); foreach (const QString &warning, expectedWarnings) diff --git a/tests/auto/quick/qquickpixmapcache/tst_qquickpixmapcache.cpp b/tests/auto/quick/qquickpixmapcache/tst_qquickpixmapcache.cpp index 75bd468..f104154 100644 --- a/tests/auto/quick/qquickpixmapcache/tst_qquickpixmapcache.cpp +++ b/tests/auto/quick/qquickpixmapcache/tst_qquickpixmapcache.cpp @@ -59,7 +59,7 @@ class tst_qquickpixmapcache : public QQmlDataTest { Q_OBJECT public: - tst_qquickpixmapcache() : server(14452) {} + tst_qquickpixmapcache() {} private slots: void initTestCase(); @@ -116,6 +116,8 @@ void tst_qquickpixmapcache::initTestCase() { QQmlDataTest::initTestCase(); + QVERIFY2(server.listen(14452), qPrintable(server.errorString())); + // This avoids a race condition/deadlock bug in network config // manager when it is accessed by the HTTP server thread before // anything else. Bug report can be found at: @@ -379,7 +381,8 @@ void tst_qquickpixmapcache::shrinkcache() void createNetworkServer() { QEventLoop eventLoop; - TestHTTPServer server(14453); + TestHTTPServer server; + QVERIFY2(server.listen(14453), qPrintable(server.errorString())); server.serveDirectory(QQmlDataTest::instance()->testFile("http")); QTimer::singleShot(100, &eventLoop, SLOT(quit())); eventLoop.exec(); @@ -407,7 +410,8 @@ void tst_qquickpixmapcache::networkCrash() // QTBUG-22125 void tst_qquickpixmapcache::lockingCrash() { - TestHTTPServer server(14453); + TestHTTPServer server; + QVERIFY2(server.listen(14453), qPrintable(server.errorString())); server.serveDirectory(testFile("http"), TestHTTPServer::Delay); { diff --git a/tests/auto/quick/qquicktext/tst_qquicktext.cpp b/tests/auto/quick/qquicktext/tst_qquicktext.cpp index 0b69981..3859fa8 100644 --- a/tests/auto/quick/qquicktext/tst_qquicktext.cpp +++ b/tests/auto/quick/qquicktext/tst_qquicktext.cpp @@ -2022,7 +2022,8 @@ void tst_qquicktext::embeddedImages() QFETCH(QUrl, qmlfile); QFETCH(QString, error); - TestHTTPServer server(SERVER_PORT); + TestHTTPServer server; + QVERIFY2(server.listen(SERVER_PORT), qPrintable(server.errorString())); server.serveDirectory(testFile("http")); if (!error.isEmpty()) @@ -2760,7 +2761,8 @@ void tst_qquicktext::imgTagsBaseUrl() QFETCH(QUrl, contextUrl); QFETCH(qreal, imgHeight); - TestHTTPServer server(SERVER_PORT); + TestHTTPServer server; + QVERIFY2(server.listen(SERVER_PORT), qPrintable(server.errorString())); server.serveDirectory(testFile("")); QByteArray baseUrlFragment; diff --git a/tests/auto/quick/qquicktextedit/tst_qquicktextedit.cpp b/tests/auto/quick/qquicktextedit/tst_qquicktextedit.cpp index 91a6886..3bf8725 100644 --- a/tests/auto/quick/qquicktextedit/tst_qquicktextedit.cpp +++ b/tests/auto/quick/qquicktextedit/tst_qquicktextedit.cpp @@ -2603,7 +2603,8 @@ void tst_qquicktextedit::cursorDelegate() void tst_qquicktextedit::remoteCursorDelegate() { - TestHTTPServer server(SERVER_PORT); + TestHTTPServer server; + QVERIFY2(server.listen(SERVER_PORT), qPrintable(server.errorString())); server.serveDirectory(dataDirectory(), TestHTTPServer::Delay); QQuickView view; @@ -2740,7 +2741,8 @@ void tst_qquicktextedit::delegateLoading() QFETCH(QString, qmlfile); QFETCH(QString, error); - TestHTTPServer server(SERVER_PORT); + TestHTTPServer server; + QVERIFY2(server.listen(SERVER_PORT), qPrintable(server.errorString())); server.serveDirectory(testFile("httpfail"), TestHTTPServer::Disconnect); server.serveDirectory(testFile("httpslow"), TestHTTPServer::Delay); server.serveDirectory(testFile("http")); @@ -5214,7 +5216,8 @@ void tst_qquicktextedit::embeddedImages() QFETCH(QUrl, qmlfile); QFETCH(QString, error); - TestHTTPServer server(SERVER_PORT); + TestHTTPServer server; + QVERIFY2(server.listen(SERVER_PORT), qPrintable(server.errorString())); server.serveDirectory(testFile("http")); if (!error.isEmpty()) diff --git a/tests/auto/quick/qquicktextinput/tst_qquicktextinput.cpp b/tests/auto/quick/qquicktextinput/tst_qquicktextinput.cpp index 273c0de..05cf0b9 100644 --- a/tests/auto/quick/qquicktextinput/tst_qquicktextinput.cpp +++ b/tests/auto/quick/qquicktextinput/tst_qquicktextinput.cpp @@ -2853,7 +2853,8 @@ void tst_qquicktextinput::cursorDelegate() void tst_qquicktextinput::remoteCursorDelegate() { - TestHTTPServer server(SERVER_PORT); + TestHTTPServer server; + QVERIFY2(server.listen(SERVER_PORT), qPrintable(server.errorString())); server.serveDirectory(dataDirectory(), TestHTTPServer::Delay); QQuickView view; diff --git a/tests/auto/shared/testhttpserver.cpp b/tests/auto/shared/testhttpserver.cpp index d3de584..231f22b 100644 --- a/tests/auto/shared/testhttpserver.cpp +++ b/tests/auto/shared/testhttpserver.cpp @@ -71,7 +71,8 @@ slowFiles/slowMain.qml \endcode it can be added like this: \code -TestHTTPServer server(14445); +TestHTTPServer server; +QVERIFY2(server.listen(14445), qPrintable(server.errorString())); server.serveDirectory("disconnect", TestHTTPServer::Disconnect); server.serveDirectory("files"); server.serveDirectory("slowFiles", TestHTTPServer::Delay); @@ -87,17 +88,21 @@ The following request urls will then result in the appropriate action: \row \li http://localhost:14445/slowMain.qml \li slowMain.qml returned after 500ms \endtable */ -TestHTTPServer::TestHTTPServer(quint16 port) +TestHTTPServer::TestHTTPServer() : m_state(AwaitingHeader) { QObject::connect(&server, SIGNAL(newConnection()), this, SLOT(newConnection())); - server.listen(QHostAddress::LocalHost, port); } -bool TestHTTPServer::isValid() const +bool TestHTTPServer::listen(quint16 port) { - return server.isListening(); + return server.listen(QHostAddress::LocalHost, port); +} + +QString TestHTTPServer::errorString() const +{ + return server.errorString(); } bool TestHTTPServer::serveDirectory(const QString &dir, Mode mode) diff --git a/tests/auto/shared/testhttpserver.h b/tests/auto/shared/testhttpserver.h index ae7d137..a71386d 100644 --- a/tests/auto/shared/testhttpserver.h +++ b/tests/auto/shared/testhttpserver.h @@ -51,9 +51,10 @@ class TestHTTPServer : public QObject { Q_OBJECT public: - TestHTTPServer(quint16 port); + TestHTTPServer(); - bool isValid() const; + bool listen(quint16 port); + QString errorString() const; enum Mode { Normal, Delay, Disconnect }; bool serveDirectory(const QString &, Mode = Normal); diff --git a/tests/manual/httpserver/main.cpp b/tests/manual/httpserver/main.cpp index ea72954..4ad4450 100644 --- a/tests/manual/httpserver/main.cpp +++ b/tests/manual/httpserver/main.cpp @@ -112,7 +112,11 @@ int main(int argc, char *argv[]) << "\":\n\n" << QDir(directory).entryList(QDir::Files).join(QLatin1Char('\n')) << "\n\non http://localhost:" << port << '\n'; - TestHTTPServer server(port); + TestHTTPServer server; + if (!server.listen(port)) { + std::wcout << "Couldn't listen on port " << port << server.errorString().toLocal8Bit(); + exit(-1); + } server.serveDirectory(directory); return a.exec(); -- 2.7.4