aboutsummaryrefslogtreecommitdiff
path: root/tests/qtestlib2junitxml.xsl
diff options
context:
space:
mode:
authorTomas Junnonen <tomas.junnonen@nokia.com>2010-02-15 14:54:48 +0200
committerTomas Junnonen <tomas.junnonen@nokia.com>2010-02-15 14:54:48 +0200
commit0299123821c6c6367c23f59e135737f32b26c898 (patch)
tree48dcda1537576e0c646b4cfe823e83c2186a6a1e /tests/qtestlib2junitxml.xsl
Changes: First public release
RevBy: TrustMe
Diffstat (limited to 'tests/qtestlib2junitxml.xsl')
-rw-r--r--tests/qtestlib2junitxml.xsl82
1 files changed, 82 insertions, 0 deletions
diff --git a/tests/qtestlib2junitxml.xsl b/tests/qtestlib2junitxml.xsl
new file mode 100644
index 00000000..aab2d0f3
--- /dev/null
+++ b/tests/qtestlib2junitxml.xsl
@@ -0,0 +1,82 @@
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
+
+<xsl:output method="xml" indent="yes" />
+<xsl:decimal-format decimal-separator="." grouping-separator="," />
+
+<!-- misc variables -->
+<xsl:variable name="classname" select="/TestCase/@name" />
+<xsl:variable name="total-tests" select="count(/TestCase/TestFunction)" />
+<xsl:variable name="total-failures" select="count(/TestCase/TestFunction/Incident[@type='fail'])" />
+
+<!-- main template call -->
+<xsl:template match="/">
+ <xsl:apply-templates select="TestCase"/>
+</xsl:template>
+
+<xsl:template match="TestCase">
+ <testsuite name="{$classname}" tests="{$total-tests}" failures="{$total-failures}" errors="0" time="0.0">
+ <xsl:apply-templates select="Environment"/>
+ <xsl:apply-templates select="TestFunction" />
+ <xsl:call-template name="display-system-out" />
+ <xsl:call-template name="display-system-err" />
+ </testsuite>
+</xsl:template>
+
+<xsl:template match="Environment">
+ <properties>
+ <xsl:for-each select="*">
+ <property name="{name()}" value="{text()}" />
+ </xsl:for-each>
+ </properties>
+</xsl:template>
+
+<xsl:template match="TestFunction">
+ <testcase classname="{$classname}" name="{@name}" time="0.0">
+ <!-- handle fail -->
+ <xsl:if test="Incident/@type = 'fail'">
+ <!-- will be used to generate "nice" error message -->
+ <xsl:variable name="file" select="Incident/@file" />
+ <xsl:variable name="line" select="Incident/@line" />
+ <xsl:variable name="description">
+ <xsl:value-of select="Incident/Description" />
+ </xsl:variable>
+
+ <!-- display a reasonable error message -->
+ <xsl:element name="failure">
+ <xsl:attribute name="type">Standard</xsl:attribute>
+ <xsl:attribute name="message">
+ <xsl:value-of select="concat($file,':',$line,' :: ',$description)" />
+ </xsl:attribute>
+ </xsl:element>
+
+ </xsl:if>
+
+ <!-- handle skip -->
+ <xsl:if test="Incident/@type = 'skip'">
+
+ </xsl:if>
+ </testcase>
+</xsl:template>
+
+<xsl:template name="display-system-out">
+ <system-out>
+ <xsl:for-each select="/TestCase/TestFunction/Incident[@type='fail'] | /TestCase/TestFunction/Message[@type='skip']">
+ <xsl:choose>
+ <xsl:when test="@type='fail'">
+ <xsl:value-of select="Description"/>
+ </xsl:when>
+ <xsl:when test="@type='skip'">
+ <xsl:value-of select="Description"/>
+ </xsl:when>
+ </xsl:choose>
+ </xsl:for-each>
+ </system-out>
+</xsl:template>
+
+<xsl:template name="display-system-err">
+ <!-- do nothing for now -->
+ <system-err />
+</xsl:template>
+
+</xsl:stylesheet>
+