[embjopr-commits] EMBJOPR SVN: r106 - in trunk/jsfunit: src/main/webapp and 4 other directories.

embjopr-commits at lists.jboss.org embjopr-commits at lists.jboss.org
Tue Jan 13 16:39:30 EST 2009


Author: stan.silvert at jboss.com
Date: 2009-01-13 16:39:30 -0500 (Tue, 13 Jan 2009)
New Revision: 106

Added:
   trunk/jsfunit/src/main/webapp/WEB-INF/classes/
   trunk/jsfunit/src/main/webapp/WEB-INF/classes/cactus.properties
   trunk/jsfunit/src/main/webapp/cactus-report.xsl
Modified:
   trunk/jsfunit/pom.xml
   trunk/jsfunit/src/main/webapp/WEB-INF/web.xml
   trunk/jsfunit/src/test/java/org/jboss/jopr/jsfunit/EmbjoprTestCase.java
   trunk/jsfunit/src/test/java/org/jboss/jopr/jsfunit/as5/DatasourceTest.java
Log:
Revert to HtmlUnit 2.3 and add support for kicking off tests from the browser.


Modified: trunk/jsfunit/pom.xml
===================================================================
--- trunk/jsfunit/pom.xml	2009-01-13 00:47:57 UTC (rev 105)
+++ trunk/jsfunit/pom.xml	2009-01-13 21:39:30 UTC (rev 106)
@@ -28,7 +28,22 @@
    </pluginRepositories>
 
    <dependencies>
+      
+      <!-- Dropping back to HtmlUnit 2.3 with Rhino until bug can be addressed -->
       <dependency>
+        <groupId>net.sourceforge.htmlunit</groupId>
+        <artifactId>htmlunit</artifactId>
+        <scope>compile</scope>
+        <version>2.3</version>
+      </dependency>
+      <dependency>
+        <groupId>rhino</groupId>
+        <artifactId>js</artifactId>
+        <scope>compile</scope>
+        <version>1.7R1</version>
+      </dependency>
+      
+      <dependency>
          <groupId>org.jboss.jsfunit</groupId>
          <artifactId>jboss-jsfunit-core</artifactId>
          <version>1.0.0.GA-SNAPSHOT</version>
@@ -38,6 +53,10 @@
                <groupId>xerces</groupId>
                <artifactId>xercesImpl</artifactId>
             </exclusion>
+            <exclusion>
+               <groupId>net.sourceforge.htmlunit</groupId>
+               <artifactId>htmlunit</artifactId>
+            </exclusion>
          </exclusions>
       </dependency>
       <dependency>

Added: trunk/jsfunit/src/main/webapp/WEB-INF/classes/cactus.properties
===================================================================
--- trunk/jsfunit/src/main/webapp/WEB-INF/classes/cactus.properties	                        (rev 0)
+++ trunk/jsfunit/src/main/webapp/WEB-INF/classes/cactus.properties	2009-01-13 21:39:30 UTC (rev 106)
@@ -0,0 +1 @@
+cactus.servletRedirectorName=ServletRedirector.jsfunit
\ No newline at end of file

Modified: trunk/jsfunit/src/main/webapp/WEB-INF/web.xml
===================================================================
--- trunk/jsfunit/src/main/webapp/WEB-INF/web.xml	2009-01-13 00:47:57 UTC (rev 105)
+++ trunk/jsfunit/src/main/webapp/WEB-INF/web.xml	2009-01-13 21:39:30 UTC (rev 106)
@@ -69,7 +69,7 @@
    
     <servlet-mapping>
       <servlet-name>ServletTestRunner</servlet-name>
-      <url-pattern>/ServletTestRunner</url-pattern>
+      <url-pattern>/ServletTestRunner.jsfunit</url-pattern>
     </servlet-mapping> 
     
     

