-
Notifications
You must be signed in to change notification settings - Fork 7
/
Copy pathResultScanner.xsl
142 lines (122 loc) · 5.69 KB
/
ResultScanner.xsl
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
<?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>