[prev in list] [next in list] [prev in thread] [next in thread] 

List:       htmlunit-develop
Subject:    [HtmlUnit] SF.net SVN: htmlunit:[5633]
From:       asashour () users ! sourceforge ! net
Date:       2010-03-29 14:40:32
Message-ID: E1NwG8m-0001ra-6m () sfp-svn-1 ! v30 ! ch3 ! sourceforge ! com
[Download RAW message or body]

Revision: 5633
          http://htmlunit.svn.sourceforge.net/htmlunit/?rev=5633&view=rev
Author:   asashour
Date:     2010-03-29 14:40:31 +0000 (Mon, 29 Mar 2010)

Log Message:
-----------
Add @Tries counter to some frequently failing test methods.

Modified Paths:
--------------
    trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/BrowserNoneClassRunner.java
  trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/BrowserRunner.java
    trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/BrowserStatement.java
    trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/BrowserVersionClassRunner.java
  trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/WebClientWaitForBackgroundJobsTest.java
  trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/libraries/Dojo102Test.java
  trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/libraries/JQuery126LocalTest.java


Modified: trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/BrowserNoneClassRunner.java
 ===================================================================
--- trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/BrowserNoneClassRunner.java	2010-03-29 \
                11:42:11 UTC (rev 5632)
+++ trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/BrowserNoneClassRunner.java	2010-03-29 \
14:40:31 UTC (rev 5633) @@ -70,7 +70,7 @@
         final NotYetImplemented notYetImplementedBrowsers = \
                method.getAnnotation(NotYetImplemented.class);
         final boolean notYetImplemented = notYetImplementedBrowsers != null;
         statement = new BrowserStatement(statement, method.getMethod(), false,
-                notYetImplemented, "");
+                notYetImplemented, 1, "");
         return statement;
     }
 

Modified: trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/BrowserRunner.java
 ===================================================================
--- trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/BrowserRunner.java	2010-03-29 \
                11:42:11 UTC (rev 5632)
+++ trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/BrowserRunner.java	2010-03-29 \
14:40:31 UTC (rev 5633) @@ -227,4 +227,18 @@
         };
     }
 
+    /**
+     * The number of tries that test will be executed.
+     * The test will fail if and only if all trials failed.
+     */
+    @Retention(RetentionPolicy.RUNTIME)
+    @Target(ElementType.METHOD)
+    public static @interface Tries {
+
+        /**
+         * The browsers which the case succeeds (but fails with remaining ones).
+         */
+        int value() default 1;
+    }
+
 }

Modified: trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/BrowserStatement.java
 ===================================================================
--- trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/BrowserStatement.java	2010-03-29 \
                11:42:11 UTC (rev 5632)
+++ trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/BrowserStatement.java	2010-03-29 \
14:40:31 UTC (rev 5633) @@ -31,18 +31,38 @@
     private final boolean notYetImplemented_;
     private final Method method_;
     private final String browserVersionString_;
