Ignore:
Timestamp:
Aug 2, 2010, 9:27:30 PM (15 years ago)
Author:
Dmitry A. Kuminov
Message:

trunk: Merged in qt 4.6.3 sources from branches/vendor/nokia/qt.

Location:
trunk
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk

  • trunk/src/testlib/qtestxmlstreamer.cpp

    r651 r769  
    112112        QXmlTestLogger::xmlCdata(&cdataDesc, element->attributeValue(QTest::AI_Description));
    113113
    114         QTest::qt_asprintf(formatted, "<Message type=\"%s\" %s=\"%s\" %s=\"%s\">\n    <Description><![CDATA[%s]]></Description>\n</Message>\n",
     114        QTestCharBuffer tagbuf;
     115        if (element->attribute(QTest::AI_Tag)) {
     116            QTestCharBuffer cdataTag;
     117            QXmlTestLogger::xmlCdata(&cdataTag, element->attributeValue(QTest::AI_Tag));
     118            QTest::qt_asprintf(&tagbuf, "    <DataTag><![CDATA[%s]]></DataTag>\n", cdataTag.constData());
     119        }
     120
     121        QTest::qt_asprintf(formatted, "<Message type=\"%s\" %s=\"%s\" %s=\"%s\">\n%s    <Description><![CDATA[%s]]></Description>\n</Message>\n",
    115122                           element->attributeValue(QTest::AI_Type),
    116123                           element->attributeName(QTest::AI_File),
     
    118125                           element->attributeName(QTest::AI_Line),
    119126                           element->attributeValue(QTest::AI_Line),
     127                           tagbuf.constData(),
    120128                           cdataDesc.constData());
    121129        break;
     
    150158
    151159    if (element->elementType() == QTest::LET_TestCase) {
    152         QTest::qt_asprintf(formatted, "</TestFunction>\n");
     160        bool failed = false;
     161        for (QTestElement* child = element->childElements(); child; child = child->nextElement()) {
     162            if (   child->elementType() == QTest::LET_Failure
     163                && child->attribute(QTest::AI_Result)
     164                && (    !strcmp(child->attributeValue(QTest::AI_Result), "fail")
     165                    ||  !strcmp(child->attributeValue(QTest::AI_Result), "xpass"))
     166                )
     167            {
     168                failed = true;
     169                break;
     170            }
     171        }
     172
     173        // For passing functions, no Incident has been output yet.
     174        // For failing functions, we already output one.
     175        // Please note: we are outputting "pass" even if there was an xfail etc.
     176        // This is by design (arguably bad design, but dangerous to change now!)
     177        if (element->attribute(QTest::AI_Result) && !failed) {
     178            QTest::qt_asprintf(formatted, "<Incident type=\"pass\" file=\"\" line=\"0\" />\n</TestFunction>\n");
     179        }
     180        else {
     181            QTest::qt_asprintf(formatted, "</TestFunction>\n");
     182        }
    153183    } else {
    154184        formatted->data()[0] = '\0';
     
    158188void QTestXmlStreamer::formatBeforeAttributes(const QTestElement *element, QTestCharBuffer *formatted) const
    159189{
    160     if(!element || !formatted)
     190    Q_UNUSED(element);
     191    if (!formatted)
    161192        return;
    162193
    163     if (element->elementType() == QTest::LET_TestCase && element->attribute(QTest::AI_Result)){
    164         QTestCharBuffer buf;
    165         QTestCharBuffer quotedFile;
    166         QXmlTestLogger::xmlQuote(&quotedFile, element->attributeValue(QTest::AI_File));
    167 
    168         QTest::qt_asprintf(&buf, "%s=\"%s\" %s=\"%s\"",
    169                            element->attributeName(QTest::AI_File),
    170                            quotedFile.constData(),
    171                            element->attributeName(QTest::AI_Line),
    172                            element->attributeValue(QTest::AI_Line));
    173 
    174         if( !element->childElements() ) {
    175             QTest::qt_asprintf(formatted, "<Incident type=\"%s\" %s/>\n",
    176                                element->attributeValue(QTest::AI_Result), buf.constData());
    177         } else {
    178             formatted->data()[0] = '\0';
    179         }
    180     } else {
    181         formatted->data()[0] = '\0';
    182     }
     194    formatted->data()[0] = '\0';
    183195}
    184196
Note: See TracChangeset for help on using the changeset viewer.