|
From: Owen R. <exo...@us...> - 2005-06-25 15:04:39
|
Update of /cvsroot/ccnet/ccnet/project/xsl In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv29665/project/xsl Added Files: MBUnitDetails.xsl MBUnitSummary.xsl Log Message: CCNET-344 : FilterTrigger can now handle timeranges that span over midnight -- patch contributed by Jens Hembo CCNET-462 : adding MBUnit stylesheets -- contributed by Andrew Stopford fixing namespaces for pvcs tests adding TimeOut.config example config --- NEW FILE: MBUnitDetails.xsl --- <?xml version="1.0" encoding="iso-8859-1"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <!-- format a number in to display its value in percent @param value the number to format --> <xsl:template name="display-time-second"> <xsl:param name="value"/> <span class="time"><xsl:value-of select="format-number($value,'0.00')"/>s</span> </xsl:template> <!-- format a number in to display its value in percent @param value the number to format --> <xsl:template name="display-time"> <xsl:param name="value"/> <span class="time"><xsl:value-of select="format-number($value*1000,'0.000')"/>ms</span> </xsl:template> <!-- format a number in to display its value in percent @param value the number to format --> <xsl:template name="display-percent"> <xsl:param name="value"/> <xsl:value-of select="format-number($value,'0.00 %')"/> </xsl:template> <!-- format a number in to display its value in Kb @param value the number to format --> <xsl:template name="display-memory"> <xsl:param name="value"/> <xsl:variable name="kbvalue"> <xsl:value-of select="$value * 0.0001"/> </xsl:variable> <xsl:value-of select="format-number($kbvalue,'0.00 Kb')"/> </xsl:template> <!-- template that will convert a carriage return into a br tag @param word the text from which to convert CR to BR tag --> <xsl:template name="br-replace"> <xsl:param name="word"/> <xsl:choose> <xsl:when test="contains($word,'
')"> <xsl:value-of select="substring-before($word,'
')"/> <br/> <xsl:call-template name="br-replace"> <xsl:with-param name="word" select="substring-after($word,'
')"/> </xsl:call-template> </xsl:when> <xsl:otherwise> <xsl:value-of select="$word"/> </xsl:otherwise> </xsl:choose> </xsl:template> <!-- Scales value --> <xsl:template name="scale"> <xsl:param name="origLength"/> <xsl:param name="targetLength"/> <xsl:param name="value"/> <xsl:value-of select="($value div $origLength) * $targetLength"/> </xsl:template> <!-- Graphical result bar --> <xsl:template name="counter-progressbar"> <xsl:param name="width"/> <xsl:param name="height"/> <div> <xsl:attribute name="style">position:relative;background-color:#DDDDDD;border-color:black;width:<xsl:value-of select="$width"/>px;height:<xsl:value-of select="$height"/>px;</xsl:attribute> <!-- success --> <xsl:if test="@success-count > 0"> <div> <xsl:attribute name="style">position:absolute;top:0px;left:0px;height:<xsl:value-of select="$height"/>px;background-color:lightgreen;font-size:1px;width:<xsl:call-template name="scale"> <xsl:with-param name="origLength" select="@run-count"/> <xsl:with-param name="targetLength" select="$width"/> <xsl:with-param name="value" select="@success-count"/> </xsl:call-template>px;</xsl:attribute> </div> </xsl:if> <!-- failure --> <xsl:if test="@failure-count > 0"> <div> <xsl:attribute name="style">position:absolute;top:0px;left:<xsl:call-template name="scale"> <xsl:with-param name="origLength" select="@run-count"/> <xsl:with-param name="targetLength" select="$width"/> <xsl:with-param name="value" select="@success-count"/> </xsl:call-template>px;height:<xsl:value-of select="$height"/>px;background-color:red;font-size:1px;width:<xsl:call-template name="scale"> <xsl:with-param name="origLength" select="@run-count"/> <xsl:with-param name="targetLength" select="$width"/> <xsl:with-param name="value" select="@failure-count"/> </xsl:call-template>px;</xsl:attribute> </div> </xsl:if> <!-- skip --> <xsl:if test="@skip-count > 0"> <div> <xsl:attribute name="style">position:absolute;top:0px;left:<xsl:call-template name="scale"> <xsl:with-param name="origLength" select="@run-count"/> <xsl:with-param name="targetLength" select="$width"/> <xsl:with-param name="value" select="@success-count+@failure-count"/> </xsl:call-template>px;height:<xsl:value-of select="$height"/>px;background-color:blueviolet;font-size:1px;width:<xsl:call-template name="scale"> <xsl:with-param name="origLength" select="@run-count"/> <xsl:with-param name="targetLength" select="$width"/> <xsl:with-param name="value" select="@skip-count"/> </xsl:call-template>px;</xsl:attribute> </div> </xsl:if> <!-- ignore --> <xsl:if test="@ignore-count > 0"> <div> <xsl:attribute name="style">position:absolute;top:0px;left:<xsl:call-template name="scale"> <xsl:with-param name="origLength" select="@run-count"/> <xsl:with-param name="targetLength" select="$width"/> <xsl:with-param name="value" select="@success-count+@failure-count+@skip-count"/> </xsl:call-template>px;height:<xsl:value-of select="$height"/>px;background-color:orange;font-size:1px;width:<xsl:call-template name="scale"> <xsl:with-param name="origLength" select="@run-count"/> <xsl:with-param name="targetLength" select="$width"/> <xsl:with-param name="value" select="@ignore-count"/> </xsl:call-template>px;</xsl:attribute> </div> </xsl:if> <div> <xsl:attribute name="style">position:absolute;top:0px;left:<xsl:value-of select="$width +2"/>px;height:<xsl:value-of select="$height"/>px;font-size:<xsl:value-of select="$height - 2"/>px;font-family:Verdana;</xsl:attribute><xsl:value-of select="@run-count"/>/<xsl:value-of select="@success-count"/>/<xsl:value-of select="@failure-count"/>/<xsl:value-of select="@skip-count"/>/<xsl:value-of select="@ignore-count"/>/<xsl:value-of select="@assert-count"/></div> </div> </xsl:template> <xsl:template name="counter-literal"> <xsl:value-of select="@run-count"/> test, <xsl:value-of select="@success-count"/> success, <xsl:value-of select="@failure-count"/> failures, <xsl:value-of select="@skip-count" /> skipped, <xsl:value-of select="@ignore-count"/> ignored, <xsl:value-of select="@assert-count"/> asserts </xsl:template> <xsl:template name="icon"> <xsl:param name="src"/> <img width="16" height="16" border="0"> <xsl:attribute name="src"><xsl:value-of select="$src"/></xsl:attribute> </img> </xsl:template> <xsl:template name="assembly-icon"> <xsl:call-template name="icon"> <xsl:with-param name="src">Populator.png</xsl:with-param> </xsl:call-template> </xsl:template> <xsl:template name="fixture-icon"> <xsl:call-template name="icon"> <xsl:with-param name="src">Fixture.png</xsl:with-param> </xsl:call-template> </xsl:template> <xsl:template name="namespace-icon"> <xsl:call-template name="icon"> <xsl:with-param name="src">Category.png</xsl:with-param> </xsl:call-template> </xsl:template> <xsl:template name="run-icon"> <xsl:call-template name="icon"> <xsl:with-param name="src">Test.png</xsl:with-param> </xsl:call-template> </xsl:template> <xsl:template name="assemblyid"> <xsl:param name="name"/> as<xsl:value-of select="$name"/> </xsl:template> <xsl:template name="exceptionid"> <xsl:param name="name"/> ex<xsl:value-of select="$name"/> </xsl:template> <!-- MbUnit main method. --> <xsl:template match="/"> <div id="mbunit"> <script>function ToggleVisible(blockId) { var block = document.all.item(blockId); var plus = document.all.item(blockId + '.plus'); if (block.style.display=='none') { block.style.display='block'; plus.innerText='- '; } else { block.style.display='none'; plus.innerText='+ '; } } </script> <xsl:apply-templates select="//report-result" /> </div> </xsl:template> <xsl:template match="report-result"> <table cellpadding="2" cellspacing="0" border="0" width="98%"> <tr> <td class="unittests-sectionheader" colspan="3"> MbUnit Tests run: <xsl:value-of select="counter/@run-count" /> tests, <xsl:value-of select="counter/@success-count" /> success, <xsl:value-of select="counter/@failure-count" /> failure, <xsl:value-of select="counter/@ignore-count" /> ignored, <xsl:value-of select="counter/@skip-count" /> skipped, <xsl:value-of select="format-number(counter/@duration,'##.##')" /> s </td> </tr> <tr> <td> <xsl:call-template name="report-summary" /> <xsl:if test="count(//warnings)>0"> <br/> <xsl:call-template name="warnings" /> </xsl:if> <br/> <xsl:call-template name="assemblies" /> </td> </tr> </table> </xsl:template> <xsl:template name="report-summary"> <table border="0" cellpadding="1" cellspacing="1"> <tr class="titles"> <td>Total</td> <td> <xsl:for-each select="counter"> <xsl:call-template name="counter-progressbar"> <xsl:with-param name="width">100</xsl:with-param> <xsl:with-param name="height">14</xsl:with-param> </xsl:call-template> </xsl:for-each> </td> </tr> <xsl:call-template name="assembly-summary"/> </table> </xsl:template> <xsl:template name="assembly-summary"> <xsl:for-each select="//assemblies/assembly"> <tr class="titles"> <td> <a> <xsl:attribute name="href">#<xsl:value-of select="@name"/>Assembly</xsl:attribute> <xsl:call-template name="assembly-icon"/> <xsl:value-of select="@name"/> </a> </td> <td> <xsl:for-each select="counter"> <xsl:call-template name="counter-progressbar"> <xsl:with-param name="width">100</xsl:with-param> <xsl:with-param name="height">12</xsl:with-param> </xsl:call-template> </xsl:for-each> </td> </tr> <xsl:call-template name="fixture-summary" /> </xsl:for-each> </xsl:template> <xsl:template name="fixture-id"><xsl:param name="name" /><xsl:value-of select="$name" /></xsl:template> <xsl:template name="fixture-summary"> <xsl:for-each select="descendant::fixture"> <tr class="fixtureSummary"> <td> <a> <xsl:attribute name="href">#<xsl:call-template name="fixture-id"><xsl:with-param name="name"> <xsl:value-of select="@type" />.<xsl:value-of select="@name" /> </xsl:with-param></xsl:call-template> </xsl:attribute> <xsl:call-template name="fixture-icon"/> <xsl:value-of select="@type" />.<xsl:value-of select="@name" /> </a> </td> <td> <xsl:for-each select="counter"> <xsl:call-template name="counter-progressbar"> <xsl:with-param name="width">100</xsl:with-param> <xsl:with-param name="height">10</xsl:with-param> </xsl:call-template> </xsl:for-each> </td> </tr> </xsl:for-each> </xsl:template> <xsl:template name="warnings"> <table> <xsl:for-each select="//warning"> <tr> <xsl:attribute name="class"> <xsl:choose> <xsl:when test="position() mod 2 = 1">failureOdd</xsl:when> <xsl:otherwise>failureEven</xsl:otherwise> </xsl:choose> </xsl:attribute> <td><xsl:call-template name="run-icon"/> <xsl:value-of select="ancestor::run/@name" /></td> <td><xsl:value-of select="text()"/></td> </tr> </xsl:for-each> </table> </xsl:template> <xsl:template name="assemblies"> <xsl:for-each select="assemblies/assembly"> <xsl:call-template name="assembly-detail" /> </xsl:for-each> </xsl:template> <xsl:template name="assembly-detail"> <h2><xsl:attribute name="id"><xsl:value-of select="@name"/>Assembly</xsl:attribute> <xsl:call-template name="assembly-icon"/> <xsl:value-of select="@name"/> </h2> <ul> <li><strong>Full Name:</strong> <xsl:value-of select="@full-name"/></li> <li><strong>Results:</strong> <xsl:for-each select="counter"> <xsl:call-template name="counter-literal"/> </xsl:for-each> </li> <li><strong>Duration:</strong> <xsl:call-template name="display-time-second"> <xsl:with-param name="value" select="counter/@duration"/> </xsl:call-template> </li> </ul> <xsl:if test="set-up|tear-down"> <table> <tr class="assemblysetupteardown" ><td>Assembly SetUp and TearDown</td></tr> <xsl:apply-templates select="set-up"/> <xsl:apply-templates select="tear-down"/> </table> </xsl:if> <xsl:call-template name="namespaces-table" /> </xsl:template> <xsl:template name="namespaces-table"> <xsl:apply-templates select="namespaces" /> <xsl:apply-templates select="namespace" /> </xsl:template> <xsl:template match="namespaces"> <xsl:apply-templates select="namespace" /> </xsl:template> <xsl:template match="namespace"> <xsl:apply-templates select="namespaces" /> <xsl:apply-templates select="fixtures" /> </xsl:template> <xsl:template match="fixtures"> <table width="800" border="0" cellpadding="1" cellspacing="1"> <col width="700"/> <col width="50"/> <col width="50"/> <xsl:apply-templates select="fixture" /> </table> </xsl:template> <xsl:template match="fixture"> <tr> <xsl:attribute name="id"><xsl:call-template name="fixture-id"><xsl:with-param name="name"> <xsl:value-of select="@type" />.<xsl:value-of select="@name" /> </xsl:with-param></xsl:call-template> </xsl:attribute> <td> <xsl:for-each select="counter"> <xsl:call-template name="counter-progressbar"> <xsl:with-param name="width" select="100" /> <xsl:with-param name="height" select="10" /> </xsl:call-template> </xsl:for-each> </td> </tr> <tr class="fixture" > <td> <xsl:call-template name="fixture-icon"/> <xsl:value-of select="@type" />.<xsl:value-of select="@name"/> (<xsl:call-template name="display-time-second"> <xsl:with-param name="value" select="counter/@duration"/> </xsl:call-template>) </td> </tr> <xsl:if test="set-up|tear-down"> <tr class="fixturesetupteardown"><td>Fixture SetUp and TearDown</td></tr> <xsl:apply-templates select="set-up"/> <xsl:apply-templates select="tear-down"/> </xsl:if> <tr> <td> <xsl:apply-templates select="runs" /> </td> </tr> </xsl:template> <xsl:template match="runs"> <table width="100%" border="0" cellpadding="1" cellspacing="1"> <xsl:apply-templates select="*" /> </table> </xsl:template> <xsl:template match="set-up"> <xsl:call-template name="set-up-or-tear-down" /> </xsl:template> <xsl:template match="tear-down"> <xsl:call-template name="set-up-or-tear-down" /> </xsl:template> <xsl:template name="set-up-or-tear-down"> <tr> <!-- Choosing style and alternate --> <xsl:attribute name="class"> <xsl:choose> <xsl:when test="@result = 'success'">successEven</xsl:when> <xsl:when test="@result = 'failure'">failureEven</xsl:when> </xsl:choose> </xsl:attribute> <td> <xsl:value-of select="@name"/> </td> <td> <xsl:call-template name="display-time"> <xsl:with-param name="value" select="@duration"/> </xsl:call-template> </td> <td> <xsl:call-template name="display-memory"> <xsl:with-param name="value" select="@memory"/> </xsl:call-template> </td> </tr> <!-- Adding execption log --> <xsl:if test="@result = 'failure'"> <xsl:call-template name="exception-log"/> </xsl:if> <!-- Adding console out, error --> <xsl:call-template name="console-output" /> </xsl:template> <!-- Run template --> <xsl:template match="run"> <tr> <!-- Choosing style and alternate --> <xsl:attribute name="class"> <xsl:choose> <xsl:when test="@result = 'success'"> <xsl:choose> <xsl:when test="position() mod 2 = 1">successOdd</xsl:when> <xsl:otherwise>successEven</xsl:otherwise> </xsl:choose> </xsl:when> <xsl:when test="@result = 'failure'"> <xsl:choose> <xsl:when test="position() mod 2 = 1">failureOdd</xsl:when> <xsl:otherwise>failureEven</xsl:otherwise> </xsl:choose> </xsl:when> <xsl:when test="@result = 'skip'"> <xsl:choose> <xsl:when test="position() mod 2 = 1">skippedOdd</xsl:when> <xsl:otherwise>skippedEven</xsl:otherwise> </xsl:choose> </xsl:when> <xsl:when test="@result = 'ignore'"> <xsl:choose> <xsl:when test="position() mod 2 = 1">ignoreOdd</xsl:when> <xsl:otherwise>ignoreEvent</xsl:otherwise> </xsl:choose> </xsl:when> </xsl:choose> </xsl:attribute> <td> <xsl:call-template name="run-icon"/> <xsl:value-of select="@name"/> </td> <td> <xsl:call-template name="display-time"> <xsl:with-param name="value" select="@duration"/> </xsl:call-template> </td> <td> <xsl:call-template name="display-memory"> <xsl:with-param name="value" select="@memory"/> </xsl:call-template>, <xsl:value-of select="@assert-count" /> </td> </tr> <!-- Adding execption log --> <xsl:if test="@result = 'failure'"> <xsl:call-template name="exception-log"/> </xsl:if> <!-- Adding console out, error --> <xsl:call-template name="console-output" /> </xsl:template> <xsl:template name="exception-log"> <tr class="failure-exception"> <td> <div style="display;"> <table border="0" cellpadding="1" cellspacing="1" width="600"> <xsl:apply-templates select="exception" /> </table> </div> </td> </tr> </xsl:template> <xsl:template match="exception"> <tr class="exceptionType"> <td> <strong>Type:</strong> <xsl:value-of select="@type"/> </td> </tr> <tr> <td> <strong>Message:</strong> <xsl:value-of select="message"/> </td> </tr> <tr> <td> <strong>Source:</strong> <xsl:value-of select="source"/> </td> </tr> <xsl:for-each select="properties/property"> <tr> <td> <bold><xsl:value-of select="@name"/>:</bold> <xsl:value-of select="@value"/> </td> </tr> </xsl:for-each> <tr> <td width="80"> <strong>StackTrace:</strong> <br/> <pre class="stackTrace" width="80"> <xsl:value-of select="stack-trace"/> </pre> </td> </tr> <xsl:apply-templates select="exception" /> </xsl:template> <xsl:template name="console-output"> <xsl:apply-templates select="console-out"/> <xsl:apply-templates select="console-error"/> </xsl:template> <xsl:template match="console-out"> <xsl:call-template name="console"> <xsl:with-param name="name">Console Output</xsl:with-param> </xsl:call-template> </xsl:template> <xsl:template match="console-error"> <xsl:call-template name="console"> <xsl:with-param name="name">Console Error</xsl:with-param> </xsl:call-template> </xsl:template> <xsl:template name="console"> <xsl:param name="name" /> <xsl:if test="string-length( text() ) != 0"> <tr> <td> <table> <tr><td><strong><xsl:value-of select="$name"/></strong></td></tr> <tr> <td> <pre class="console"><xsl:value-of select="text()"/></pre> </td> </tr> </table> </td> </tr> </xsl:if> </xsl:template> </xsl:stylesheet> --- NEW FILE: MBUnitSummary.xsl --- <?xml version="1.0"?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"> <xsl:output method="html"/> <xsl:variable name="nunit2.result.list" select="//report-result/counter"/> <xsl:variable name="nunit2.testcount" select="sum($nunit2.result.list/@run-count)"/> <xsl:variable name="nunit2.failures" select="sum($nunit2.result.list/@failure-count)"/> <xsl:variable name="nunit2.notrun" select="sum($nunit2.result.list/@skip-count)"/> <xsl:variable name="nunit2.time" select="sum($nunit2.result.list/@duration)"/> <xsl:variable name="nunit2.case.list" select="//report-result/assemblies/assembly/namespaces/namespace/fixtures/fixture"/> <xsl:variable name="nunit2.suite.list" select="//report-result/assemblies/assembly/namespaces/namespace/fixtures/fixture/runs/run"/> <xsl:variable name="nunit2.failure.list" select="//report-result/assemblies/assembly/namespaces/namespace/fixtures/fixture/runs/run/exception"/> <xsl:variable name="nunit2.notrun.list" select="$nunit2.case.list//reason"/> <xsl:variable name="testsuite.list" select="/cruisecontrol/build/buildresults//testsuite"/> <xsl:variable name="testcase.list" select="$testsuite.list/testcase"/> <xsl:variable name="testcase.error.list" select="$testcase.list/error"/> <xsl:variable name="testsuite.error.count" select="count($testcase.error.list)"/> <xsl:variable name="testcase.failure.list" select="$testcase.list/failure"/> <!--<xsl:variable name="totalErrorsAndFailures" select="count($testcase.error.list) + count($testcase.failure.list) + count($nunit2.failure.list)"/>--> <xsl:variable name="totalErrorsAndFailures" select="sum($nunit2.result.list/@failure-count)"/> <xsl:template match="/"> <table class="section-table" cellpadding="2" cellspacing="0" border="0" width="98%"> <!-- Unit Tests --> <tr> <td class="unittests-sectionheader" colspan="2"> Tests run: <xsl:value-of select="$nunit2.testcount"/>, Failures: <xsl:value-of select="$nunit2.failures"/>, Not run: <xsl:value-of select="$nunit2.notrun"/>, Time: <xsl:value-of select="$nunit2.time"/> seconds </td> </tr> <xsl:choose> <xsl:when test="$nunit2.testcount = 0"> <tr><td colspan="2" class="unittests-data">No Tests Run</td></tr> <tr><td colspan="2" class="unittests-error">This project doesn't have any tests</td></tr> </xsl:when> <xsl:when test="$totalErrorsAndFailures = 0"> <tr><td colspan="2" class="unittests-data">All Tests Passed</td></tr> </xsl:when> </xsl:choose> <!--<xsl:apply-templates select="$testcase.error.list"/> <xsl:apply-templates select="$testcase.failure.list | $nunit2.failure.list"/> <xsl:apply-templates select="$nunit2.notrun.list"/>--> <tr><td colspan="2"> </td></tr> <xsl:if test="$totalErrorsAndFailures > 0"> <tr> <td class="unittests-sectionheader" colspan="2"> Unit Test Failure and Error Details (<xsl:value-of select="$totalErrorsAndFailures"/>) </td> </tr> <!--<xsl:call-template name="nunit2testdetail"> <xsl:with-param name="detailnodes" select="$nunit2.suite.list"/> </xsl:call-template>--> <xsl:call-template name="nunit2testdetail"> <xsl:with-param name="detailnodes" select="//report-result/assemblies/assembly//namespaces//namespace/fixtures/fixture/runs/run"/> </xsl:call-template> <tr><td colspan="2"> </td></tr> </xsl:if> <xsl:if test="$nunit2.notrun > 0"> <tr> <td class="unittests-sectionheader" colspan="2"> Warning Details (<xsl:value-of select="$nunit2.notrun"/>) </td> </tr> <!-- (PENDING) Why doesn't this work if set up as variables up top? --> <xsl:call-template name="nunit2testdetail"> <xsl:with-param name="detailnodes" select="//test-suite/results/test-case[.//reason]"/> </xsl:call-template> <tr><td colspan="2"> </td></tr> </xsl:if> </table> </xsl:template> <!-- UnitTest Errors --> <xsl:template match="error"> <tr> <xsl:if test="position() mod 2 = 0"> <xsl:attribute name="class">unittests-oddrow</xsl:attribute> </xsl:if> <td class="unittests-data">Error</td> <td class="unittests-data"><xsl:value-of select="../@name"/></td> </tr> </xsl:template> <!-- UnitTest Failures --> <xsl:template match="failure"> <tr> <xsl:if test="($testsuite.error.count + position()) mod 2 = 0"> <xsl:attribute name="class">unittests-oddrow</xsl:attribute> </xsl:if> <td class="unittests-data">Failure</td> <td class="unittests-data"><xsl:value-of select="/source"/></td> </tr> </xsl:template> <!-- UnitTest Warnings --> <xsl:template match="reason"> <tr> <xsl:if test="($totalErrorsAndFailures + position()) mod 2 = 0"> <xsl:attribute name="class">unittests-oddrow</xsl:attribute> </xsl:if> <td class="unittests-data">Warning</td> <td class="unittests-data"><xsl:value-of select="../@name"/></td> </tr> </xsl:template> <!-- UnitTest Errors And Failures Detail Template --> <xsl:template name="testdetail"> <xsl:param name="detailnodes"/> <xsl:for-each select="$detailnodes"> <xsl:if test="position() > 1"> <tr><td colspan="2"><hr size="1" width="100%" color="#888888"/></td></tr> </xsl:if> <tr><td class="unittests-data">Test:</td><td class="unittests-data"><xsl:value-of select="@name"/></td></tr> <xsl:if test="error"> <tr><td class="unittests-data">Type:</td><td class="unittests-data"><xsl:value-of select="error/@type"/></td></tr> <tr><td class="unittests-data">Message:</td><td class="unittests-data"><xsl:value-of select="error/@message"/></td></tr> <tr> <td></td> <td class="unittests-error"> <pre><xsl:call-template name="br-replace"> <xsl:with-param name="word" select="error"/> </xsl:call-template></pre> </td> </tr> </xsl:if> <xsl:if test="failure"> <tr><td class="unittests-data">Type:</td><td class="unittests-data"><xsl:value-of select="failure/@type"/></td></tr> <tr><td class="unittests-data">Message:</td><td class="unittests-data"><xsl:value-of select="failure/@message"/></td></tr> <tr> <td></td> <td class="unittests-error"> <pre><xsl:call-template name="br-replace"> <xsl:with-param name="word" select="failure"/> </xsl:call-template></pre> </td> </tr> </xsl:if> </xsl:for-each> </xsl:template> <!-- UnitTest Errors And Failures Detail Template --> <xsl:template name="nunit2testdetail"> <xsl:param name="detailnodes"/> <xsl:for-each select="$detailnodes"> <!--<xsl:if test="position() > 1">--> <!--</xsl:if>--> <xsl:if test="exception"> <tr><td colspan="2"><hr size="1" width="100%" color="#888888"/></td></tr> <tr><td class="unittests-data">Test:</td><td class="unittests-data"><xsl:value-of select="@name"/></td></tr> <tr><td class="unittests-data">Type:</td><td class="unittests-data">Failure</td></tr> <tr><td class="unittests-data">Message:</td><td class="unittests-data"><xsl:value-of select="exception/message"/></td></tr> <tr> <td></td> <td class="unittests-error"> <pre><xsl:value-of select="exception/stack-trace"/></pre> </td> </tr> </xsl:if> <xsl:if test="reason"> <tr><td class="unittests-data">Test:</td><td class="unittests-data"><xsl:value-of select="@name"/></td></tr> <tr><td class="unittests-data">Type:</td><td class="unittests-data">Warning</td></tr> <tr><td class="unittests-data">Message:</td><td class="unittests-data"><xsl:value-of select="reason//message"/></td></tr> <tr> <td></td> <td class="unittests-error"> <pre><xsl:call-template name="br-replace"> <xsl:with-param name="word" select="/stack-trace"/> </xsl:call-template></pre> </td> </tr> </xsl:if> </xsl:for-each> </xsl:template> <!-- UnitTest Errors And Failures Detail Template --> <xsl:template name="nunit2testdetail2"> <xsl:param name="detailnodes"/> <xsl:for-each select="$detailnodes"> <!--<xsl:if test="position() > 1">--> <!--</xsl:if>--> <xsl:if test="exception"> <tr><td colspan="2"><hr size="1" width="100%" color="#888888"/></td></tr> <tr><td class="unittests-data">Test:</td><td class="unittests-data"><xsl:value-of select="@name"/></td></tr> <tr><td class="unittests-data">Type:</td><td class="unittests-data">Failure</td></tr> <tr><td class="unittests-data">Message:</td><td class="unittests-data"><xsl:value-of select="exception/message"/></td></tr> <tr> <td></td> <td class="unittests-error"> <pre><xsl:value-of select="exception/stack-trace"/></pre> </td> </tr> </xsl:if> <xsl:if test="reason"> <tr><td class="unittests-data">Test:</td><td class="unittests-data"><xsl:value-of select="@name"/></td></tr> <tr><td class="unittests-data">Type:</td><td class="unittests-data">Warning</td></tr> <tr><td class="unittests-data">Message:</td><td class="unittests-data"><xsl:value-of select="reason//message"/></td></tr> <tr> <td></td> <td class="unittests-error"> <pre><xsl:call-template name="br-replace"> <xsl:with-param name="word" select="/stack-trace"/> </xsl:call-template></pre> </td> </tr> </xsl:if> </xsl:for-each> </xsl:template> <xsl:template name="br-replace"> <xsl:param name="word"/> <xsl:variable name="cr"><xsl:text> <!-- </xsl:text> on next line on purpose to get newline --> </xsl:text></xsl:variable> <xsl:choose> <xsl:when test="contains($word,$cr)"> <xsl:value-of select="substring-before($word,$cr)"/> <br/> <xsl:call-template name="br-replace"> <xsl:with-param name="word" select="substring-after($word,$cr)"/> </xsl:call-template> </xsl:when> <xsl:otherwise> <xsl:value-of select="$word"/> </xsl:otherwise> </xsl:choose> </xsl:template> </xsl:stylesheet> |