aboutsummaryrefslogtreecommitdiffstats
path: root/tests/auto/shared/testhttpserver.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'tests/auto/shared/testhttpserver.cpp')
-rw-r--r--tests/auto/shared/testhttpserver.cpp53
1 files changed, 32 insertions, 21 deletions
diff --git a/tests/auto/shared/testhttpserver.cpp b/tests/auto/shared/testhttpserver.cpp
index 205d5cec5d..fd681710de 100644
--- a/tests/auto/shared/testhttpserver.cpp
+++ b/tests/auto/shared/testhttpserver.cpp
@@ -137,7 +137,19 @@ bool TestHTTPServer::wait(const QUrl &expect, const QUrl &reply, const QUrl &bod
bodyData = bodyFile.readAll();
}
- waitData = expectFile.readAll();
+ QByteArray line;
+ bool headers_done = false;
+ while (!(line = expectFile.readLine()).isEmpty()) {
+ line.replace('\r', "");
+ if (line.at(0) == '\n') {
+ headers_done = true;
+ continue;
+ }
+ if (headers_done)
+ waitData.body.append(line);
+ else
+ waitData.headers.append(line);
+ }
/*
while (waitData.endsWith('\n'))
waitData = waitData.left(waitData.count() - 1);
@@ -199,39 +211,38 @@ void TestHTTPServer::readyRead()
QTcpSocket *socket = qobject_cast<QTcpSocket *>(sender());
if (!socket || socket->state() == QTcpSocket::ClosingState) return;
- QByteArray ba = socket->readAll();
-
if (!dirs.isEmpty()) {
- serveGET(socket, ba);
+ serveGET(socket, socket->readAll());
return;
}
- if (m_hasFailed || waitData.isEmpty()) {
- qWarning() << "TestHTTPServer: Unexpected data" << ba;
+ if (m_hasFailed || (waitData.body.isEmpty() && waitData.headers.count() == 0)) {
+ qWarning() << "TestHTTPServer: Unexpected data" << socket->readAll();
return;
}
- for (int ii = 0; ii < ba.count(); ++ii) {
- const char c = ba.at(ii);
- if (c == '\r' && waitData.isEmpty())
- continue;
- else if (!waitData.isEmpty() && c == waitData.at(0))
- waitData = waitData.mid(1);
- else if (c == '\r')
- continue;
- else {
- QByteArray data = ba.mid(ii);
- qWarning() << "TestHTTPServer: Unexpected data" << data << "\nExpected: " << waitData;
+ QByteArray line;
+ while (!(line = socket->readLine()).isEmpty()) {
+ line.replace('\r', "");
+ if (line.at(0) == '\n') {
+ QByteArray data = socket->readAll();
+ if (waitData.body != data) {
+ qWarning() << "TestHTTPServer: Unexpected data" << data << "\nExpected: " << waitData.body;
+ m_hasFailed = true;
+ socket->disconnectFromHost();
+ return;
+ }
+ }
+ else if (!waitData.headers.contains(line)) {
+ qWarning() << "TestHTTPServer: Unexpected header:" << line << "\nExpected headers: " << waitData.headers;
m_hasFailed = true;
socket->disconnectFromHost();
return;
}
}
- if (waitData.isEmpty()) {
- socket->write(replyData);
- socket->disconnectFromHost();
- }
+ socket->write(replyData);
+ socket->disconnectFromHost();
}
bool TestHTTPServer::reply(QTcpSocket *socket, const QByteArray &fileName)