+    private final int tries_;
 
     BrowserStatement(final Statement next, final Method method, final boolean \
                shouldFail,
-            final boolean notYetImplemented, final String browserVersionString) {
+            final boolean notYetImplemented, final int tries, final String \
browserVersionString) {  next_ = next;
         method_ = method;
         shouldFail_ = shouldFail;
         notYetImplemented_ = notYetImplemented;
+        tries_ = tries;
         browserVersionString_ = browserVersionString;
     }
 
     @Override
     public void evaluate() throws Throwable {
+        for (int i = 0; i < tries_; i++) {
+            try {
+                evaluateSolo();
+                break;
+            }
+            catch (final Throwable t) {
+                if (shouldFail_ || notYetImplemented_) {
+                    throw t;
+                }
+                System.out.println("Failed test "
+                        + method_.getDeclaringClass().getName() + '.' + \
method_.getName() + " #" + (i + 1)); +                if (i == tries_ - 1) {
+                    throw t;
+                }
+            }
+        }
+    }
+    public void evaluateSolo() throws Throwable {
         Exception toBeThrown = null;
         try {
             next_.evaluate();

Modified: trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/BrowserVersionClassRunner.java
 ===================================================================
--- trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/BrowserVersionClassRunner.java	2010-03-29 \
                11:42:11 UTC (rev 5632)
+++ trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/BrowserVersionClassRunner.java	2010-03-29 \
14:40:31 UTC (rev 5633) @@ -38,6 +38,7 @@
 import com.gargoylesoftware.htmlunit.BrowserRunner.Browser;
 import com.gargoylesoftware.htmlunit.BrowserRunner.Browsers;
 import com.gargoylesoftware.htmlunit.BrowserRunner.NotYetImplemented;
+import com.gargoylesoftware.htmlunit.BrowserRunner.Tries;
 
 /**
  * The runner for test methods that run with a specific browser ({@link \
BrowserRunner.Browser}) @@ -305,9 +306,10 @@
         else {
             notYetImplemented = isNotYetImplemented(method);
         }
+        final int tries = method.getAnnotation(Tries.class).value();
         setAlerts(testCase, method.getMethod());
         statement = new BrowserStatement(statement, method.getMethod(), shouldFail,
-                notYetImplemented, browserVersion_.getNickname());
+                notYetImplemented, tries, browserVersion_.getNickname());
         return statement;
     }
 

Modified: trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/WebClientWaitForBackgroundJobsTest.java
 ===================================================================
--- trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/WebClientWaitForBackgroundJobsTest.java	2010-03-29 \
                11:42:11 UTC (rev 5632)
+++ trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/WebClientWaitForBackgroundJobsTest.java	2010-03-29 \
14:40:31 UTC (rev 5633) @@ -26,6 +26,7 @@
 import org.junit.Test;
 import org.junit.runner.RunWith;
 
+import com.gargoylesoftware.htmlunit.BrowserRunner.Tries;
 import com.gargoylesoftware.htmlunit.html.HtmlPage;
 import com.gargoylesoftware.htmlunit.javascript.background.JavaScriptJobManager;
 
@@ -502,6 +503,7 @@
      * @throws Exception if the test fails
      */
     @Test
+    @Tries(3)
     public void waitForBackgroundJavaScriptStartingBefore_hangs() throws Exception {
         final String html = "<html>\n"
             + "<head>\n"

Modified: trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/libraries/Dojo102Test.java
 ===================================================================
--- trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/libraries/Dojo102Test.java	2010-03-29 \
                11:42:11 UTC (rev 5632)
+++ trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/libraries/Dojo102Test.java	2010-03-29 \
14:40:31 UTC (rev 5633) @@ -22,6 +22,7 @@
 import com.gargoylesoftware.htmlunit.BrowserVersion;
 import com.gargoylesoftware.htmlunit.WebClient;
 import com.gargoylesoftware.htmlunit.WebServerTestCase;
+import com.gargoylesoftware.htmlunit.BrowserRunner.Tries;
 import com.gargoylesoftware.htmlunit.html.DomNode;
 import com.gargoylesoftware.htmlunit.html.HtmlElement;
 import com.gargoylesoftware.htmlunit.html.HtmlPage;
@@ -54,6 +55,7 @@
      * @throws Exception if an error occurs
      */
     @Test
+    @Tries(3)
     public void dojo() throws Exception {
         client_ = new WebClient(BrowserVersion.FIREFOX_3);
         final String url = "http://localhost:" + PORT + "/util/doh/runner.html";

Modified: trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/libraries/JQuery126LocalTest.java
 ===================================================================
--- trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/libraries/JQuery126LocalTest.java	2010-03-29 \
                11:42:11 UTC (rev 5632)
+++ trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/libraries/JQuery126LocalTest.java	2010-03-29 \
14:40:31 UTC (rev 5633) @@ -22,6 +22,7 @@
 import com.gargoylesoftware.htmlunit.BrowserRunner;
 import com.gargoylesoftware.htmlunit.BrowserRunner.Browser;
 import com.gargoylesoftware.htmlunit.BrowserRunner.NotYetImplemented;
+import com.gargoylesoftware.htmlunit.BrowserRunner.Tries;
 
 /**
  * Tests for compatibility with local loading of
@@ -60,6 +61,7 @@
      */
     @Test
     @NotYetImplemented(Browser.IE8)
+    @Tries(3)
     public void test() throws Exception {
         runTest();
     }


This was sent by the SourceForge.net collaborative development platform, the world's \
largest Open Source development site.

------------------------------------------------------------------------------
Download Intel&#174; Parallel Studio Eval
Try the new software tools for yourself. Speed compiling, find bugs
proactively, and fine-tune applications for parallel performance.
See why Intel Parallel Studio got high marks during beta.
http://p.sf.net/sfu/intel-sw-dev
_______________________________________________
HtmlUnit-develop mailing list
HtmlUnit-develop@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/htmlunit-develop


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic