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>&#xA;</xsl:text>
 29	</xsl:template>
 30  
 31  <xsl:template match="g:annotations">
 32    <xsl:if test="g:annotation">
 33      <xsl:text>* Annotations:&#xA;&#xA;</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>&#xA;</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:&#xA;&#xA;</xsl:text>
 92      <xsl:apply-templates select="$passed" />
 93      <xsl:text>&#xA;</xsl:text>
 94    </xsl:if>
 95
 96    <xsl:if test="$show-failed-tests and $failed">
 97      <xsl:text>* Failed:&#xA;&#xA;</xsl:text>
 98      <xsl:apply-templates select="$failed" />
 99      <xsl:text>&#xA;</xsl:text>
100    </xsl:if>
101    
102    <xsl:if test="$show-inconclusive-tests and $inconclusive">
103      <xsl:text>* Inconclusive:&#xA;&#xA;</xsl:text>
104      <xsl:apply-templates select="$inconclusive" />
105      <xsl:text>&#xA;</xsl:text>
106    </xsl:if>
107    
108    <xsl:if test="$show-skipped-tests and $skipped">
109      <xsl:text>* Skipped:&#xA;&#xA;</xsl:text>
110      <xsl:apply-templates select="$skipped" />
111      <xsl:text>&#xA;</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>&#xA;</xsl:text>
124    <xsl:apply-templates select="g:executionLog" />
125    <xsl:text>&#xA;</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>&lt;Stream: </xsl:text>
143    <xsl:value-of select="@name" />
144    <xsl:text>&gt;&#xA;</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>&lt;End Stream&gt;&#xA;</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>&lt;Section: </xsl:text>
182    <xsl:value-of select="@name" />
183    <xsl:text>&gt;&#xA;</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>&lt;End Section&gt;&#xA;</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>&lt;Attachment: </xsl:text>
196    <xsl:value-of select="@attachmentName"/>
197    <xsl:text>&gt;&#xA;</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>