summaryrefslogtreecommitdiffstats
path: root/tests/auto
diff options
context:
space:
mode:
Diffstat (limited to 'tests/auto')
-rw-r--r--tests/auto/network/access/qnetworkreply/tst_qnetworkreply.cpp40
1 files changed, 40 insertions, 0 deletions
diff --git a/tests/auto/network/access/qnetworkreply/tst_qnetworkreply.cpp b/tests/auto/network/access/qnetworkreply/tst_qnetworkreply.cpp
index 11ea8aebc8..fbac7dc77c 100644
--- a/tests/auto/network/access/qnetworkreply/tst_qnetworkreply.cpp
+++ b/tests/auto/network/access/qnetworkreply/tst_qnetworkreply.cpp
@@ -177,6 +177,7 @@ public Q_SLOTS:
void authenticationRequired(QNetworkReply*,QAuthenticator*);
void proxyAuthenticationRequired(const QNetworkProxy &,QAuthenticator*);
void pipeliningHelperSlot();
+ void emitErrorForAllRepliesSlot();
#ifndef QT_NO_SSL
void sslErrors(QNetworkReply*,const QList<QSslError> &);
@@ -449,6 +450,8 @@ private Q_SLOTS:
void ftpAuthentication_data();
void ftpAuthentication();
+ void emitErrorForAllReplies(); // QTBUG-36890
+
#ifdef QT_BUILD_INTERNAL
void backgroundRequest_data();
void backgroundRequest();
@@ -7465,6 +7468,12 @@ void tst_QNetworkReply::pipeliningHelperSlot() {
}
}
+void tst_QNetworkReply::emitErrorForAllRepliesSlot() {
+ static int a = 0;
+ if (++a == 3)
+ QTestEventLoop::instance().exitLoop();
+}
+
void tst_QNetworkReply::closeDuringDownload_data()
{
QTest::addColumn<QUrl>("url");
@@ -7513,6 +7522,37 @@ void tst_QNetworkReply::ftpAuthentication()
QCOMPARE(reply->error(), QNetworkReply::NetworkError(error));
}
+void tst_QNetworkReply::emitErrorForAllReplies() // QTBUG-36890
+{
+ // port 100 is not well-known and should be closed
+ QList<QUrl> urls = QList<QUrl>() << QUrl("http://localhost:100/request1")
+ << QUrl("http://localhost:100/request2")
+ << QUrl("http://localhost:100/request3");
+ QList<QNetworkReply *> replies;
+ QList<QSignalSpy *> errorSpies;
+ QList<QSignalSpy *> finishedSpies;
+ for (int a = 0; a < urls.count(); ++a) {
+ QNetworkRequest request(urls.at(a));
+ QNetworkReply *reply = manager.get(request);
+ replies.append(reply);
+ QSignalSpy *errorSpy = new QSignalSpy(reply, SIGNAL(error(QNetworkReply::NetworkError)));
+ errorSpies.append(errorSpy);
+ QSignalSpy *finishedSpy = new QSignalSpy(reply, SIGNAL(finished()));
+ finishedSpies.append(finishedSpy);
+ QObject::connect(reply, SIGNAL(finished()), SLOT(emitErrorForAllRepliesSlot()));
+ }
+ QTestEventLoop::instance().enterLoop(10);
+ QVERIFY(!QTestEventLoop::instance().timeout());
+ for (int a = 0; a < urls.count(); ++a) {
+ QVERIFY(replies.at(a)->isFinished());
+ QCOMPARE(errorSpies.at(a)->count(), 1);
+ errorSpies.at(a)->deleteLater();
+ QCOMPARE(finishedSpies.at(a)->count(), 1);
+ finishedSpies.at(a)->deleteLater();
+ replies.at(a)->deleteLater();
+ }
+}
+
#ifdef QT_BUILD_INTERNAL
void tst_QNetworkReply::backgroundRequest_data()
{