|
21 | 21 | #include "erroritem.h" |
22 | 22 | #include "xmlreportv2.h" |
23 | 23 |
|
| 24 | +#include <QFile> |
24 | 25 | #include <QList> |
| 26 | +#include <QTemporaryDir> |
25 | 27 | #include <QtTest> |
26 | 28 |
|
27 | 29 | void TestXmlReportV2::readXml() const |
@@ -53,4 +55,39 @@ void TestXmlReportV2::readXml() const |
53 | 55 | QCOMPARE(item2.message, QString("Mismatching allocation and deallocation: k")); |
54 | 56 | } |
55 | 57 |
|
| 58 | +void TestXmlReportV2::writeXmlEscaping() const |
| 59 | +{ |
| 60 | + QTemporaryDir dir; |
| 61 | + const QString path = dir.path() + "/results.xml"; |
| 62 | + |
| 63 | + ErrorItem item; |
| 64 | + item.errorId = "id"; |
| 65 | + item.severity = Severity::style; |
| 66 | + item.summary = "\"x\" & <y> ""; |
| 67 | + item.message = item.summary; |
| 68 | + QErrorPathItem loc; |
| 69 | + loc.file = "a&b.cpp"; |
| 70 | + loc.line = 1; |
| 71 | + item.errorPath << loc; |
| 72 | + { |
| 73 | + XmlReportV2 report(path, QString()); |
| 74 | + QVERIFY(report.create()); |
| 75 | + report.writeHeader(); |
| 76 | + report.writeError(item); |
| 77 | + report.writeFooter(); |
| 78 | + } |
| 79 | + |
| 80 | + QFile file(path); |
| 81 | + QVERIFY(file.open(QIODevice::ReadOnly)); |
| 82 | + QVERIFY(file.readAll().contains("msg=\""x" & <y> &quot;\"")); |
| 83 | + |
| 84 | + XmlReportV2 report(path, QString()); |
| 85 | + QVERIFY(report.open()); |
| 86 | + const QList<ErrorItem> errors = report.read(); |
| 87 | + QCOMPARE(errors.size(), 1); |
| 88 | + QCOMPARE(errors[0].summary, item.summary); |
| 89 | + QCOMPARE(errors[0].message, item.message); |
| 90 | + QCOMPARE(errors[0].errorPath[0].file, loc.file); |
| 91 | +} |
| 92 | + |
56 | 93 | QTEST_MAIN(TestXmlReportV2) |
0 commit comments