junit-frames.xsl for framed reports. junit-noframes.xsl for non-framed reports. git-svn-id: https://svn.apache.org/repos/asf/ant/core/trunk@269506 13f79535-47bb-0310-9956-ffa450edef68master
| @@ -1,21 +0,0 @@ | |||||
| <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN""http://www.w3.org/TR/REC-html40/loose.dtd> | |||||
| <HTML> | |||||
| <HEAD> | |||||
| <TITLE> | |||||
| Unit Tests Results. | |||||
| </TITLE> | |||||
| </HEAD> | |||||
| <FRAMESET cols="20%,80%"> | |||||
| <FRAMESET rows="30%,70%"> | |||||
| <FRAME src="all-packages.html" name="packageListFrame"> | |||||
| <FRAME src="all-classes.html" name="classListFrame"> | |||||
| </FRAMESET> | |||||
| <FRAME src="overview-packages.html" name="classFrame"> | |||||
| </FRAMESET> | |||||
| <NOFRAMES> | |||||
| <H2>Frame Alert</H2> | |||||
| <P> | |||||
| This document is designed to be viewed using the frames feature. If you see this message, you are using a non-frame-capable web client. | |||||
| </P> | |||||
| </HTML> | |||||
| @@ -1,38 +0,0 @@ | |||||
| BODY { | |||||
| font:normal 68% verdana,arial,helvetica; | |||||
| color:#000000; | |||||
| } | |||||
| TD { | |||||
| FONT-SIZE: 68% | |||||
| } | |||||
| P { | |||||
| line-height:1.5em; | |||||
| margin-top:0.5em; margin-bottom:1.0em; | |||||
| } | |||||
| H1 { | |||||
| MARGIN: 0px 0px 5px; FONT: 165% verdana,arial,helvetica | |||||
| } | |||||
| H2 { | |||||
| MARGIN-TOP: 1em; MARGIN-BOTTOM: 0.5em; FONT: bold 125% verdana,arial,helvetica | |||||
| } | |||||
| H3 { | |||||
| MARGIN-BOTTOM: 0.5em; FONT: bold 115% verdana,arial,helvetica | |||||
| } | |||||
| H4 { | |||||
| MARGIN-BOTTOM: 0.5em; FONT: bold 100% verdana,arial,helvetica | |||||
| } | |||||
| H5 { | |||||
| MARGIN-BOTTOM: 0.5em; FONT: bold 100% verdana,arial,helvetica | |||||
| } | |||||
| H6 { | |||||
| MARGIN-BOTTOM: 0.5em; FONT: bold 100% verdana,arial,helvetica | |||||
| } | |||||
| .Error { | |||||
| font-weight:bold; background:#EEEEE0; color:purple; | |||||
| } | |||||
| .Failure { | |||||
| font-weight:bold; background:#EEEEE0; color:red; | |||||
| } | |||||
| .Pass { | |||||
| background:#EEEEE0; | |||||
| } | |||||
| @@ -1,45 +0,0 @@ | |||||
| <?xml version="1.0" encoding="ISO-8859-1"?> | |||||
| <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> | |||||
| <xsl:include href="toolkit.xsl"/> | |||||
| <!-- | |||||
| Display the whole list of testsuite | |||||
| --> | |||||
| <xsl:template match="testsuites"> | |||||
| <HTML> | |||||
| <HEAD> | |||||
| <LINK REL ="stylesheet" TYPE="text/css" HREF="./stylesheet.css" TITLE="Style"/> | |||||
| </HEAD> | |||||
| <BODY onload="open('overview-packages.html','classFrame')"> | |||||
| <H2>Classes</H2> | |||||
| <p> | |||||
| <TABLE WIDTH="100%"> | |||||
| <xsl:apply-templates select="testsuite"> | |||||
| <xsl:sort select="@name"/> | |||||
| </xsl:apply-templates> | |||||
| </TABLE> | |||||
| </p> | |||||
| </BODY> | |||||
| </HTML> | |||||
| </xsl:template> | |||||
| <!-- | |||||
| Display each testsuite name with an hyperlink to the package frame. | |||||
| The hyperlink is made of the {packagename} + {classname} + "-details.html" | |||||
| --> | |||||
| <xsl:template match="testsuite"> | |||||
| <tr> | |||||
| <td nowrap="nowrap"> | |||||
| <a target="classFrame"> | |||||
| <xsl:attribute name="href"> | |||||
| <xsl:if test="not(@package='')"> | |||||
| <xsl:value-of select="translate(@package,'.','/')"/><xsl:text>/</xsl:text> | |||||
| </xsl:if><xsl:value-of select="@name"/><xsl:text>-details.html</xsl:text> | |||||
| </xsl:attribute> | |||||
| <xsl:value-of select="@name"/></a> | |||||
| </td> | |||||
| </tr> | |||||
| </xsl:template> | |||||
| </xsl:stylesheet> | |||||
| @@ -1,39 +0,0 @@ | |||||
| <?xml version="1.0" encoding="ISO-8859-1"?> | |||||
| <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> | |||||
| <xsl:include href="toolkit.xsl"/> | |||||
| <xsl:template match="testsuites"> | |||||
| <HTML> | |||||
| <HEAD> | |||||
| <LINK REL ="stylesheet" TYPE="text/css" HREF="./stylesheet.css" TITLE="Style"/> | |||||
| </HEAD> | |||||
| <BODY> | |||||
| <H2><a href="all-classes.html" target="classListFrame">Home</a></H2> | |||||
| <!-- create a summary on this testcase--> | |||||
| <!--xsl:call-template name="SummaryTableHeadRootPackage"/--> | |||||
| <H2>Packages</H2> | |||||
| <!-- Get the list of the subpackage --> | |||||
| <p> | |||||
| <table width="100%"> | |||||
| <!-- For each packages node apply the style describe in the below template--> | |||||
| <xsl:apply-templates select="testsuite[not(./@package = preceding-sibling::testsuite/@package)]"> | |||||
| <xsl:sort select="@package"/> | |||||
| </xsl:apply-templates> | |||||
| </table> | |||||
| </p> | |||||
| </BODY> | |||||
| </HTML> | |||||
| </xsl:template> | |||||
| <xsl:template match="testsuite"> | |||||
| <tr> | |||||
| <td nowrap="nowrap"> | |||||
| <a href="{translate(@package,'.','/')}/package-summary.html" target="classFrame"><xsl:value-of select="@package"/></a> | |||||
| </td> | |||||
| </tr> | |||||
| </xsl:template> | |||||
| </xsl:stylesheet> | |||||
| @@ -1,37 +0,0 @@ | |||||
| <?xml version="1.0" encoding="ISO-8859-1"?> | |||||
| <!-- This style sheet should contain just a named templates that used in the other specific templates --> | |||||
| <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> | |||||
| <!-- import the commun templates --> | |||||
| <xsl:include href="toolkit.xsl"/> | |||||
| <xsl:template match="testsuite"> | |||||
| <HTML> | |||||
| <HEAD> | |||||
| <LINK REL ="stylesheet" TYPE="text/css" TITLE="Style"> | |||||
| <xsl:attribute name="href"><xsl:call-template name="path"><xsl:with-param name="path" select="@package"/></xsl:call-template>stylesheet.css</xsl:attribute> | |||||
| </LINK> | |||||
| </HEAD> | |||||
| <BODY> | |||||
| <xsl:call-template name="header"> | |||||
| <xsl:with-param name="useFrame">yes</xsl:with-param> | |||||
| <xsl:with-param name="path" select="@package"/> | |||||
| </xsl:call-template> | |||||
| <H2>Class <xsl:if test="not(@package = '')"><xsl:value-of select="@package"/>.</xsl:if><xsl:value-of select="@name"/></H2> | |||||
| <p> | |||||
| <h3>TestCase <xsl:value-of select="@name"/></h3> | |||||
| <table border="0" cellpadding="5" cellspacing="2" width="95%"> | |||||
| <!-- Header --> | |||||
| <xsl:call-template name="classesSummaryHeader"/> | |||||
| <!-- match the testcases of this package --> | |||||
| <xsl:apply-templates select="testcase"/> | |||||
| </table> | |||||
| </p> | |||||
| </BODY> | |||||
| </HTML> | |||||
| </xsl:template> | |||||
| </xsl:stylesheet> | |||||
| @@ -1,44 +0,0 @@ | |||||
| <?xml version="1.0" encoding="ISO-8859-1"?> | |||||
| <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> | |||||
| <!-- import the commun templates --> | |||||
| <xsl:include href="toolkit.xsl"/> | |||||
| <xsl:template match="testsuites"> | |||||
| <HTML> | |||||
| <HEAD> | |||||
| <LINK REL ="stylesheet" TYPE="text/css" TITLE="Style"> | |||||
| <xsl:attribute name="href"><xsl:call-template name="path"><xsl:with-param name="path" select="testsuite[position() = 1]/@package"/></xsl:call-template>stylesheet.css</xsl:attribute> | |||||
| </LINK> | |||||
| </HEAD> | |||||
| <BODY> | |||||
| <table width="100%"> | |||||
| <tr> | |||||
| <td nowrap="nowrap"> | |||||
| <H2><a href="package-summary.html" target="classFrame"><xsl:value-of select="testsuite/@package"/></a></H2> | |||||
| </td> | |||||
| </tr> | |||||
| </table> | |||||
| <H2>Classes</H2> | |||||
| <p> | |||||
| <TABLE WIDTH="100%"> | |||||
| <xsl:apply-templates select="testsuite"> | |||||
| <xsl:sort select="@name"/> | |||||
| </xsl:apply-templates> | |||||
| </TABLE> | |||||
| </p> | |||||
| </BODY> | |||||
| </HTML> | |||||
| </xsl:template> | |||||
| <xsl:template match="testsuite"> | |||||
| <tr> | |||||
| <td nowrap="nowrap"> | |||||
| <a href="{@name}-details.html" target="classFrame"><xsl:value-of select="@name"/></a> | |||||
| </td> | |||||
| </tr> | |||||
| </xsl:template> | |||||
| </xsl:stylesheet> | |||||
| @@ -1,109 +0,0 @@ | |||||
| <?xml version="1.0" encoding="ISO-8859-1"?> | |||||
| <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> | |||||
| <xsl:include href="toolkit.xsl"/> | |||||
| <xsl:template match="testsuites"> | |||||
| <HTML> | |||||
| <HEAD> | |||||
| <LINK REL ="stylesheet" TYPE="text/css" HREF="stylesheet.css" TITLE="Style"/> | |||||
| </HEAD> | |||||
| <BODY> | |||||
| <xsl:call-template name="header"> | |||||
| <xsl:with-param name="useFrame">yes</xsl:with-param> | |||||
| </xsl:call-template> | |||||
| <xsl:call-template name="summary"/> | |||||
| <xsl:if test="count(testsuite[not(./@package = preceding-sibling::testsuite/@package)])>0"> | |||||
| <h2>Packages</h2> | |||||
| <table border="0" cellpadding="5" cellspacing="2" width="95%"> | |||||
| <!--Header--> | |||||
| <xsl:call-template name="packageSummaryHeader"/> | |||||
| <!-- write a summary for the package --> | |||||
| <xsl:apply-templates select="testsuite[not(./@package = preceding-sibling::testsuite/@package) and not(./@package = '') ]" mode="package"> | |||||
| <xsl:sort select="@package"/> | |||||
| </xsl:apply-templates> | |||||
| </table> | |||||
| <br/> | |||||
| </xsl:if> | |||||
| <xsl:if test="count(testsuite[./@package = ''])>0"> | |||||
| <h2>Classes</h2> | |||||
| <table border="0" cellpadding="5" cellspacing="2" width="95%"> | |||||
| <!--Header--> | |||||
| <xsl:call-template name="packageSummaryHeader"/> | |||||
| <!-- write a summary for the package --> | |||||
| <xsl:apply-templates select="testsuite[./@package = '']" mode="class"> | |||||
| <xsl:sort select="@name"/> | |||||
| </xsl:apply-templates> | |||||
| </table> | |||||
| </xsl:if> | |||||
| </BODY> | |||||
| </HTML> | |||||
| </xsl:template> | |||||
| <xsl:template match="testsuite" mode="package"> | |||||
| <xsl:variable name="isError" select="(sum(//testsuite[@package = current()/@package]/@errors) + sum(//testsuite[@package = current()/@package]/@failures))>0"/> | |||||
| <!-- write a summary for the package --> | |||||
| <tr valign="top"> | |||||
| <xsl:attribute name="class"> | |||||
| <xsl:choose> | |||||
| <xsl:when test="$isError">Failure</xsl:when> | |||||
| <xsl:otherwise>Pass</xsl:otherwise> | |||||
| </xsl:choose> | |||||
| </xsl:attribute> | |||||
| <td> | |||||
| <a href="{translate(@package,'.','/')}/package-summary.html"> | |||||
| <xsl:value-of select="@package"/> | |||||
| </a> | |||||
| </td> | |||||
| <xsl:call-template name="statistics"> | |||||
| <xsl:with-param name="isError" select="$isError"/> | |||||
| </xsl:call-template> | |||||
| </tr> | |||||
| </xsl:template> | |||||
| <xsl:template match="testsuite" mode="class"> | |||||
| <xsl:variable name="isError" select="(@errors + @failures)>0"/> | |||||
| <!-- write a summary for the package --> | |||||
| <tr valign="top"> | |||||
| <xsl:attribute name="class"> | |||||
| <xsl:choose> | |||||
| <xsl:when test="$isError">Failure</xsl:when> | |||||
| <xsl:otherwise>Pass</xsl:otherwise> | |||||
| </xsl:choose> | |||||
| </xsl:attribute> | |||||
| <td> | |||||
| <a href="{translate(@package,'.','/')}/summary.html"> | |||||
| <xsl:value-of select="@name"/> | |||||
| </a> | |||||
| </td> | |||||
| <xsl:call-template name="statistics"> | |||||
| <xsl:with-param name="isError" select="$isError"/> | |||||
| </xsl:call-template> | |||||
| </tr> | |||||
| </xsl:template> | |||||
| <xsl:template name="statistics"> | |||||
| <xsl:variable name="isError"/> | |||||
| <td> | |||||
| <xsl:value-of select="sum(//testsuite[@package = current()/@package]/@tests)"/></td> | |||||
| <td> | |||||
| <xsl:value-of select="sum(//testsuite[@package = current()/@package]/@errors)"/></td> | |||||
| <td> | |||||
| <xsl:value-of select="sum(//testsuite[@package = current()/@package]/@failures)"/></td> | |||||
| <td> | |||||
| <xsl:call-template name="display-time"> | |||||
| <xsl:with-param name="value" select="sum(//testsuite[@package = current()/@package]/@time)"/> | |||||
| </xsl:call-template> | |||||
| </td> | |||||
| </xsl:template> | |||||
| </xsl:stylesheet> | |||||
| @@ -1,196 +0,0 @@ | |||||
| <?xml version="1.0" encoding="ISO-8859-1"?> | |||||
| <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0" xmlns:html="http://www.w3.org/Profiles/XHTML-transitional"> | |||||
| <xsl:include href="toolkit.xsl"/> | |||||
| <!-- | |||||
| ==================================================== | |||||
| Create the page structure | |||||
| ==================================================== | |||||
| --> | |||||
| <xsl:template match="testsuites"> | |||||
| <HTML> | |||||
| <HEAD> | |||||
| <!--LINK REL ="stylesheet" TYPE="text/css" HREF="stylesheet.css" TITLE="Style"/--> | |||||
| <!-- put the style in the html so that we can mail it w/o problem --> | |||||
| <style type="text/css"> | |||||
| BODY { | |||||
| font:normal 68% verdana,arial,helvetica; | |||||
| color:#000000; | |||||
| } | |||||
| TD { | |||||
| FONT-SIZE: 68% | |||||
| } | |||||
| P { | |||||
| line-height:1.5em; | |||||
| margin-top:0.5em; margin-bottom:1.0em; | |||||
| } | |||||
| H1 { | |||||
| MARGIN: 0px 0px 5px; FONT: 165% verdana,arial,helvetica | |||||
| } | |||||
| H2 { | |||||
| MARGIN-TOP: 1em; MARGIN-BOTTOM: 0.5em; FONT: bold 125% verdana,arial,helvetica | |||||
| } | |||||
| H3 { | |||||
| MARGIN-BOTTOM: 0.5em; FONT: bold 115% verdana,arial,helvetica | |||||
| } | |||||
| H4 { | |||||
| MARGIN-BOTTOM: 0.5em; FONT: bold 100% verdana,arial,helvetica | |||||
| } | |||||
| H5 { | |||||
| MARGIN-BOTTOM: 0.5em; FONT: bold 100% verdana,arial,helvetica | |||||
| } | |||||
| H6 { | |||||
| MARGIN-BOTTOM: 0.5em; FONT: bold 100% verdana,arial,helvetica | |||||
| } | |||||
| .Error { | |||||
| font-weight:bold; background:#EEEEE0; color:purple; | |||||
| } | |||||
| .Failure { | |||||
| font-weight:bold; background:#EEEEE0; color:red; | |||||
| } | |||||
| .Pass { | |||||
| background:#EEEEE0; | |||||
| } | |||||
| </style> | |||||
| </HEAD> | |||||
| <body text="#000000" bgColor="#ffffff"> | |||||
| <a name="#top"></a> | |||||
| <xsl:call-template name="header"/> | |||||
| <!-- Summary part --> | |||||
| <xsl:call-template name="summary"/> | |||||
| <hr size="1" width="95%" align="left"/> | |||||
| <!-- Package List part --> | |||||
| <xsl:call-template name="packagelist"/> | |||||
| <hr size="1" width="95%" align="left"/> | |||||
| <!-- For each package create its part --> | |||||
| <xsl:call-template name="packages"/> | |||||
| <hr size="1" width="95%" align="left"/> | |||||
| <!-- For each class create the part --> | |||||
| <xsl:call-template name="classes"/> | |||||
| </body> | |||||
| </HTML> | |||||
| </xsl:template> | |||||
| <!-- ================================================================== --> | |||||
| <!-- Write a list of all packages with an hyperlink to the anchor of --> | |||||
| <!-- of the package name. --> | |||||
| <!-- ================================================================== --> | |||||
| <xsl:template name="packagelist"> | |||||
| <h2>Packages</h2> | |||||
| Note: package statistics are not computed recursively, they only sum up all of its testsuites numbers. | |||||
| <table border="0" cellpadding="5" cellspacing="2" width="95%"> | |||||
| <xsl:call-template name="packageSummaryHeader"/> | |||||
| <!-- list all packages recursively --> | |||||
| <xsl:for-each select="./testsuite[not(./@package = preceding-sibling::testsuite/@package)]"> | |||||
| <xsl:sort select="@package"/> | |||||
| <xsl:variable name="testCount" select="sum(../testsuite[./@package = current()/@package]/@tests)"/> | |||||
| <xsl:variable name="errorCount" select="sum(../testsuite[./@package = current()/@package]/@errors)"/> | |||||
| <xsl:variable name="failureCount" select="sum(../testsuite[./@package = current()/@package]/@failures)"/> | |||||
| <xsl:variable name="timeCount" select="sum(../testsuite[./@package = current()/@package]/@time)"/> | |||||
| <!-- write a summary for the package --> | |||||
| <tr valign="top"> | |||||
| <!-- set a nice color depending if there is an error/failure --> | |||||
| <xsl:attribute name="class"> | |||||
| <xsl:choose> | |||||
| <xsl:when test="$failureCount > 0">Failure</xsl:when> | |||||
| <xsl:when test="$errorCount > 0">Error</xsl:when> | |||||
| <xsl:otherwise>Pass</xsl:otherwise> | |||||
| </xsl:choose> | |||||
| </xsl:attribute> | |||||
| <td><a href="#{@package}"><xsl:value-of select="@package"/></a></td> | |||||
| <td><xsl:value-of select="$testCount"/></td> | |||||
| <td><xsl:value-of select="$errorCount"/></td> | |||||
| <td><xsl:value-of select="$failureCount"/></td> | |||||
| <td> | |||||
| <xsl:call-template name="display-time"> | |||||
| <xsl:with-param name="value" select="$timeCount"/> | |||||
| </xsl:call-template> | |||||
| </td> | |||||
| </tr> | |||||
| </xsl:for-each> | |||||
| </table> | |||||
| </xsl:template> | |||||
| <!-- ================================================================== --> | |||||
| <!-- Write a package level report --> | |||||
| <!-- It creates a table with values from the document: --> | |||||
| <!-- Name | Tests | Errors | Failures | Time --> | |||||
| <!-- ================================================================== --> | |||||
| <xsl:template name="packages"> | |||||
| <!-- create an anchor to this package name --> | |||||
| <xsl:for-each select="./testsuite[not(./@package = preceding-sibling::testsuite/@package)]"> | |||||
| <xsl:sort select="@package"/> | |||||
| <a name="#{@package}"></a> | |||||
| <h3>Package <xsl:value-of select="@package"/></h3> | |||||
| <table border="0" cellpadding="5" cellspacing="2" width="95%"> | |||||
| <xsl:call-template name="packageSummaryHeader"/> | |||||
| <!-- match the testsuites of this package --> | |||||
| <xsl:apply-templates select="../testsuite[./@package = current()/@package]"/> | |||||
| </table> | |||||
| <a href="#top">Back to top</a> | |||||
| <p/> | |||||
| <p/> | |||||
| </xsl:for-each> | |||||
| </xsl:template> | |||||
| <!-- ================================================================== --> | |||||
| <!-- Process a testsuite node --> | |||||
| <!-- It creates a table with values from the document: --> | |||||
| <!-- Name | Tests | Errors | Failures | Time --> | |||||
| <!-- It must match the table definition at the package level --> | |||||
| <!-- ================================================================== --> | |||||
| <xsl:template match="testsuite"> | |||||
| <tr valign="top"> | |||||
| <!-- set a nice color depending if there is an error/failure --> | |||||
| <xsl:attribute name="class"> | |||||
| <xsl:choose> | |||||
| <xsl:when test="@failures[.> 0]">Failure</xsl:when> | |||||
| <xsl:when test="@errors[.> 0]">Error</xsl:when> | |||||
| <xsl:otherwise>Pass</xsl:otherwise> | |||||
| </xsl:choose> | |||||
| </xsl:attribute> | |||||
| <!-- print testsuite information --> | |||||
| <td><a href="#{@name}"><xsl:value-of select="@name"/></a></td> | |||||
| <td><xsl:value-of select="@tests"/></td> | |||||
| <td><xsl:value-of select="@errors"/></td> | |||||
| <td><xsl:value-of select="@failures"/></td> | |||||
| <td> | |||||
| <xsl:call-template name="display-time"> | |||||
| <xsl:with-param name="value" select="@time"/> | |||||
| </xsl:call-template> | |||||
| </td> | |||||
| </tr> | |||||
| </xsl:template> | |||||
| <xsl:template name="classes"> | |||||
| <xsl:for-each select="./testsuite"> | |||||
| <xsl:sort select="@name"/> | |||||
| <!-- create an anchor to this class name --> | |||||
| <a name="#{@name}"></a> | |||||
| <h3>TestCase <xsl:value-of select="@name"/></h3> | |||||
| <table border="0" cellpadding="5" cellspacing="2" width="95%"> | |||||
| <!-- Header --> | |||||
| <xsl:call-template name="classesSummaryHeader"/> | |||||
| <!-- match the testcases of this package --> | |||||
| <xsl:apply-templates select="testcase"/> | |||||
| </table> | |||||
| <a href="#top">Back to top</a> | |||||
| </xsl:for-each> | |||||
| </xsl:template> | |||||
| </xsl:stylesheet> | |||||
| @@ -1,85 +0,0 @@ | |||||
| <?xml version="1.0" encoding="ISO-8859-1"?> | |||||
| <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> | |||||
| <!-- import the commun templates --> | |||||
| <xsl:include href="toolkit.xsl"/> | |||||
| <xsl:template match="testsuites"> | |||||
| <HTML> | |||||
| <HEAD> | |||||
| <LINK REL ="stylesheet" TYPE="text/css" TITLE="Style"> | |||||
| <xsl:attribute name="href"><xsl:call-template name="path"><xsl:with-param name="path" select="testsuite[position() = 1]/@package"/></xsl:call-template>stylesheet.css</xsl:attribute> | |||||
| </LINK> | |||||
| </HEAD> | |||||
| <BODY><xsl:attribute name="onload">open('classes-list.html','classListFrame')</xsl:attribute> | |||||
| <xsl:call-template name="header"> | |||||
| <xsl:with-param name="useFrame">yes</xsl:with-param> | |||||
| <xsl:with-param name="path" select="testsuite/@package"/> | |||||
| </xsl:call-template> | |||||
| <!-- create an anchor to this package name --> | |||||
| <h3>Package <xsl:value-of select="testsuite/@package"/></h3> | |||||
| <table border="0" cellpadding="5" cellspacing="2" width="95%"> | |||||
| <!--Header--> | |||||
| <xsl:call-template name="packageSummaryHeader"/> | |||||
| <!-- write a summary for the package --> | |||||
| <tr valign="top"> | |||||
| <xsl:variable name="errorCount" select="sum(testsuite/@errors)"/> | |||||
| <xsl:variable name="failureCount" select="sum(testsuite/@failures)"/> | |||||
| <xsl:attribute name="class"> | |||||
| <xsl:choose> | |||||
| <xsl:when test="$failureCount > 0">Failure</xsl:when> | |||||
| <xsl:when test="$errorCount > 0">Error</xsl:when> | |||||
| <xsl:otherwise>Pass</xsl:otherwise> | |||||
| </xsl:choose> | |||||
| </xsl:attribute> | |||||
| <td><xsl:value-of select="testsuite/@package"/></td> | |||||
| <td><xsl:value-of select="sum(testsuite/@tests)"/></td> | |||||
| <td><xsl:value-of select="sum(testsuite/@errors)"/></td> | |||||
| <td><xsl:value-of select="sum(testsuite/@failures)"/></td> | |||||
| <td><xsl:value-of select="format-number(sum(testsuite/@time),'#,###0.000')"/></td> | |||||
| </tr> | |||||
| </table> | |||||
| <H2>Classes</H2> | |||||
| <p> | |||||
| <table border="0" cellpadding="5" cellspacing="2" width="95%"> | |||||
| <!--Header--> | |||||
| <xsl:call-template name="packageSummaryHeader"/> | |||||
| <!--Value--> | |||||
| <xsl:apply-templates select="testsuite"> | |||||
| <xsl:sort select="@name"/> | |||||
| </xsl:apply-templates> | |||||
| </table> | |||||
| </p> | |||||
| </BODY> | |||||
| </HTML> | |||||
| </xsl:template> | |||||
| <xsl:template match="testsuite"> | |||||
| <tr valign="top"> | |||||
| <!-- set a nice color depending if there is an error/failure --> | |||||
| <xsl:attribute name="class"> | |||||
| <xsl:choose> | |||||
| <xsl:when test="@failures[.> 0]">Failure</xsl:when> | |||||
| <xsl:when test="@errors[.> 0]">Error</xsl:when> | |||||
| <xsl:otherwise>Pass</xsl:otherwise> | |||||
| </xsl:choose> | |||||
| </xsl:attribute> | |||||
| <!-- print testsuite information --> | |||||
| <td><a href="{@name}-details.html" target="classFrame"><xsl:value-of select="@name"/></a></td> | |||||
| <td><xsl:value-of select="@tests"/></td> | |||||
| <td><xsl:value-of select="@errors"/></td> | |||||
| <td><xsl:value-of select="@failures"/></td> | |||||
| <td> | |||||
| <xsl:call-template name="display-time"> | |||||
| <xsl:with-param name="value" select="@time"/> | |||||
| </xsl:call-template> | |||||
| </td> | |||||
| </tr> | |||||
| </xsl:template> | |||||
| </xsl:stylesheet> | |||||
| @@ -1,238 +0,0 @@ | |||||
| <?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"> | |||||
| <xsl:param name="value"/> | |||||
| <xsl:value-of select="format-number($value,'0.000')"/> | |||||
| </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> | |||||
| <!-- | |||||
| transform string like a.b.c to ../../../ | |||||
| @param path the path to transform into a descending directory path | |||||
| --> | |||||
| <xsl:template name="path"> | |||||
| <xsl:param name="path"/> | |||||
| <xsl:if test="contains($path,'.')"> | |||||
| <xsl:text>../</xsl:text> | |||||
| <xsl:call-template name="path"> | |||||
| <xsl:with-param name="path"><xsl:value-of select="substring-after($path,'.')"/></xsl:with-param> | |||||
| </xsl:call-template> | |||||
| </xsl:if> | |||||
| <xsl:if test="not(contains($path,'.')) and not($path = '')"> | |||||
| <xsl:text>../</xsl:text> | |||||
| </xsl:if> | |||||
| </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> | |||||
| <!-- | |||||
| ===================================================================== | |||||
| classes summary header | |||||
| ===================================================================== | |||||
| --> | |||||
| <xsl:template name="header"> | |||||
| <xsl:param name="useFrame">no</xsl:param> | |||||
| <xsl:param name="path"/> | |||||
| <h1>Unit Tests Results</h1> | |||||
| <table width="100%"> | |||||
| <tr> | |||||
| <td align="left"> | |||||
| <!--xsl:choose> | |||||
| <xsl:when test="$useFrame='yes'">Frames  | |||||
| <a target="_top"> | |||||
| <xsl:attribute name="href"><xsl:call-template name="path"><xsl:with-param name="path" select="$path"/></xsl:call-template>noframes.html</xsl:attribute>No frames</a></xsl:when> | |||||
| <xsl:when test="$useFrame='no'"><a target="_top"><xsl:attribute name="href"><xsl:call-template name="path"><xsl:with-param name="path" select="$path"/></xsl:call-template>index.html</xsl:attribute>Frames</a> No frames</xsl:when> | |||||
| <xsl:otherwise><code>ERROR : useFrame must have 'no' or 'yes' as value.</code></xsl:otherwise> | |||||
| </xsl:choose--> | |||||
| </td> | |||||
| <td align="right">Designed for use with <a href='http://www.junit.org'>JUnit</a> and <a href='http://jakarta.apache.org'>Ant</a>.</td> | |||||
| </tr> | |||||
| </table> | |||||
| <hr size="1"/> | |||||
| </xsl:template> | |||||
| <xsl:template name="summaryHeader"> | |||||
| <tr bgcolor="#A6CAF0" valign="top"> | |||||
| <td><b>Tests</b></td> | |||||
| <td><b>Failures</b></td> | |||||
| <td><b>Errors</b></td> | |||||
| <td><b>Success Rate</b></td> | |||||
| <td nowrap="nowrap"><b>Time(s)</b></td> | |||||
| </tr> | |||||
| </xsl:template> | |||||
| <!-- | |||||
| ===================================================================== | |||||
| package summary header | |||||
| ===================================================================== | |||||
| --> | |||||
| <xsl:template name="packageSummaryHeader"> | |||||
| <tr bgcolor="#A6CAF0" valign="top"> | |||||
| <td width="75%"><b>Name</b></td> | |||||
| <td width="5%"><b>Tests</b></td> | |||||
| <td width="5%"><b>Errors</b></td> | |||||
| <td width="5%"><b>Failures</b></td> | |||||
| <td width="10%" nowrap="nowrap"><b>Time(s)</b></td> | |||||
| </tr> | |||||
| </xsl:template> | |||||
| <!-- | |||||
| ===================================================================== | |||||
| classes summary header | |||||
| ===================================================================== | |||||
| --> | |||||
| <xsl:template name="classesSummaryHeader"> | |||||
| <tr bgcolor="#A6CAF0" valign="top"> | |||||
| <td width="18%"><b>Name</b></td> | |||||
| <td width="7%"><b>Status</b></td> | |||||
| <td width="70%"><b>Type</b></td> | |||||
| <td width="5%" nowrap="nowrap"><b>Time(s)</b></td> | |||||
| </tr> | |||||
| </xsl:template> | |||||
| <!-- | |||||
| ===================================================================== | |||||
| Write the summary report | |||||
| It creates a table with computed values from the document: | |||||
| User | Date | Environment | Tests | Failures | Errors | Rate | Time | |||||
| Note : this template must call at the testsuites level | |||||
| ===================================================================== | |||||
| --> | |||||
| <xsl:template name="summary"> | |||||
| <h2>Summary</h2> | |||||
| <xsl:variable name="testCount" select="sum(./testsuite/@tests)"/> | |||||
| <xsl:variable name="errorCount" select="sum(./testsuite/@errors)"/> | |||||
| <xsl:variable name="failureCount" select="sum(./testsuite/@failures)"/> | |||||
| <xsl:variable name="timeCount" select="sum(./testsuite/@time)"/> | |||||
| <xsl:variable name="successRate" select="($testCount - $failureCount - $errorCount) div $testCount"/> | |||||
| <table border="0" cellpadding="5" cellspacing="2" width="95%"> | |||||
| <xsl:call-template name="summaryHeader"/> | |||||
| <tr valign="top"> | |||||
| <xsl:attribute name="class"> | |||||
| <xsl:choose> | |||||
| <xsl:when test="$failureCount > 0">Failure</xsl:when> | |||||
| <xsl:when test="$errorCount > 0">Error</xsl:when> | |||||
| <xsl:otherwise>Pass</xsl:otherwise> | |||||
| </xsl:choose> | |||||
| </xsl:attribute> | |||||
| <td><xsl:value-of select="$testCount"/></td> | |||||
| <td><xsl:value-of select="$failureCount"/></td> | |||||
| <td><xsl:value-of select="$errorCount"/></td> | |||||
| <td> | |||||
| <xsl:call-template name="display-percent"> | |||||
| <xsl:with-param name="value" select="$successRate"/> | |||||
| </xsl:call-template> | |||||
| </td> | |||||
| <td> | |||||
| <xsl:call-template name="display-time"> | |||||
| <xsl:with-param name="value" select="$timeCount"/> | |||||
| </xsl:call-template> | |||||
| </td> | |||||
| </tr> | |||||
| </table> | |||||
| Note: <i>failures</i> are anticipated and checked for with assertions while <i>errors</i> are unanticipated. | |||||
| </xsl:template> | |||||
| <!-- | |||||
| ===================================================================== | |||||
| testcase report | |||||
| ===================================================================== | |||||
| --> | |||||
| <xsl:template match="testcase"> | |||||
| <TR valign="top"> | |||||
| <xsl:attribute name="class"> | |||||
| <xsl:choose> | |||||
| <xsl:when test="./failure">Failure</xsl:when> | |||||
| <xsl:when test="./error">Error</xsl:when> | |||||
| <xsl:otherwise>Pass</xsl:otherwise> | |||||
| </xsl:choose> | |||||
| </xsl:attribute> | |||||
| <TD><xsl:value-of select="./@name"/></TD> | |||||
| <xsl:choose> | |||||
| <xsl:when test="./failure"> | |||||
| <td>Failure</td> | |||||
| <td><xsl:apply-templates select="./failure"/></td> | |||||
| </xsl:when> | |||||
| <xsl:when test="./error"> | |||||
| <TD>Error</TD> | |||||
| <td><xsl:apply-templates select="./error"/></td> | |||||
| </xsl:when> | |||||
| <xsl:otherwise> | |||||
| <TD>Success</TD> | |||||
| <TD><xsl:apply-templates select="./pass"/></TD> | |||||
| </xsl:otherwise> | |||||
| </xsl:choose> | |||||
| <td> | |||||
| <xsl:call-template name="display-time"> | |||||
| <xsl:with-param name="value" select="@time"/> | |||||
| </xsl:call-template> | |||||
| </td> | |||||
| </TR> | |||||
| </xsl:template> | |||||
| <!-- Note : the below template error and failure are the same style | |||||
| so just call the same style store in the toolkit template --> | |||||
| <xsl:template match="failure"> | |||||
| <xsl:call-template name="display-failures"/> | |||||
| </xsl:template> | |||||
| <xsl:template match="error"> | |||||
| <xsl:call-template name="display-failures"/> | |||||
| </xsl:template> | |||||
| <!-- Style for the error and failure in the tescase template --> | |||||
| <xsl:template name="display-failures"> | |||||
| <xsl:choose> | |||||
| <xsl:when test="not(@message)">N/A</xsl:when> | |||||
| <xsl:otherwise> | |||||
| <xsl:value-of select="@message"/> | |||||
| </xsl:otherwise> | |||||
| </xsl:choose> | |||||
| <!-- display the stacktrace --> | |||||
| <code> | |||||
| <p/> | |||||
| <xsl:call-template name="br-replace"> | |||||
| <xsl:with-param name="word" select="."/> | |||||
| </xsl:call-template> | |||||
| </code> | |||||
| <!-- the later is better but might be problematic for non-21" monitors... --> | |||||
| <!--pre><xsl:value-of select="."/></pre--> | |||||
| </xsl:template> | |||||
| <!-- I am sure that all nodes are called --> | |||||
| <xsl:template match="*"> | |||||
| <xsl:apply-templates/> | |||||
| </xsl:template> | |||||
| </xsl:stylesheet> | |||||