changeset 259:7ae04e8d830a

added styles for junit xml report
author Jiri Vanek <jvanek@redhat.com>
date Thu, 16 Jun 2011 16:23:26 +0200
parents e0741a8c44b6
children e54277aefdaf
files ChangeLog Makefile.am tests/report-styles/index.js tests/report-styles/jreport.xsl tests/report-styles/report.css
diffstat 5 files changed, 298 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- a/ChangeLog	Tue Jun 14 13:30:55 2011 -0400
+++ b/ChangeLog	Thu Jun 16 16:23:26 2011 +0200
@@ -1,3 +1,17 @@
+2011-06-16 Jiri Vanek <jvanek@redhat.com>
+
+	* tests/report-styles/index.js: fast navigation functions
+	* tests/report-styles/report.css: styles for transformed result
+	* tests/report-styles/jreport.xsl: template for human-readable
+	xml->html transformation.
+	* Makefile.am: New variable for report-styles directory;
+	($(TESTS_DIR)/$(REPORT_STYLES_DIRNAME)): goal for copying styles and    
+	javascripts; (run-netx-unit-tests): added nonfaling xsltproc
+	transformation of sheet and unit-tests' xml report to index_unit.html;
+	(clean-netx-unit-tests): now depends also on clean_tests_reports;
+	(clean_tests_reports): new goal to remove report styles directory and
+	indexs html files. 
+
 2011-06-14  Andrew Su  <asu@redhat.com>
 
 	* netx/net/sourceforge/jnlp/controlpanel/ControlPanel.java:
--- a/Makefile.am	Tue Jun 14 13:30:55 2011 -0400
+++ b/Makefile.am	Thu Jun 16 16:23:26 2011 +0200
@@ -6,6 +6,8 @@
 NETX_EXTRA_DIR=$(abs_top_srcdir)/extra/net/sourceforge/javaws/about/resources
 NETX_EXTRA_DIST_DIR=$(abs_top_builddir)/extra-lib/net/sourceforge/javaws/about/resources
 
+REPORT_STYLES_DIRNAME=report-styles
+
 TESTS_SRCDIR=$(abs_top_srcdir)/tests
 TESTS_DIR=$(abs_top_builddir)/tests.build
 
@@ -460,8 +462,13 @@
 	mkdir -p stamps && \
 	touch $@
 
