ResultScanner.xsl (95 lines of code) (raw):

<?xml version="1.0"?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:lxslt="http://xml.apache.org/xslt" xmlns:redirect="org.apache.xalan.lib.Redirect" extension-element-prefixes="redirect" version="1.0"> <xsl:output method="html" doctype-public="-//W3C//DTD HTML 4.0 Transitional"/> <lxslt:component prefix="redirect" elements="write open close" functions=""> <lxslt:script lang="javaclass" src="org.apache.xalan.lib.Redirect"/> </lxslt:component> <!-- FileName: ResultScanner.xsl --> <!-- Author: shane_curcuru@us.ibm.com --> <!-- Purpose: Meta-scanner for groups of results produced by org.apache.qetest.ResultScanner --> <!-- Basic scanning stylesheet for individual testfile results --> <xsl:include href="FailScanner.xsl"/> <!-- Name of file for mini-fails redirected output --> <xsl:param name="redirectFilename">ResultReportMini.html</xsl:param> <!-- ================================== --> <!-- Constants from org.apache.qetest.ResultScanner --> <xsl:variable name="goodResult">ok</xsl:variable> <xsl:variable name="badResult">notok</xsl:variable> <!-- ================================== --> <!-- Main template: output an HTML page --> <xsl:template match="resultfilelist"> <html> <head> <title><xsl:text>ResultScanner: </xsl:text><xsl:value-of select="@logFile"/></title> </head> <body> <!-- A table of all fail results --> <h3>All bad results:</h3> <xsl:for-each select="testgroup/teststatus[@status = $badResult]"> <xsl:variable name="linkname" select="concat(../@href, '/', @href)" /> <xsl:element name="a"> <xsl:attribute name="href">#<xsl:value-of select="$linkname"/></xsl:attribute> <xsl:value-of select="$linkname"/> </xsl:element> <xsl:call-template name="miniStatusTable" /> <br/> </xsl:for-each> <redirect:open select="$redirectFilename" /> <xsl:apply-templates/> <redirect:close select="$redirectFilename" /> </body> </html> </xsl:template> <!-- For each bad file, pre-read summary --> <xsl:template name="miniStatusTable"> <!-- Note this entire template is quite inefficient, since it forces an extra loading of the status doc that will be loaded again later on, but it works for now. --> <!-- Read in the teststatus file we found and get it's info --> <xsl:variable name="statusfilename" select="concat(../@href, '/', @href)"/> <xsl:variable name="status" select="document($statusfilename)/teststatus"/> <xsl:text> P: </xsl:text> <xsl:value-of select="$status/@Pass-cases"/><xsl:text>/</xsl:text> <xsl:value-of select="$status/@Pass-checks"/><xsl:text>, </xsl:text> <xsl:text>F: </xsl:text> <xsl:value-of select="$status/@Fail-cases"/><xsl:text>/</xsl:text> <xsl:value-of select="$status/@Fail-checks"/><xsl:text>, </xsl:text> <xsl:text>E: </xsl:text> <xsl:value-of select="$status/@Errr-cases"/><xsl:text>/</xsl:text> <xsl:value-of select="$status/@Errr-checks"/><xsl:text>, </xsl:text> <xsl:text>A: </xsl:text> <xsl:value-of select="$status/@Ambg-cases"/><xsl:text>/</xsl:text> <xsl:value-of select="$status/@Ambg-checks"/><xsl:text>, </xsl:text> <xsl:text>I: </xsl:text> <xsl:value-of select="$status/@Incp-cases"/> </xsl:template> <!-- For each directory full of results found, print out a summary --> <xsl:template match="testgroup"> <!-- Cache the value of the dir for later use --> <xsl:variable name="dir" select="@href"/> <h3><xsl:text>Testgroup: </xsl:text><xsl:value-of select="$dir"/></h3> <font size="-1"> <xsl:apply-templates select="teststatus[@status = $goodResult]" /> </font> <br/> <xsl:apply-templates select="teststatus[@status = $badResult]" > <xsl:with-param name="dir" select="$dir"/> </xsl:apply-templates> </xsl:template> <!-- Just list names of good result files (passing/ambg), nothing else --> <xsl:template match="teststatus[@status = $goodResult][starts-with(@href, 'Ambg')]"> <b><xsl:value-of select="@href"/></b><xsl:text> </xsl:text> </xsl:template> <xsl:template match="teststatus[@status = $goodResult]"> <xsl:value-of select="@href"/><xsl:text> </xsl:text> </xsl:template> <!-- For bad result summary files, go look up the actual file and report it --> <xsl:template match="teststatus[@status = $badResult]"> <xsl:param name="dir" select="."/> <br/> <!-- Read in the teststatus file we found and get it's info --> <xsl:variable name="statusfilename" select="concat($dir, '/', @href)"/> <xsl:variable name="status" select="document($statusfilename)/teststatus"/> <!-- From that info, read in the actual results file associated therewith --> <xsl:variable name="testresultsfilename" select="concat($status/@baseref, '/', $status/@logFile)"/> <xsl:variable name="testresults" select="document($testresultsfilename)/resultsfile"/> <!-- Anchor element for each test --> <xsl:element name="a"> <xsl:attribute name="name"><xsl:value-of select="$statusfilename"/></xsl:attribute> <hr/> </xsl:element> <!-- Link to the full xml source of each test --> <font size="-1"><xsl:text> Original results.xml:</xsl:text> <xsl:element name="a"> <xsl:attribute name="href"><xsl:value-of select="$testresultsfilename"/></xsl:attribute> <xsl:value-of select="$testresults/testfile/@filename"/> </xsl:element> </font> <!-- Now scan the actual underlying result file for stuff --> <xsl:apply-templates select="$testresults/testfile"> <xsl:with-param name="redirectFilename" select="$redirectFilename" /> </xsl:apply-templates> </xsl:template> <!-- Override default text node processing, so statistics, arbitrary messages, and other stuff is skipped --> <xsl:template match="text()"/> </xsl:stylesheet>