Added: trunk/jsfunit/src/main/webapp/cactus-report.xsl
===================================================================
--- trunk/jsfunit/src/main/webapp/cactus-report.xsl	                        (rev 0)
+++ trunk/jsfunit/src/main/webapp/cactus-report.xsl	2009-01-13 21:39:30 UTC (rev 106)
@@ -0,0 +1,355 @@
+<?xml version="1.0"?>
+<!--
+ The Apache Software License, Version 1.1
+
+ Copyright (c) 2001-2003 The Apache Software Foundation.  All rights
+ reserved.
+
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions
+ are met:
+
+ 1. Redistributions of source code must retain the above copyright
+    notice, this list of conditions and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright
+    notice, this list of conditions and the following disclaimer in
+    the documentation and/or other materials provided with the
+    distribution.
+
+ 3. The end-user documentation included with the redistribution, if
+    any, must include the following acknowlegement:
+       "This product includes software developed by the
+        Apache Software Foundation (http://www.apache.org/)."
+    Alternately, this acknowlegement may appear in the software itself,
+    if and wherever such third-party acknowlegements normally appear.
+
+ 4. The names "The Jakarta Project", "Cactus", and "Apache Software
+    Foundation" must not be used to endorse or promote products derived
+    from this software without prior written permission. For written
+    permission, please contact apache at apache.org.
+
+ 5. Products derived from this software may not be called "Apache"
+    nor may "Apache" appear in their names without prior written
+    permission of the Apache Group.
+
+ THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
+ WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
+ ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
+ USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+ OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ SUCH DAMAGE.
+ ====================================================================
+
+ This software consists of voluntary contributions made by many
+ individuals on behalf of the Apache Software Foundation.  For more
+ information on the Apache Software Foundation, please see
+ <http://www.apache.org/>.
+ -->
+ 
+<!--
+ 
+ Sample stylesheet to be used with the Cactus ServletTestRunner output.
+ Based on the file junit-noframes.xsl from Apache Ant 1.5.
+ 
+ @author Stephane Bailliez <a href="mailto:sbailliez at apache.org"/>
+ @author Erik Hatcher <a href="mailto:ehatcher at apache.org"/>
+ @author Christopher Lenz <a href="mailto:cmlenz at apache.org"/>
+ 
+-->
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
+  <xsl:output method="html" indent="yes" encoding="US-ASCII"/>
+  <xsl:decimal-format decimal-separator="." grouping-separator="," />
+  <xsl:template match="testsuites">
+    <html>
+      <head>
+        <style type="text/css">
+          body {
+            font:normal 68% verdana,arial,helvetica;
+            color:#000000;
+          }
+          table tr td, table tr th {
+              font-size: 68%;
+          }
+          table.details tr th{
+            font-weight: bold;
+            text-align:left;
+            background:#a6caf0;
+          }
+          table.details tr td{
+            background:#eeeee0;
+          }
+          
+          p {
+            line-height:1.5em;
+            margin-top:0.5em; margin-bottom:1.0em;
+          }
+          h1 {
+            margin: 0px 0px 5px; font: 165% verdana,arial,helvetica
+          }
+          h2 {
+            margin-top: 1em; margin-bottom: 0.5em; font: bold 125% verdana,arial,helvetica
+          }
+          h3 {
+            margin-bottom: 0.5em; font: bold 115% verdana,arial,helvetica
+          }
+          h4 {
+            margin-bottom: 0.5em; font: bold 100% verdana,arial,helvetica
+          }
+          h5 {
+            margin-bottom: 0.5em; font: bold 100% verdana,arial,helvetica
+          }
+          h6 {
+            margin-bottom: 0.5em; font: bold 100% verdana,arial,helvetica
+          }
+          .Error {
+            font-weight:bold; color:red;
+          }
+          .Failure {
+            font-weight:bold; color:purple;
+          }
+        </style>
+      </head>
+      <body>
+        <a name="top"></a>
+        <xsl:call-template name="header"/>  
+        <xsl:call-template name="summary"/>
+        <hr size="1" width="95%" align="left"/>
+        <xsl:call-template name="classes"/>
+      </body>
+    </html>
+  </xsl:template>
+  
+  <xsl:template name="header">
+    <h1>Unit Test Results</h1>
+    <table width="100%">
+    <tr>
+      <td align="left"></td>
+      <td align="right">
+        Designed for use with 
+        <a href='http://jakarta.apache.org/cactus/'>Cactus</a>.
+      </td>
+    </tr>
+    </table>
+    <hr size="1"/>
+  </xsl:template>
+  
+  <xsl:template name="summary">
+    <h2>Summary</h2>
+    <xsl:variable name="testCount" select="sum(testsuite/@tests)"/>
+    <xsl:variable name="errorCount" select="sum(testsuite/@errors)"/>
+    <xsl:variable name="failureCount" select="sum(testsuite/@failures)"/>
+    <xsl:variable name="timeCount" select="sum(testsuite/@time)"/>
+    <xsl:variable name="successRate" select="($testCount - $failureCount - $errorCount) div $testCount"/>
+    <table class="details" border="0" cellpadding="5" cellspacing="2" width="95%">
+    <tr valign="top">
+      <th>Tests</th>
+      <th>Failures</th>
+      <th>Errors</th>
+      <th>Success rate</th>
+      <th>Time</th>
+    </tr>
+    <tr valign="top">
+      <xsl:attribute name="class">
+        <xsl:choose>
+          <xsl:when test="$failureCount &gt; 0">Failure</xsl:when>
+          <xsl:when test="$errorCount &gt; 0">Error</xsl:when>
+        </xsl:choose>
+      </xsl:attribute>
+      <td><xsl:value-of select="$testCount"/></td>
+      <td><xsl:value-of select="$failureCount"/></td>
+      <td><xsl:value-of select="$errorCount"/></td>
+      <td>
+        <xsl:call-template name="display-percent">
+          <xsl:with-param name="value" select="$successRate"/>
+        </xsl:call-template>
+      </td>
+      <td>
+        <xsl:call-template name="display-time">
+          <xsl:with-param name="value" select="$timeCount"/>
+        </xsl:call-template>
+      </td>
+    </tr>
+    </table>
+    <table border="0" width="95%">
+    <tr>
+    <td style="text-align: justify;">
+      Note: <i>failures</i> are anticipated and checked for with assertions 
+      while <i>errors</i> are unanticipated.
+    </td>
+    </tr>
+    </table>
+  </xsl:template>
+  
+  <xsl:template name="classes">
+    <xsl:for-each select="testsuite">
+      <xsl:sort select="@name"/>
+      <!-- create an anchor to this class name -->
+      <a name="{@name}"></a>
+      <h3>TestCase <xsl:value-of select="@name"/></h3>
+      
+      <table class="details" border="0" cellpadding="5" cellspacing="2" width="95%">
+        <xsl:call-template name="testcase.test.header"/>
+        <!--
+        test can even not be started at all (failure to load the class)
+        so report the error directly
+        -->
+        <xsl:if test="./error">
+          <tr class="Error">
+            <td colspan="4"><xsl:apply-templates select="./error"/></td>
+          </tr>
+        </xsl:if>
+        <xsl:apply-templates select="./testcase" mode="print.test"/>
+      </table>
+      <p/>
+      <a href="#top">Back to top</a>
+    </xsl:for-each>
+  </xsl:template>
+  
+  <xsl:template match="testsuite" mode="header">
+    <tr valign="top">
+      <th width="80%">Name</th>
+      <th>Tests</th>
+      <th>Errors</th>
+      <th>Failures</th>
+      <th nowrap="nowrap">Time(s)</th>
+    </tr>
+  </xsl:template>
+    
+  <!-- class header -->
+  <xsl:template name="testsuite.test.header">
+    <tr valign="top">
+      <th width="80%">Name</th>
+      <th>Tests</th>
+      <th>Errors</th>
+      <th>Failures</th>
+      <th nowrap="nowrap">Time(s)</th>
+    </tr>
+  </xsl:template>
+
+  <!-- method header -->
+  <xsl:template name="testcase.test.header">
+    <tr valign="top">
+      <th>Name</th>
+      <th>Status</th>
+      <th width="80%">Type</th>
+      <th nowrap="nowrap">Time(s)</th>
+    </tr>
+  </xsl:template>
+  
+  <!-- class information -->
+  <xsl:template match="testsuite" mode="print.test">
+    <tr valign="top">
+      <!-- set a nice color depending if there is an error/failure -->
+      <xsl:attribute name="class">
+        <xsl:choose>
+          <xsl:when test="@failures[.&gt; 0]">Failure</xsl:when>
+          <xsl:when test="@errors[.&gt; 0]">Error</xsl:when>
+        </xsl:choose>
+      </xsl:attribute>
+      <!-- print testsuite information -->
+      <td><a href="#{@name}"><xsl:value-of select="@name"/></a></td>
+      <td><xsl:value-of select="@tests"/></td>
+      <td><xsl:value-of select="@errors"/></td>
+      <td><xsl:value-of select="@failures"/></td>
+      <td>
+        <xsl:call-template name="display-time">
+          <xsl:with-param name="value" select="@time"/>
+        </xsl:call-template>
+      </td>
+    </tr>
+  </xsl:template>
+  
+  <xsl:template match="testcase" mode="print.test">
+    <tr valign="top">
+      <xsl:attribute name="class">
+        <xsl:choose>
+          <xsl:when test="failure | error">Error</xsl:when>
+        </xsl:choose>
+      </xsl:attribute>
+      <td><xsl:value-of select="@name"/></td>
+      <xsl:choose>
+        <xsl:when test="failure">
+          <td>Failure</td>
+          <td><xsl:apply-templates select="failure"/></td>
+        </xsl:when>
+        <xsl:when test="error">
+          <td>Error</td>
+          <td><xsl:apply-templates select="error"/></td>
+        </xsl:when>
+        <xsl:otherwise>
+          <td>Success</td>
+          <td></td>
+        </xsl:otherwise>
+      </xsl:choose>
+      <td>
+        <xsl:call-template name="display-time">
+          <xsl:with-param name="value" select="@time"/>
+        </xsl:call-template>
+      </td>
+    </tr>
+  </xsl:template>
+  
+  <xsl:template match="failure">
+    <xsl:call-template name="display-failures"/>
+  </xsl:template>
+  
+  <xsl:template match="error">
+    <xsl:call-template name="display-failures"/>
+  </xsl:template>
+  
+  <!-- Style for the error and failure in the tescase template -->
+  <xsl:template name="display-failures">
+    <xsl:choose>
+      <xsl:when test="not(@message)">N/A</xsl:when>
+      <xsl:otherwise>
+        <xsl:value-of select="@message"/>
+      </xsl:otherwise>
+    </xsl:choose>
+    <!-- display the stacktrace -->
+    <code>
+      <p/>
+      <xsl:call-template name="br-replace">
+        <xsl:with-param name="word" select="."/>
+      </xsl:call-template>
+    </code>
+  </xsl:template>
+  
+  <!--
+    template that will convert a carriage return into a br tag
+    @param word the text from which to convert CR to BR tag
+  -->
+  <xsl:template name="br-replace">
+    <xsl:param name="word"/>
+    <xsl:choose>
+      <xsl:when test="contains($word,'&#xA;')">
+        <xsl:value-of select="substring-before($word,'&#xA;')"/>
+        <br/>
+        <xsl:call-template name="br-replace">
+          <xsl:with-param name="word" select="substring-after($word,'&#xA;')"/>
+        </xsl:call-template>
+      </xsl:when>
+      <xsl:otherwise>
+        <xsl:value-of select="$word"/>
+      </xsl:otherwise>
+    </xsl:choose>
+  </xsl:template>
+  
+  <xsl:template name="display-time">
+    <xsl:param name="value"/>
+    <xsl:value-of select="format-number($value,'0.000')"/>
+  </xsl:template>
+  
+  <xsl:template name="display-percent">
+    <xsl:param name="value"/>
+    <xsl:value-of select="format-number($value,'0.00%')"/>
+  </xsl:template>
+  
+</xsl:stylesheet>
+

Modified: trunk/jsfunit/src/test/java/org/jboss/jopr/jsfunit/EmbjoprTestCase.java
===================================================================
--- trunk/jsfunit/src/test/java/org/jboss/jopr/jsfunit/EmbjoprTestCase.java	2009-01-13 00:47:57 UTC (rev 105)
+++ trunk/jsfunit/src/test/java/org/jboss/jopr/jsfunit/EmbjoprTestCase.java	2009-01-13 21:39:30 UTC (rev 106)
@@ -22,7 +22,9 @@
 
 package org.jboss.jopr.jsfunit;
 
+import com.gargoylesoftware.htmlunit.BrowserVersion;
 import com.gargoylesoftware.htmlunit.WebClient;
+import com.gargoylesoftware.htmlunit.html.ClickableElement;
 import com.gargoylesoftware.htmlunit.html.HtmlAnchor;
 import com.gargoylesoftware.htmlunit.html.HtmlButtonInput;
 import com.gargoylesoftware.htmlunit.html.HtmlForm;
@@ -72,7 +74,7 @@
         .startsWith("4");
         
         // Initial JSF request
-        WebClientSpec wcSpec = new WebClientSpec("/");
+        WebClientSpec wcSpec = new WebClientSpec("/", BrowserVersion.FIREFOX_3);
 
         // This is temporary because embedded Jopr can't find /js/rhq.js
         wcSpec.getWebClient().setThrowExceptionOnFailingStatusCode(false);
@@ -137,16 +139,15 @@
      * (eg. "Web Applications (WAR)", "Datasources", etc.) in the 
      * navigation tree.
      */
-    public HtmlImage getNavTreeArrow(String resourceName) {
+    public ClickableElement getNavTreeArrow(String resourceName) {
         HtmlAnchor link = getNavTreeLink(resourceName);
         String id = link.getIdAttribute();
         
         // An example id is: "navTreeForm:navTree:81:82:83:84::typeSummaryLink"
         // The icon's id would be: "81:82:83:84::typeSummary:handle:img:collapsed"
         int index = id.lastIndexOf("Link");
-        id = id.substring("navTreeForm:navTree:".length(), index) 
-             + ":handle:img:collapsed";
-        return (HtmlImage)client.getElement(id);
+        id = id.substring(0, index) + ":handle";
+        return (ClickableElement)client.getElement(id);
     }
     
     /**

Modified: trunk/jsfunit/src/test/java/org/jboss/jopr/jsfunit/as5/DatasourceTest.java
===================================================================
--- trunk/jsfunit/src/test/java/org/jboss/jopr/jsfunit/as5/DatasourceTest.java	2009-01-13 00:47:57 UTC (rev 105)
+++ trunk/jsfunit/src/test/java/org/jboss/jopr/jsfunit/as5/DatasourceTest.java	2009-01-13 21:39:30 UTC (rev 106)
@@ -22,6 +22,7 @@
 
 package org.jboss.jopr.jsfunit.as5;
 
+import com.gargoylesoftware.htmlunit.html.ClickableElement;
 import org.jboss.jopr.jsfunit.*;
 import com.gargoylesoftware.htmlunit.html.HtmlAnchor;
 import com.gargoylesoftware.htmlunit.html.HtmlButtonInput;
@@ -77,9 +78,8 @@
                                   Map<String, String> propertiesMap) throws IOException {
         
         // Expand the "Datasources" tree node
-        HtmlImage resourceNodeImage = getNavTreeArrow("Datasources");
-        resourceNodeImage.click();
-        
+        ClickableElement datasourcesArrow = getNavTreeArrow("Datasources");
+        datasourcesArrow.click();
         HtmlAnchor datasourceLink = getNavTreeLink(datasourceType);
         datasourceLink.click();
         




More information about the embjopr-commits mailing list