void QXmlTestLogger::addMessage(MessageTypes type, const QString &message, const char *file, int line) { QTestCharBuffer buf; const char *tag = QTestResult::currentDataTag(); const char *gtag = QTestResult::currentGlobalDataTag(); const char *filler = (tag && gtag) ? ":" : ""; const bool notag = QTest::isEmpty(tag) && QTest::isEmpty(gtag); QTestCharBuffer quotedFile; QTestCharBuffer cdataGtag; QTestCharBuffer cdataTag; QTestCharBuffer cdataDescription; xmlQuote("edFile, file); xmlCdata(&cdataGtag, gtag); xmlCdata(&cdataTag, tag); xmlCdata(&cdataDescription, message.toUtf8().constData()); QTest::qt_asprintf(&buf, QTest::messageFormatString(message.isEmpty(), notag), QTest::xmlMessageType2String(type), quotedFile.constData(), line, cdataGtag.constData(), filler, cdataTag.constData(), cdataDescription.constData()); outputString(buf.constData()); }
void QXmlTestLogger::addIncident(IncidentTypes type, const char *description, const char *file, int line) { QTestCharBuffer buf; const char *tag = QTestResult::currentDataTag(); const char *gtag = QTestResult::currentGlobalDataTag(); const char *filler = (tag && gtag) ? ":" : ""; const bool notag = QTest::isEmpty(tag) && QTest::isEmpty(gtag); QTestCharBuffer quotedFile; QTestCharBuffer cdataGtag; QTestCharBuffer cdataTag; QTestCharBuffer cdataDescription; xmlQuote("edFile, file); xmlCdata(&cdataGtag, gtag); xmlCdata(&cdataTag, tag); xmlCdata(&cdataDescription, description); QTest::qt_asprintf(&buf, QTest::incidentFormatString(QTest::isEmpty(description), notag), QTest::xmlIncidentType2String(type), quotedFile.constData(), line, cdataGtag.constData(), filler, cdataTag.constData(), cdataDescription.constData()); outputString(buf.constData()); }
void QXmlTestLogger::startLogging() { QAbstractTestLogger::startLogging(); QTestCharBuffer buf; if (xmlmode == QXmlTestLogger::Complete) { QTestCharBuffer quotedTc; xmlQuote("edTc, QTestResult::currentTestObjectName()); QTest::qt_asprintf(&buf, "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" "<TestCase name=\"%s\">\n", quotedTc.constData()); outputString(buf.constData()); } QTestCharBuffer quotedBuild; xmlQuote("edBuild, QLibraryInfo::build()); QTest::qt_asprintf(&buf, "<Environment>\n" " <QtVersion>%s</QtVersion>\n" " <QtBuild>%s</QtBuild>\n" " <QTestVersion>" QTEST_VERSION_STR "</QTestVersion>\n" "</Environment>\n", qVersion(), quotedBuild.constData()); outputString(buf.constData()); m_totalTime.start(); }
void QTestXmlStreamer::output(QTestElement *element) const { QTestCharBuffer buf; QTestCharBuffer quotedTc; QXmlTestLogger::xmlQuote("edTc, QTestResult::currentTestObjectName()); QTest::qt_asprintf(&buf, "<?xml version=\"1.0\" encoding=\"ISO-8859-1\"?>\n<TestCase name=\"%s\">\n", quotedTc.constData()); outputString(buf.constData()); if (logger()->hasRandomSeed()) { QTest::qt_asprintf(&buf, "<Environment>\n <QtVersion>%s</QtVersion>\n <QTestVersion>%s</QTestVersion>\n <RandomSeed>%d</RandomSeed>\n", qVersion(), QTEST_VERSION_STR, logger()->randomSeed() ); } else { QTest::qt_asprintf(&buf, "<Environment>\n <QtVersion>%s</QtVersion>\n <QTestVersion>%s</QTestVersion>\n", qVersion(), QTEST_VERSION_STR ); } outputString(buf.constData()); QTest::qt_asprintf(&buf, "</Environment>\n"); outputString(buf.constData()); QTestBasicStreamer::output(element); QTest::qt_asprintf(&buf, "</TestCase>\n"); outputString(buf.constData()); }
void QTestLightXmlStreamer::formatBeforeAttributes(const QTestElement *element, QTestCharBuffer *formatted) const { if(!element || !formatted) return; if (element->elementType() == QTest::LET_TestCase && element->attribute(QTest::AI_Result)) { QTestCharBuffer buf; QTestCharBuffer quotedFile; QXmlTestLogger::xmlQuote("edFile, element->attributeValue(QTest::AI_File)); QTest::qt_asprintf(&buf, "%s=\"%s\" %s=\"%s\"", element->attributeName(QTest::AI_File), quotedFile.constData(), element->attributeName(QTest::AI_Line), element->attributeValue(QTest::AI_Line)); if( !element->childElements() ) QTest::qt_asprintf(formatted, "<Incident type=\"%s\" %s/>\n", element->attributeValue(QTest::AI_Result), buf.constData()); else QTest::qt_asprintf(formatted, "<Incident type=\"%s\" %s>\n", element->attributeValue(QTest::AI_Result), buf.constData()); } else { formatted->data()[0] = '\0'; } }
void QXmlTestLogger::enterTestFunction(const char *function) { QTestCharBuffer buf; QTestCharBuffer quotedFunction; xmlQuote("edFunction, function); QTest::qt_asprintf(&buf, "<TestFunction name=\"%s\">\n", quotedFunction.constData()); outputString(buf.constData()); m_functionTime.start(); }
void QTestLightXmlStreamer::output(QTestElement *element) const { QTestCharBuffer buf; QTest::qt_asprintf(&buf, "<Environment>\n <QtVersion>%s</QtVersion>\n <QTestVersion>%s</QTestVersion>\n", qVersion(), QTEST_VERSION_STR ); outputString(buf.constData()); QTest::qt_asprintf(&buf, "</Environment>\n"); outputString(buf.constData()); QTestBasicStreamer::output(element); }
void QTestXunitStreamer::formatAttributes(const QTestElement* element, const QTestElementAttribute *attribute, QTestCharBuffer *formatted) const { if (!attribute || !formatted ) return; QTest::AttributeIndex attrindex = attribute->index(); // For errors within system-err, we only want to output `message' if (element && element->elementType() == QTest::LET_Error && element->parentElement()->elementType() == QTest::LET_SystemError) { if (attrindex != QTest::AI_Description) return; QXmlTestLogger::xmlCdata(formatted, attribute->value()); return; } char const* key = 0; if (attrindex == QTest::AI_Description) key = "message"; else if (attrindex != QTest::AI_File && attrindex != QTest::AI_Line) key = attribute->name(); if (key) { QTestCharBuffer quotedValue; QXmlTestLogger::xmlQuote("edValue, attribute->value()); QTest::qt_asprintf(formatted, " %s=\"%s\"", key, quotedValue.constData()); } else { formatted->data()[0] = '\0'; } }
void QTestLightXmlStreamer::output(QTestElement *element) const { QTestCharBuffer buf; if (logger()->hasRandomSeed()) { QTest::qt_asprintf(&buf, "<Environment>\n <QtVersion>%s</QtVersion>\n <QTestVersion>%s</QTestVersion>\n <RandomSeed>%d</RandomSeed>\n", qVersion(), QTEST_VERSION_STR, logger()->randomSeed() ); } else { QTest::qt_asprintf(&buf, "<Environment>\n <QtVersion>%s</QtVersion>\n <QTestVersion>%s</QTestVersion>\n", qVersion(), QTEST_VERSION_STR ); } outputString(buf.constData()); QTest::qt_asprintf(&buf, "</Environment>\n"); outputString(buf.constData()); QTestBasicStreamer::output(element); }
void QXmlTestLogger::leaveTestFunction() { QTestCharBuffer buf; QTest::qt_asprintf(&buf, " <Duration msecs=\"%f\"/>\n" "</TestFunction>\n", m_functionTime.nsecsElapsed() / 1000000.); outputString(buf.constData()); }
void QXmlTestLogger::addBenchmarkResult(const QBenchmarkResult &result) { QTestCharBuffer buf; QTestCharBuffer quotedMetric; QTestCharBuffer quotedTag; xmlQuote("edMetric, benchmarkMetricName(result.metric)); xmlQuote("edTag, result.context.tag.toUtf8().constData()); const qreal valuePerIteration = qreal(result.value) / qreal(result.iterations); QTest::qt_asprintf( &buf, QTest::benchmarkResultFormatString(), quotedMetric.constData(), quotedTag.constData(), QByteArray::number(valuePerIteration).constData(), //no 64-bit qsnprintf support result.iterations); outputString(buf.constData()); }
void QXmlTestLogger::stopLogging() { QTestCharBuffer buf; QTest::qt_asprintf(&buf, "<Duration msecs=\"%f\"/>\n", m_totalTime.nsecsElapsed() / 1000000.); outputString(buf.constData()); if (xmlmode == QXmlTestLogger::Complete) { outputString("</TestCase>\n"); } QAbstractTestLogger::stopLogging(); }
void QTestLightXmlStreamer::formatStart(const QTestElement *element, QTestCharBuffer *formatted) const { if(!element || !formatted) return; switch(element->elementType()) { case QTest::LET_TestCase: { QTestCharBuffer quotedTf; QXmlTestLogger::xmlQuote("edTf, element->attributeValue(QTest::AI_Name)); QTest::qt_asprintf(formatted, "<TestFunction name=\"%s\">\n", quotedTf.constData()); break; } case QTest::LET_Failure: { QTestCharBuffer cdataDesc; QXmlTestLogger::xmlCdata(&cdataDesc, element->attributeValue(QTest::AI_Description)); QTest::qt_asprintf(formatted, " <Description><![CDATA[%s]]></Description>\n", cdataDesc.constData()); break; } case QTest::LET_Error: { // assuming type and attribute names don't need quoting QTestCharBuffer quotedFile; QTestCharBuffer cdataDesc; QXmlTestLogger::xmlQuote("edFile, element->attributeValue(QTest::AI_File)); QXmlTestLogger::xmlCdata(&cdataDesc, element->attributeValue(QTest::AI_Description)); QTest::qt_asprintf(formatted, "<Message type=\"%s\" %s=\"%s\" %s=\"%s\">\n <Description><![CDATA[%s]]></Description>\n</Message>\n", element->attributeValue(QTest::AI_Type), element->attributeName(QTest::AI_File), quotedFile.constData(), element->attributeName(QTest::AI_Line), element->attributeValue(QTest::AI_Line), cdataDesc.constData()); break; } case QTest::LET_Benchmark: { // assuming value and iterations don't need quoting QTestCharBuffer quotedMetric; QTestCharBuffer quotedTag; QXmlTestLogger::xmlQuote("edMetric, element->attributeValue(QTest::AI_Metric)); QXmlTestLogger::xmlQuote("edTag, element->attributeValue(QTest::AI_Tag)); QTest::qt_asprintf(formatted, "<BenchmarkResult %s=\"%s\" %s=\"%s\" %s=\"%s\" %s=\"%s\" />\n", element->attributeName(QTest::AI_Metric), quotedMetric.constData(), element->attributeName(QTest::AI_Tag), quotedTag.constData(), element->attributeName(QTest::AI_Value), element->attributeValue(QTest::AI_Value), element->attributeName(QTest::AI_Iterations), element->attributeValue(QTest::AI_Iterations) ); break; } default: formatted->data()[0] = '\0'; } }
void QTestLogger::addTag(QTestElement* element) { const char *tag = QTestResult::currentDataTag(); const char *gtag = QTestResult::currentGlobalDataTag(); const char *filler = (tag && gtag) ? ":" : ""; if ((!tag || !tag[0]) && (!gtag || !gtag[0])) { return; } if (!tag) { tag = ""; } if (!gtag) { gtag = ""; } QTestCharBuffer buf; QTest::qt_asprintf(&buf, "%s%s%s", gtag, filler, tag); element->addAttribute(QTest::AI_Tag, buf.constData()); }