Skip to content
This repository was archived by the owner on Mar 20, 2025. It is now read-only.

Commit d782d6f

Browse files
committed
tests: util: Re-write XML for comparison instead of str replacement
1 parent 03df550 commit d782d6f

File tree

2 files changed

+28
-2
lines changed

2 files changed

+28
-2
lines changed

tests/TestClient.h

+5-2
Original file line numberDiff line numberDiff line change
@@ -43,11 +43,14 @@ class TestClient : public QXmppClient
4343
QCoreApplication::processEvents();
4444
resetIdCount();
4545
}
46-
4746
void expect(QString &&packet)
4847
{
4948
QVERIFY2(!m_sentPackets.empty(), "No packet was sent!");
50-
QCOMPARE(m_sentPackets.takeFirst().replace(u'\'', u'"'), packet.replace(u'\'', u'"'));
49+
50+
auto expectedXml = rewriteXml(packet);
51+
auto actualXml = rewriteXml(m_sentPackets.takeFirst());
52+
QCOMPARE(actualXml, expectedXml);
53+
5154
resetIdCount();
5255
}
5356
QString takePacket()

tests/util.h

+23
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,29 @@ inline QDomElement xmlToDom(const String &xml)
5151
return doc.documentElement();
5252
}
5353

54+
template<typename String>
55+
QString rewriteXml(const String &inputXml)
56+
{
57+
QString outputXml;
58+
QXmlStreamReader reader(inputXml);
59+
QXmlStreamWriter writer(&outputXml);
60+
while (reader.readNext() != QXmlStreamReader::EndDocument) {
61+
if (reader.hasError()) {
62+
qDebug() << "Parsing error:";
63+
qDebug().noquote() << inputXml;
64+
qDebug().noquote() << reader.error() << reader.errorString();
65+
throw std::exception();
66+
}
67+
68+
// do not generate '<?xml version="1.0"?>'
69+
if (reader.tokenType() == QXmlStreamReader::StartDocument) {
70+
continue;
71+
}
72+
writer.writeCurrentToken(reader);
73+
}
74+
return outputXml;
75+
}
76+
5477
template<typename T>
5578
static QByteArray packetToXml(const T &packet)
5679
{

0 commit comments

Comments
 (0)