main
1<?xml version="1.0" encoding="UTF-8"?>
2<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
3 xmlns:g="http://www.gallio.org/">
4 <xsl:param name="resourceRoot" select="''" />
5
6 <xsl:param name="show-passed-tests">true</xsl:param>
7 <xsl:param name="show-failed-tests">true</xsl:param>
8 <xsl:param name="show-inconclusive-tests">true</xsl:param>
9 <xsl:param name="show-skipped-tests">true</xsl:param>
10
11 <xsl:output method="text" encoding="utf-8"/>
12
13 <xsl:template match="/">
14 <xsl:apply-templates select="//g:report" />
15 </xsl:template>
16
17 <xsl:template match="g:report">
18 <xsl:apply-templates select="." mode="results"/>
19 <xsl:apply-templates select="g:testModel/g:annotations" />
20 <xsl:apply-templates select="g:testPackageRun/g:statistics" />
21 </xsl:template>
22
23 <xsl:template match="g:statistics">
24 <xsl:text>* Results: </xsl:text>
25 <xsl:call-template name="format-statistics">
26 <xsl:with-param name="statistics" select="." />
27 </xsl:call-template>
28 <xsl:text>
</xsl:text>
29 </xsl:template>
30
31 <xsl:template match="g:annotations">
32 <xsl:if test="g:annotation">
33 <xsl:text>* Annotations:

</xsl:text>
34 <xsl:apply-templates select="g:annotation[@type='error']"/>
35 <xsl:apply-templates select="g:annotation[@type='warning']"/>
36 <xsl:apply-templates select="g:annotation[@type='info']"/>
37 </xsl:if>
38 </xsl:template>
39
40 <xsl:template match="g:annotation">
41 <xsl:call-template name="indent">
42 <xsl:with-param name="text">
43 <xsl:text>[</xsl:text><xsl:value-of select="@type"/><xsl:text>] </xsl:text>
44 <xsl:value-of select="@message"/>
45 </xsl:with-param>
46 <xsl:with-param name="firstLinePrefix" select="''" />
47 </xsl:call-template>
48
49 <xsl:if test="g:codeLocation/@path">
50 <xsl:call-template name="indent">
51 <xsl:with-param name="text">
52 <xsl:text>Location: </xsl:text>
53 <xsl:call-template name="format-code-location"><xsl:with-param name="codeLocation" select="g:codeLocation" /></xsl:call-template>
54 </xsl:with-param>
55 <xsl:with-param name="secondLinePrefix" select="' '" />
56 </xsl:call-template>
57 </xsl:if>
58
59 <xsl:if test="g:codeReference/@assembly">
60 <xsl:call-template name="indent">
61 <xsl:with-param name="text">
62 <xsl:text>Reference: </xsl:text>
63 <xsl:call-template name="format-code-reference"><xsl:with-param name="codeReference" select="g:codeReference" /></xsl:call-template>
64 </xsl:with-param>
65 <xsl:with-param name="secondLinePrefix" select="' '" />
66 </xsl:call-template>
67 </xsl:if>
68
69 <xsl:if test="@details">
70 <xsl:call-template name="indent">
71 <xsl:with-param name="text">
72 <xsl:text>Details: </xsl:text>
73 <xsl:value-of select="@details"/>
74 </xsl:with-param>
75 <xsl:with-param name="secondLinePrefix" select="' '" />
76 </xsl:call-template>
77 </xsl:if>
78
79 <xsl:text>
</xsl:text>
80 </xsl:template>
81
82 <xsl:template match="g:report" mode="results">
83 <xsl:variable name="testCases" select="g:testPackageRun/g:testStepRun/descendant-or-self::g:testStepRun[g:testStep/@isTestCase='true']" />
84
85 <xsl:variable name="passed" select="$testCases[g:result/g:outcome/@status='passed']" />
86 <xsl:variable name="failed" select="$testCases[g:result/g:outcome/@status='failed']" />
87 <xsl:variable name="inconclusive" select="$testCases[g:result/g:outcome/@status='inconclusive']" />
88 <xsl:variable name="skipped" select="$testCases[g:result/g:outcome/@status='skipped']" />
89
90 <xsl:if test="$show-passed-tests and $passed">
91 <xsl:text>* Passed:

</xsl:text>
92 <xsl:apply-templates select="$passed" />
93 <xsl:text>
</xsl:text>
94 </xsl:if>
95
96 <xsl:if test="$show-failed-tests and $failed">
97 <xsl:text>* Failed:

</xsl:text>
98 <xsl:apply-templates select="$failed" />
99 <xsl:text>
</xsl:text>
100 </xsl:if>
101
102 <xsl:if test="$show-inconclusive-tests and $inconclusive">
103 <xsl:text>* Inconclusive:

</xsl:text>
104 <xsl:apply-templates select="$inconclusive" />
105 <xsl:text>
</xsl:text>
106 </xsl:if>
107
108 <xsl:if test="$show-skipped-tests and $skipped">
109 <xsl:text>* Skipped:

</xsl:text>
110 <xsl:apply-templates select="$skipped" />
111 <xsl:text>
</xsl:text>
112 </xsl:if>
113 </xsl:template>
114
115 <xsl:template match="g:testStepRun">
116 <xsl:variable name="testId" select="g:testStep/@testId" />
117 <xsl:variable name="test" select="//g:test[@id=$testId]" />
118
119 <xsl:text>[</xsl:text>
120 <xsl:value-of select="$test/g:metadata/g:entry[@key='TestKind']/g:value" />
121 <xsl:text>] </xsl:text>
122 <xsl:value-of select="g:testStep/@fullName" />
123 <xsl:text>
</xsl:text>
124 <xsl:apply-templates select="g:executionLog" />
125 <xsl:text>
</xsl:text>
126
127 <xsl:apply-templates select="g:children/g:testStepRun" />
128 </xsl:template>
129
130 <xsl:template match="g:executionLog">
131 <xsl:apply-templates select="g:streams" />
132 </xsl:template>
133
134 <xsl:template match="g:streams">
135 <xsl:apply-templates select="g:stream" />
136 </xsl:template>
137
138 <xsl:template match="g:stream">
139 <xsl:param name="prefix" select="' '" />
140
141 <xsl:value-of select="$prefix"/>
142 <xsl:text><Stream: </xsl:text>
143 <xsl:value-of select="@name" />
144 <xsl:text>>
</xsl:text>
145 <xsl:apply-templates select="g:body">
146 <xsl:with-param name="prefix" select="concat($prefix, ' ')" />
147 </xsl:apply-templates>
148 <xsl:value-of select="$prefix"/>
149 <xsl:text><End Stream>
</xsl:text>
150 </xsl:template>
151
152 <xsl:template match="g:body">
153 <xsl:param name="prefix" select="''" />
154
155 <xsl:apply-templates select="g:contents">
156 <xsl:with-param name="prefix" select="$prefix" />
157 </xsl:apply-templates>
158 </xsl:template>
159
160 <xsl:template match="g:contents">
161 <xsl:param name="prefix" select="''" />
162
163 <xsl:apply-templates select="child::node()[self::g:text or self::g:section or self::g:embed]">
164 <xsl:with-param name="prefix" select="$prefix" />
165 </xsl:apply-templates>
166 </xsl:template>
167
168 <xsl:template match="g:text">
169 <xsl:param name="prefix" select="''" />
170
171 <xsl:call-template name="indent">
172 <xsl:with-param name="text" select="text()" />
173 <xsl:with-param name="prefix" select="$prefix" />
174 </xsl:call-template>
175 </xsl:template>
176
177 <xsl:template match="g:section">
178 <xsl:param name="prefix" select="''" />
179
180 <xsl:value-of select="$prefix"/>
181 <xsl:text><Section: </xsl:text>
182 <xsl:value-of select="@name" />
183 <xsl:text>>
</xsl:text>
184 <xsl:apply-templates select="g:contents">
185 <xsl:with-param name="prefix" select="concat($prefix, ' ')" />
186 </xsl:apply-templates>
187 <xsl:value-of select="$prefix"/>
188 <xsl:text><End Section>
</xsl:text>
189 </xsl:template>
190
191 <xsl:template match="g:embed">
192 <xsl:param name="prefix" select="''" />
193
194 <xsl:value-of select="$prefix"/>
195 <xsl:text><Attachment: </xsl:text>
196 <xsl:value-of select="@attachmentName"/>
197 <xsl:text>>
</xsl:text>
198 </xsl:template>
199
200 <xsl:template match="*">
201 </xsl:template>
202
203 <!-- Include the common report template -->
204 <xsl:include href="Gallio-Report.common.xsl" />
205</xsl:stylesheet>