From 89dcdaeedf0e42e99ccc1d44183e1fbaccc40bb1 Mon Sep 17 00:00:00 2001 From: Kurt Pattyn Date: Sun, 9 Mar 2014 11:05:36 +0100 Subject: [PATCH] Return correct error string for known socket errors Task-number: QTBUG-37228 Change-Id: I246b858694ea456bce9a0fc4ac963a83502fd058 Reviewed-by: Kurt Pattyn --- src/websockets/qwebsocket_p.cpp | 2 +- tests/auto/qwebsocket/tst_qwebsocket.cpp | 42 +++++++++++++++++++++++++++----- 2 files changed, 37 insertions(+), 7 deletions(-) diff --git a/src/websockets/qwebsocket_p.cpp b/src/websockets/qwebsocket_p.cpp index be589db..c51ba38 100644 --- a/src/websockets/qwebsocket_p.cpp +++ b/src/websockets/qwebsocket_p.cpp @@ -92,7 +92,7 @@ QWebSocketPrivate::QWebSocketPrivate(const QString &origin, QWebSocketProtocol:: QObjectPrivate(), q_ptr(pWebSocket), m_pSocket(), - m_errorString(QWebSocket::tr("Unknown error")), + m_errorString(), m_version(version), m_resourceName(), m_requestUrl(), diff --git a/tests/auto/qwebsocket/tst_qwebsocket.cpp b/tests/auto/qwebsocket/tst_qwebsocket.cpp index f7f57b7..d2c5055 100644 --- a/tests/auto/qwebsocket/tst_qwebsocket.cpp +++ b/tests/auto/qwebsocket/tst_qwebsocket.cpp @@ -146,6 +146,7 @@ private Q_SLOTS: void tst_invalidOrigin(); void tst_sendTextMessage(); void tst_sendBinaryMessage(); + void tst_errorString(); }; tst_QWebSocket::tst_QWebSocket() @@ -202,8 +203,7 @@ void tst_QWebSocket::tst_initialisation() QCOMPARE(socket->origin(), expectedOrigin); QCOMPARE(socket->version(), expectedVersion); QCOMPARE(socket->error(), QAbstractSocket::UnknownSocketError); - //error string defaults to "Unknown error" (localised) - QVERIFY(!socket->errorString().isEmpty()); + QVERIFY(socket->errorString().isEmpty()); QVERIFY(!socket->isValid()); QVERIFY(socket->localAddress().isNull()); QCOMPARE(socket->localPort(), quint16(0)); @@ -298,7 +298,7 @@ void tst_QWebSocket::tst_invalidOpen() //at this point the socket is in a connecting state //so, there should no error at this point QCOMPARE(socket.error(), QAbstractSocket::UnknownSocketError); - QVERIFY(!socket.errorString().isEmpty()); + //QVERIFY(socket.errorString().isEmpty()); QVERIFY(!socket.isValid()); QVERIFY(socket.localAddress().isNull()); QCOMPARE(socket.localPort(), quint16(0)); @@ -407,11 +407,15 @@ void tst_QWebSocket::tst_invalidOrigin() void tst_QWebSocket::tst_sendTextMessage() { - //will resolve in another commit + //TODO: will resolve in another commit #ifndef Q_OS_WIN EchoServer echoServer; QWebSocket socket; + + //should return 0 because socket is not open yet + QCOMPARE(socket.sendTextMessage(QStringLiteral("1234")), 0); + QSignalSpy socketConnectedSpy(&socket, SIGNAL(connected())); QSignalSpy textMessageReceived(&socket, SIGNAL(textMessageReceived(QString))); QSignalSpy textFrameReceived(&socket, SIGNAL(textFrameReceived(QString,bool))); @@ -477,11 +481,15 @@ void tst_QWebSocket::tst_sendTextMessage() void tst_QWebSocket::tst_sendBinaryMessage() { - //will resolve in another commit + //TODO: will resolve in another commit #ifndef Q_OS_WIN EchoServer echoServer; QWebSocket socket; + + //should return 0 because socket is not open yet + QCOMPARE(socket.sendBinaryMessage(QByteArrayLiteral("1234")), 0); + QSignalSpy socketConnectedSpy(&socket, SIGNAL(connected())); QSignalSpy textMessageReceived(&socket, SIGNAL(textMessageReceived(QString))); QSignalSpy textFrameReceived(&socket, SIGNAL(textFrameReceived(QString,bool))); @@ -514,7 +522,7 @@ void tst_QWebSocket::tst_sendBinaryMessage() socket.close(); - //QTBUG-36762: QWebSocket emits multiplied signals when socket was reopened + //QTBUG-36762: QWebSocket emits multiple signals when socket is reopened socketConnectedSpy.clear(); binaryMessageReceived.clear(); binaryFrameReceived.clear(); @@ -545,6 +553,28 @@ void tst_QWebSocket::tst_sendBinaryMessage() #endif } +void tst_QWebSocket::tst_errorString() +{ + //Check for QTBUG-37228: QWebSocket returns "Unknown Error" for known errors + QWebSocket socket; + + //check that the default error string is empty + QVERIFY(socket.errorString().isEmpty()); + + QSignalSpy errorSpy(&socket, SIGNAL(error(QAbstractSocket::SocketError))); + + socket.open(QUrl(QStringLiteral("ws://someserver.on.mars:9999"))); + + if (errorSpy.count() == 0) + errorSpy.wait(); + QCOMPARE(errorSpy.count(), 1); + QList arguments = errorSpy.takeFirst(); + QAbstractSocket::SocketError socketError = + qvariant_cast(arguments.at(0)); + QCOMPARE(socketError, QAbstractSocket::HostNotFoundError); + QCOMPARE(socket.errorString(), QStringLiteral("Host not found")); +} + QTEST_MAIN(tst_QWebSocket) #include "tst_qwebsocket.moc" -- 2.7.4