Skip to content

Commit 83cbae4

Browse files
committed
test
1 parent b2d8361 commit 83cbae4

2 files changed

Lines changed: 51 additions & 0 deletions

File tree

‎gui/test/xmlreportv2/testxmlreportv2.cpp‎

Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,9 @@
2121
#include "erroritem.h"
2222
#include "xmlreportv2.h"
2323

24+
#include <QFile>
2425
#include <QList>
26+
#include <QTemporaryDir>
2527
#include <QtTest>
2628

2729
void TestXmlReportV2::readXml() const
@@ -53,4 +55,52 @@ void TestXmlReportV2::readXml() const
5355
QCOMPARE(item2.message, QString("Mismatching allocation and deallocation: k"));
5456
}
5557

58+
void TestXmlReportV2::writeXmlEscaping() const
59+
{
60+
QTemporaryDir tmpdir;
61+
const QString path = tmpdir.path() + "/results.xml";
62+
63+
ErrorItem item;
64+
item.errorId = "unusedVariable";
65+
item.severity = Severity::style;
66+
item.summary = "Unused variable: \"x\" & <y>";
67+
item.message = item.summary;
68+
69+
QErrorPathItem loc;
70+
loc.file = "test.cpp";
71+
loc.line = 1;
72+
loc.column = 1;
73+
loc.info = item.summary;
74+
item.errorPath << loc;
75+
loc.line = 2;
76+
item.errorPath << loc;
77+
78+
{
79+
XmlReportV2 report(path, QString());
80+
QVERIFY(report.create());
81+
report.writeHeader();
82+
report.writeError(item);
83+
report.writeFooter();
84+
}
85+
86+
// Each special character must be escaped exactly once
87+
QFile file(path);
88+
QVERIFY(file.open(QIODevice::ReadOnly));
89+
90+
const QString xml = QString::fromUtf8(file.readAll());
91+
QVERIFY(xml.contains("msg=\"Unused variable: &quot;x&quot; &amp; &lt;y&gt;\""));
92+
QVERIFY(xml.contains("info=\"Unused variable: &quot;x&quot; &amp; &lt;y&gt;\""));
93+
QVERIFY(!xml.contains("&amp;quot;"));
94+
95+
XmlReportV2 report(path, QString());
96+
QVERIFY(report.open());
97+
98+
const QList<ErrorItem> errors = report.read();
99+
QCOMPARE(errors.size(), 1);
100+
QCOMPARE(errors[0].summary, item.summary);
101+
QCOMPARE(errors[0].message, item.message);
102+
QCOMPARE(errors[0].errorPath.size(), 2);
103+
QCOMPARE(errors[0].errorPath[0].info, item.summary);
104+
}
105+
56106
QTEST_MAIN(TestXmlReportV2)

‎gui/test/xmlreportv2/testxmlreportv2.h‎

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,4 +23,5 @@ class TestXmlReportV2 : public QObject {
2323

2424
private slots:
2525
void readXml() const;
26+
void writeXmlEscaping() const;
2627
};

0 commit comments

Comments
 (0)