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> |