You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@ant.apache.org by jg...@apache.org on 2010/07/06 18:16:28 UTC

svn commit: r960931 - in /ant/core/trunk/src/main/org/apache/tools/ant/taskdefs/optional/junit: FailureRecorder.java FormatterElement.java JUnit4TestMethodAdapter.java JUnitTask.java JUnitTest.java JUnitTestRunner.java

Author: jglick
Date: Tue Jul  6 16:16:27 2010
New Revision: 960931

URL: http://svn.apache.org/viewvc?rev=960931&view=rev
Log:
Fixing various dependencies, mostly from FindBugs, some from the NetBeans editor.

Modified:
    ant/core/trunk/src/main/org/apache/tools/ant/taskdefs/optional/junit/FailureRecorder.java
    ant/core/trunk/src/main/org/apache/tools/ant/taskdefs/optional/junit/FormatterElement.java
    ant/core/trunk/src/main/org/apache/tools/ant/taskdefs/optional/junit/JUnit4TestMethodAdapter.java
    ant/core/trunk/src/main/org/apache/tools/ant/taskdefs/optional/junit/JUnitTask.java
    ant/core/trunk/src/main/org/apache/tools/ant/taskdefs/optional/junit/JUnitTest.java
    ant/core/trunk/src/main/org/apache/tools/ant/taskdefs/optional/junit/JUnitTestRunner.java

Modified: ant/core/trunk/src/main/org/apache/tools/ant/taskdefs/optional/junit/FailureRecorder.java
URL: http://svn.apache.org/viewvc/ant/core/trunk/src/main/org/apache/tools/ant/taskdefs/optional/junit/FailureRecorder.java?rev=960931&r1=960930&r2=960931&view=diff
==============================================================================
--- ant/core/trunk/src/main/org/apache/tools/ant/taskdefs/optional/junit/FailureRecorder.java (original)
+++ ant/core/trunk/src/main/org/apache/tools/ant/taskdefs/optional/junit/FailureRecorder.java Tue Jul  6 16:16:27 2010
@@ -249,7 +249,9 @@ public class FailureRecorder extends Pro
             File sourceFile = new File((getLocationName() + ".java"));
             verbose("Write collector class to '" + sourceFile.getAbsolutePath() + "'");
 
-            sourceFile.delete();
+            if (!sourceFile.delete()) {
+                throw new IOException("could not delete " + sourceFile);
+            }
             writer = new BufferedWriter(new FileWriter(sourceFile));
 
             createClassHeader();
@@ -334,13 +336,13 @@ public class FailureRecorder extends Pro
     /**
      * TestInfos holds information about a given test for later use.
      */