+$(TESTS_DIR)/$(REPORT_STYLES_DIRNAME):
+	mkdir $(TESTS_DIR)/$(REPORT_STYLES_DIRNAME)
+	cp $(TESTS_SRCDIR)/$(REPORT_STYLES_DIRNAME)/*.css $(TESTS_DIR)/$(REPORT_STYLES_DIRNAME)/
+	cp $(TESTS_SRCDIR)/$(REPORT_STYLES_DIRNAME)/*.js $(TESTS_DIR)/$(REPORT_STYLES_DIRNAME)/
+
 run-netx-unit-tests: stamps/netx-unit-tests-compile.stamp \
- $(JUNIT_RUNNER_JAR)
+ $(JUNIT_RUNNER_JAR) $(TESTS_DIR)/$(REPORT_STYLES_DIRNAME) 
 	cp {$(NETX_UNIT_TEST_SRCDIR),$(NETX_UNIT_TEST_DIR)}/net/sourceforge/jnlp/basic.jnlp
 	cd $(NETX_UNIT_TEST_DIR) ; \
 	class_names= ; \
@@ -476,6 +483,7 @@
 	  > stdout.log 2> stderr.log ; \
 	cat stdout.log ; \
 	cat stderr.log >&2
+	-xsltproc $(TESTS_SRCDIR)/$(REPORT_STYLES_DIRNAME)/jreport.xsl $(TESTS_DIR)/netx/unit/tests-output.xml > $(TESTS_DIR)/index_unit.html
 
 clean-netx-tests: clean-netx-unit-tests clean-junit-runner
 	if [ -e $(TESTS_DIR)/netx ]; then \
@@ -487,11 +495,15 @@
 	rm -rf $(JUNIT_RUNNER_DIR)
 	rm -f $(JUNIT_RUNNER_JAR)
 
-clean-netx-unit-tests:
+clean-netx-unit-tests: clean_tests_reports
 	rm -f netx-unit-tests-source-files.txt
 	rm -rf $(NETX_UNIT_TEST_DIR)
 	rm -f stamps/netx-unit-tests-compile.stamp
 
+clean_tests_reports:
+	rm -rf  $(TESTS_DIR)/$(REPORT_STYLES_DIRNAME)/
+	rm -f  $(TESTS_DIR)/index*.html
+
 # plugin tests
 
 if ENABLE_PLUGIN
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/report-styles/index.js	Thu Jun 16 16:23:26 2011 +0200
@@ -0,0 +1,20 @@
+
+function negateIdDisplay(which) {
+	var e = document.getElementById(which);
+	if (e.style.display=="block") {
+		e.style.display="none"
+	} else {
+		e.style.display="block"
+	}
+}
+
+
+function setClassDisplay(which,what) {
+	var e = document.getElementsByClassName(which);
+	for ( var i = 0; i < e.length; i++ ) {
+		e[i].style.display=what
+	}
+}
+
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/report-styles/jreport.xsl	Thu Jun 16 16:23:26 2011 +0200
@@ -0,0 +1,229 @@
+<?xml version="1.0"?>
+<!--
+
+This file is part of IcedTea.
+
+IcedTea is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2, or (at your option)
+any later version.
+
+IcedTea is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with IcedTea; see the file COPYING.  If not, write to the
+Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+Linking this library statically or dynamically with other modules is
+making a combined work based on this library.  Thus, the terms and
+conditions of the GNU General Public License cover the whole
+combination.
+
+As a special exception, the copyright holders of this library give you
+permission to link this library with independent modules to produce an
+executable, regardless of the license terms of these independent
+modules, and to copy and distribute the resulting executable under
+terms of your choice, provided that you also meet, for each linked
+independent module, the terms and conditions of the license of that
+module.  An independent module is a module which is not derived from
+or based on this library.  If you modify this library, you may extend
+this exception to your version of the library, but you are not
+obligated to do so.  If you do not wish to do so, delete this
+exception statement from your version.
+
+ -->
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
+  <xsl:template match="/">
+<html>
+ <head>
+    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+    </meta>
+    <script src="report-styles/index.js">
+    </script>
+    <link href="report-styles/report.css" rel="stylesheet" type="text/css">
+    </link>
+  </head>
+<body onload='setClassDisplay("trace","none");'>
+    <div id="wholePage">
+    <h3>Date:</h3>
+    <xsl:value-of select="/testsuite/date"/>
+    <br/>
+    <h2>Result: (<xsl:value-of select="round(sum(/testsuite/testcase/@time))"/>s)</h2>
+    <div class="tablee">
+      <div class="row">
+        <div class="cell1">TOTAL: </div>
+        <div class="cell2">
+          <xsl:value-of select="/testsuite/stats/summary/total"/>
+        </div>
+        <div class="space-line"></div>
+      </div>
+      <div class="row passed">
+        <div class="cell1">passed: </div>
+        <div class="cell2">
+          <xsl:value-of select="/testsuite/stats/summary/passed"/>
+        </div>
+        <div class="space-line"></div>
+      </div>
+      <div class="row failed">
+        <div class="cell1">failed: </div>
+        <div class="cell2">
+          <xsl:value-of select="/testsuite/stats/summary/failed"/>
+        </div>
+        <div class="space-line"></div>
+      </div>
+      <div class="row ignored">
+        <div class="cell1">ignored: </div>
+        <div class="cell2">
+          <xsl:value-of select="/testsuite/stats/summary/ignored"/>
+        </div>
+        <div class="space-line"></div>
+      </div>
+    </div>
+    <h2>Classes:</h2>
+    <xsl:for-each select="/testsuite/stats/classes/class">
+      <div>
+        <xsl:attribute name="class">
+          <xsl:choose>
+            <xsl:when test="passed = total">
+		passed
+	      </xsl:when>
+            <xsl:otherwise>
+	        failed
+	    </xsl:otherwise>
+          </xsl:choose>
+        </xsl:attribute>
+        <a class="classSumaryName"><xsl:attribute name="href">
+    #<xsl:value-of select="@name"/>
+  </xsl:attribute><xsl:value-of select="@name"/>
+(<xsl:value-of select="@time"/>ms):
+</a>
+      </div>
+      <blockquote>
+        <div class="tablee">
+          <div class="row">
+            <div class="cell1">TOTAL: </div>
+            <div class="cell2">
+              <xsl:value-of select="total"/>
+            </div>
+            <div class="space-line"></div>
+          </div>
+          <div class="row passed">
+            <div class="cell1">passed: </div>
+            <div class="cell2">
+              <xsl:value-of select="passed"/>
+            </div>
+            <div class="space-line"></div>
+          </div>
+          <div class="row failed">
+            <div class="cell1">failed: </div>
+            <div class="cell2">
+              <xsl:value-of select="failed"/>
+            </div>
+            <div class="space-line"></div>
+          </div>
+          <div class="row ignored">
+            <div class="cell1">ignored: </div>
+            <div class="cell2">
+              <xsl:value-of select="ignored"/>
+            </div>
+            <div class="space-line"></div>
+          </div>
+        </div>
+      </blockquote>
+      <hr/>
+    </xsl:for-each>
+
+   
+    <h2>Individual results:</h2>
+    <button onclick="setClassDisplay('trace','none')">NoneTrace</button>
+    <button onclick="setClassDisplay('trace','block')">AllTraces</button>
+    <xsl:for-each select="/testsuite/testcase">
+      <div>
+        <xsl:attribute name="class">
+          <xsl:choose>
+            <xsl:when test="error">
+           failed
+            </xsl:when>
+            <xsl:otherwise>
+           passed 
+            </xsl:otherwise>
+          </xsl:choose>
+        </xsl:attribute>
+        <a>
+          <xsl:attribute name="name">
+            <xsl:value-of select="normalize-space(@classname)"/>
+          </xsl:attribute>
+        </a>
+        <div class="lineHeader">
+          <div class="clazz">
+            <xsl:value-of select="@classname"/>
+          </div>
+          <xsl:text disable-output-escaping="no"> - </xsl:text>
+          <div class="method">
+            <xsl:value-of select="@name"/>
+          </div>
+        </div>
+        <div class="result">
+          <xsl:choose>
+            <xsl:when test="not(error)">
+              <div class="status">
+         PASSED (<xsl:value-of select="@time"/>s)
+         </div>
+            </xsl:when>
+            <xsl:otherwise>
+              <div class="status">
+        FAILED (<xsl:value-of select="@time"/>s)
+         </div>
+              <div class="wtrace">
+                <div class="theader">
+                  <xsl:value-of select="error/@type"/>  <xsl:text disable-output-escaping="no"> - </xsl:text>
+                  <xsl:value-of select="error/@message"/>  
+                  <button onclick="negateIdDisplay('{generate-id(error)}')">StackTrace</button>
+                </div>
+                <div class="trace" id="{generate-id(error)}">
+                  <pre>
+                    <xsl:value-of select="error"/>
+                  </pre>
+                </div>
+              </div>
+            </xsl:otherwise>
+          </xsl:choose>
+          <div class="space-line"></div>
+        </div>
+        <div class="space-line"></div>
+      </div>
+      <div class="space-line"></div>
+    </xsl:for-each>
+
+          <div class="stbound">
+            <div class="theader stExt2">
+            STD-OUT - <button onclick="negateIdDisplay('{generate-id(/testsuite/system-out)}')">Show/hide</button>
+            </div>
+            <div class="trace stExt3" id="{generate-id(/testsuite/system-out)}">
+              <pre>
+                <xsl:value-of select="/testsuite/system-out"/>
+              </pre>
+            </div>
+          </div>
+ <div class="space-line"></div>
+    <div class="stbound">
+            <div class="theader stExt2">
+            STD-ERR - <button onclick="negateIdDisplay('{generate-id(/testsuite/system-err)}')">Show/hide</button>
+            </div>
+            <div class="trace stExt3" id="{generate-id(/testsuite/system-err)}">
+              <pre>
+                <xsl:value-of select="/testsuite/system-err"/>
+              </pre>
+            </div>
+          </div>
+ <div class="space-line"></div>
+
+      </div>
+    </body>
+   </html>
+  </xsl:template>
+</xsl:stylesheet>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/report-styles/report.css	Thu Jun 16 16:23:26 2011 +0200
@@ -0,0 +1,21 @@
+div.passed {background-color:green;height:auto }
+div.failed {background-color:red ;height:auto}
+div.ignored {background-color:yellow ;height:auto}
+
+div.clazz {display:inline }
+div.method {display:inline }
+
+div.result {display:block; border: thin solid black ;height:auto}
+div.status {display:inline; }
+div.wtrace {display:inline; border: thin solid black; float: right;height:auto}
+div.theader {display:block; border: thin solid black}
+div.trace {display:block; border: thin solid black}
+
+div.space-line {  clear: both; margin: 0; padding: 0; width: auto;}
+
+div.tablee {width:200px; border: thin solid black; }
+div.row { border: thin solid black; }
+div.cell1 {display:inline; float: left;height:auto}
+div.cell2 {display:inline; float: right;height:auto}
+
+a.classSumaryName{font-weight:bold}