bool XmlConfigurationConverter::updateDocument(XmlDocument* document, std::string dtd, const Version& version, std::string rootElementName) { // update root element name XmlElement* root = document->getRootElement(); if (!root) { return false; } // if root->setName(rootElementName); // update version entry in root element if (root->hasAttribute("version")) { root->getAttribute("version")->setValue(version.toString()); } // if else { XmlAttribute* versionAttribute = new XmlAttribute("version", version.toString()); root->addAttribute(versionAttribute); } // else // update dtd reference XmlDtdReference* dtdRef = document->getDtd(); if (!dtdRef) { dtdRef = new XmlDtdReference(rootElementName, dtd); document->setDtd(dtdRef); } else { dtdRef->setName(rootElementName); dtdRef->setDtd(dtd); } // else return true; } // updateRootElement
void XmlOutputter::addSuccessfulTest( Test *test, int testNumber, XmlElement *testsNode ) { XmlElement *testElement = new XmlElement( "Test" ); testsNode->addElement( testElement ); testElement->addAttribute( "id", testNumber ); testElement->addElement( new XmlElement( "Name", test->getName() ) ); for ( Hooks::iterator it = m_hooks.begin(); it != m_hooks.end(); ++it ) (*it)->successfulTestAdded( m_xml, testElement, test ); }
void XmlOutputter::addFailedTest( Test *test, TestFailure *failure, int testNumber, XmlElement *testsNode ) { Exception *thrownException = failure->thrownException(); XmlElement *testElement = new XmlElement( "FailedTest" ); testsNode->addElement( testElement ); testElement->addAttribute( "id", testNumber ); testElement->addElement( new XmlElement( "Name", test->getName() ) ); testElement->addElement( new XmlElement( "FailureType", failure->isError() ? "Error" : "Assertion" ) ); if ( failure->sourceLine().isValid() ) addFailureLocation( failure, testElement ); testElement->addElement( new XmlElement( "Message", thrownException->what() ) ); for ( Hooks::iterator it = m_hooks.begin(); it != m_hooks.end(); ++it ) (*it)->failTestAdded( m_xml, testElement, test, failure ); }