-    public class TestInfos implements Comparable {
+    public static class TestInfos implements Comparable {
 
         /** The class name of the test. */
-        private String className;
+        private final String className;
 
         /** The method name of the testcase. */
-        private String methodName;
+        private final String methodName;
 
         /**
          * This constructor extracts the needed information from the given test.
@@ -348,8 +350,8 @@ public class FailureRecorder extends Pro
          */
         public TestInfos(Test test) {
             className = test.getClass().getName();
-            methodName = test.toString();
-            methodName = methodName.substring(0, methodName.indexOf('('));
+            String _methodName = test.toString();
+            methodName = _methodName.substring(0, _methodName.indexOf('('));
         }
 
         /**
@@ -378,6 +380,12 @@ public class FailureRecorder extends Pro
                 return -1;
             }
         }
+        public boolean equals(Object obj) {
+            return obj instanceof TestInfos && toString().equals(obj.toString());
+        }
+        public int hashCode() {
+            return toString().hashCode();
+        }
     }
 
     // ===== BuildListener =====

Modified: ant/core/trunk/src/main/org/apache/tools/ant/taskdefs/optional/junit/FormatterElement.java
URL: http://svn.apache.org/viewvc/ant/core/trunk/src/main/org/apache/tools/ant/taskdefs/optional/junit/FormatterElement.java?rev=960931&r1=960930&r2=960931&view=diff
==============================================================================
--- ant/core/trunk/src/main/org/apache/tools/ant/taskdefs/optional/junit/FormatterElement.java (original)
+++ ant/core/trunk/src/main/org/apache/tools/ant/taskdefs/optional/junit/FormatterElement.java Tue Jul  6 16:16:27 2010
@@ -23,6 +23,7 @@ import java.io.FileOutputStream;
 import java.io.OutputStream;
 import java.io.BufferedOutputStream;
 import java.lang.reflect.Field;
+import java.lang.reflect.InvocationTargetException;
 import java.lang.reflect.Method;
 
 import org.apache.tools.ant.BuildException;
@@ -326,8 +327,10 @@ public class FormatterElement {
                 // there is already a project reference so dont overwrite this
                 needToSetProjectReference = false;
             }
-        } catch (Exception e) {
+        } catch (NoSuchFieldException e) {
             // no field present, so no previous reference exists
+        } catch (IllegalAccessException e) {
+            throw new BuildException(e);
         }
 
         if (needToSetProjectReference) {
@@ -335,8 +338,12 @@ public class FormatterElement {
             try {
                 setter = r.getClass().getMethod("setProject", new Class[] {Project.class});
                 setter.invoke(r, new Object[] {project});
-            } catch (Exception e) {
+            } catch (NoSuchMethodException e) {
                 // no setProject to invoke; just ignore
+            } catch (IllegalAccessException e) {
+                throw new BuildException(e);
+            } catch (InvocationTargetException e) {
+                throw new BuildException(e);
             }
         }
 

Modified: ant/core/trunk/src/main/org/apache/tools/ant/taskdefs/optional/junit/JUnit4TestMethodAdapter.java
URL: http://svn.apache.org/viewvc/ant/core/trunk/src/main/org/apache/tools/ant/taskdefs/optional/junit/JUnit4TestMethodAdapter.java?rev=960931&r1=960930&r2=960931&view=diff
==============================================================================
--- ant/core/trunk/src/main/org/apache/tools/ant/taskdefs/optional/junit/JUnit4TestMethodAdapter.java (original)
+++ ant/core/trunk/src/main/org/apache/tools/ant/taskdefs/optional/junit/JUnit4TestMethodAdapter.java Tue Jul  6 16:16:27 2010
@@ -74,7 +74,7 @@ public class JUnit4TestMethodAdapter imp
             }
         }
         this.testClass = testClass;
-        this.methodNames = methodNames;
+        this.methodNames = (String[]) methodNames.clone();
         this.cache = Cache.instance;
 
         // Warning: If 'testClass' is an old-style (pre-JUnit-4) class,
@@ -194,6 +194,8 @@ public class JUnit4TestMethodAdapter imp
      * of type {@code JUnit4TestAdapter}.
      */
     private static final class Cache extends JUnit4TestAdapterCache {
+        
+        private static final long serialVersionUID = 8454901854293461610L;
 
 	private static final Cache instance = new Cache();
 

Modified: ant/core/trunk/src/main/org/apache/tools/ant/taskdefs/optional/junit/JUnitTask.java
URL: http://svn.apache.org/viewvc/ant/core/trunk/src/main/org/apache/tools/ant/taskdefs/optional/junit/JUnitTask.java?rev=960931&r1=960930&r2=960931&view=diff
==============================================================================
--- ant/core/trunk/src/main/org/apache/tools/ant/taskdefs/optional/junit/JUnitTask.java (original)
+++ ant/core/trunk/src/main/org/apache/tools/ant/taskdefs/optional/junit/JUnitTask.java Tue Jul  6 16:16:27 2010
@@ -29,6 +29,8 @@ import java.io.OutputStream;
 import java.io.PrintStream;
 import java.lang.reflect.Constructor;
 import java.net.URL;
+import java.security.AccessController;
+import java.security.PrivilegedAction;
 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.Enumeration;
@@ -652,8 +654,6 @@ public class JUnitTask extends Task {
      * @since Ant 1.2
      */
     public JUnitTask() throws Exception {
-        getCommandline()
-            .setClassname("org.apache.tools.ant.taskdefs.optional.junit.JUnitTestRunner");
     }
 
     /**
@@ -716,16 +716,17 @@ public class JUnitTask extends Task {
      * @since Ant 1.7.1
      */
     protected void setupJUnitDelegate() {
-        ClassLoader myLoader = JUnitTask.class.getClassLoader();
+        final ClassLoader myLoader = JUnitTask.class.getClassLoader();
         if (splitJunit) {
-            Path path = new Path(getProject());
+            final Path path = new Path(getProject());
             path.add(antRuntimeClasses);
             Path extra = getCommandline().getClasspath();
             if (extra != null) {
                 path.add(extra);
             }
-            mirrorLoader =
-                new SplitClassLoader(myLoader, path, getProject(),
+            mirrorLoader = (ClassLoader) AccessController.doPrivileged(new PrivilegedAction() {
+                public Object run() {
+                    return new SplitClassLoader(myLoader, path, getProject(),
                                      new String[] {
                                          "BriefJUnitResultFormatter",
                                          "JUnit4TestMethodAdapter",
@@ -739,6 +740,8 @@ public class JUnitTask extends Task {
                                          "TearDownOnVmCrash",
                                          "XMLJUnitResultFormatter",
                                      });
+                }
+            });
         } else {
             mirrorLoader = myLoader;
         }
@@ -884,7 +887,7 @@ public class JUnitTask extends Task {
             log(e.toString(), Project.MSG_ERR);
             throw new BuildException(e);
         } finally {
-            FILE_UTILS.close(writer);
+            FileUtils.close(writer);
 
             try {
                 FILE_UTILS.tryHardToDelete(casesFile);
@@ -925,7 +928,6 @@ public class JUnitTask extends Task {
         } catch (CloneNotSupportedException e) {
             throw new BuildException("This shouldn't happen", e, getLocation());
         }
-        cmd.setClassname("org.apache.tools.ant.taskdefs.optional.junit.JUnitTestRunner");
         if (casesFile == null) {
             cmd.createArgument().setValue(test.getName());
             if (test.getMethods() != null) {
@@ -1177,13 +1179,13 @@ public class JUnitTask extends Task {
             return new File(FILE_UTILS.fromURI(url1))
                 .equals(new File(FILE_UTILS.fromURI(url2)));
         }
-        return u1.equals(u2);
+        return url1.equals(url2);
     }
 
     private static String maybeStripJarAndClass(URL u) {
         String s = u.toString();
         if (s.startsWith("jar:")) {
-            int pling = s.indexOf("!");
+            int pling = s.indexOf('!');
             s = s.substring(4, pling == -1 ? s.length() : pling);
         }
         return s;
@@ -1723,6 +1725,7 @@ public class JUnitTask extends Task {
     protected CommandlineJava getCommandline() {
         if (commandline == null) {
             commandline = new CommandlineJava();
+            commandline.setClassname("org.apache.tools.ant.taskdefs.optional.junit.JUnitTestRunner");
         }
         return commandline;
     }
@@ -1940,7 +1943,7 @@ public class JUnitTask extends Task {
     /**
      * A value class that contains the result of a test.
      */
-    protected class TestResultHolder {
+    protected static class TestResultHolder {
         // CheckStyle:VisibilityModifier OFF - bc
         /** the exit code of the test. */
         public int exitCode = JUnitTaskMirror.JUnitTestRunnerMirror.ERRORS;
@@ -2019,7 +2022,7 @@ public class JUnitTask extends Task {
      */
     private static JUnitTest createDummyTestForBatchTest(JUnitTest test) {
         JUnitTest t = (JUnitTest) test.clone();
-        int index = test.getName().indexOf(".");
+        int index = test.getName().indexOf('.');
         // make sure test looks as if it was in the same "package" as
         // the last test of the batch
         String pack = index > 0 ? test.getName().substring(0, index + 1) : "";

Modified: ant/core/trunk/src/main/org/apache/tools/ant/taskdefs/optional/junit/JUnitTest.java
URL: http://svn.apache.org/viewvc/ant/core/trunk/src/main/org/apache/tools/ant/taskdefs/optional/junit/JUnitTest.java?rev=960931&r1=960930&r2=960931&view=diff
==============================================================================
--- ant/core/trunk/src/main/org/apache/tools/ant/taskdefs/optional/junit/JUnitTest.java (original)
+++ ant/core/trunk/src/main/org/apache/tools/ant/taskdefs/optional/junit/JUnitTest.java Tue Jul  6 16:16:27 2010
@@ -97,8 +97,7 @@ public class JUnitTest extends BaseTest 
      * @param haltOnError if true halt the tests if there is an error.
      * @param haltOnFailure if true halt the tests if there is a failure.
      * @param filtertrace if true filter stack traces.
-     * @param methods if true run only test methods that failed during the
-     *                previous run of the test suite
+     * @param methods if non-null run only these test methods
      * @since 1.8.2
      */
     public JUnitTest(String name, boolean haltOnError, boolean haltOnFailure,
@@ -107,8 +106,8 @@ public class JUnitTest extends BaseTest 
         this.haltOnError = haltOnError;
         this.haltOnFail = haltOnFailure;
         this.filtertrace = filtertrace;
-        this.methods = methods;
-        this.methodsSpecified = (methods != null);
+        this.methodsSpecified = methods != null;
+        this.methods = methodsSpecified ? (String[]) methods.clone() : null;
     }
 
     /**
@@ -298,10 +297,10 @@ public class JUnitTest extends BaseTest 
                     break;
                 case stateInsideWord:
                     if (c == ',') {
-                        result[wordIndex++] = new String(methodNames.substring(wordStartIndex, i));
+                        result[wordIndex++] = methodNames.substring(wordStartIndex, i);
                         state = stateBeforeWord;
                     } else if (c == ' ') {
-                        result[wordIndex++] = new String(methodNames.substring(wordStartIndex, i));
+                        result[wordIndex++] = methodNames.substring(wordStartIndex, i);
                         state = stateAfterWord;
                     } else if (Character.isJavaIdentifierPart(c)) {
                         // remain in the same state
@@ -327,7 +326,7 @@ public class JUnitTest extends BaseTest 
             case stateAfterWord:
                 break;
             case stateInsideWord:
-                result[wordIndex++] = new String(methodNames.substring(wordStartIndex, chars.length));
+                result[wordIndex++] = methodNames.substring(wordStartIndex, chars.length);
                 break;
             default:
                 // this should never happen

Modified: ant/core/trunk/src/main/org/apache/tools/ant/taskdefs/optional/junit/JUnitTestRunner.java
URL: http://svn.apache.org/viewvc/ant/core/trunk/src/main/org/apache/tools/ant/taskdefs/optional/junit/JUnitTestRunner.java?rev=960931&r1=960930&r2=960931&view=diff
==============================================================================
--- ant/core/trunk/src/main/org/apache/tools/ant/taskdefs/optional/junit/JUnitTestRunner.java (original)
+++ ant/core/trunk/src/main/org/apache/tools/ant/taskdefs/optional/junit/JUnitTestRunner.java Tue Jul  6 16:16:27 2010
@@ -289,13 +289,13 @@ public class JUnitTestRunner implements 
                            boolean filtertrace, boolean haltOnFailure,
                            boolean showOutput, boolean logTestListenerEvents,
                            ClassLoader loader) {
-        JUnitTestRunner.filtertrace = filtertrace;
+        JUnitTestRunner.filtertrace = filtertrace; // XXX clumsy, should use instance field somehow
         this.junitTest = test;
         this.haltOnError = haltOnError;
         this.haltOnFailure = haltOnFailure;
         this.showOutput = showOutput;
         this.logTestListenerEvents = logTestListenerEvents;
-        this.methods = methods;
+        this.methods = methods != null ? (String[]) methods.clone() : null;
         this.loader = loader;
     }