Repository: ant
Updated Branches:
  refs/heads/1.9.x 50a1d4aea -> b38bf68f5


fix incorrect warning in the junit task when includeAntRuntime="no"

fixed by making the classloader used by checkForkedPath behave like a real 
forked classpath, thus completely isolated from the launching jvm


Project: http://git-wip-us.apache.org/repos/asf/ant/repo
Commit: http://git-wip-us.apache.org/repos/asf/ant/commit/b38bf68f
Tree: http://git-wip-us.apache.org/repos/asf/ant/tree/b38bf68f
Diff: http://git-wip-us.apache.org/repos/asf/ant/diff/b38bf68f

Branch: refs/heads/1.9.x
Commit: b38bf68f5c8a29ba7befa0760251f5f61d25ae32
Parents: 50a1d4a
Author: Nicolas Lalevée <nicolas.lale...@hibnet.org>
Authored: Fri Apr 13 21:54:19 2018 +0200
Committer: Stefan Bodewig <bode...@apache.org>
Committed: Sat Apr 14 18:31:08 2018 +0200

----------------------------------------------------------------------
 WHATSNEW                                        |  3 ++
 src/etc/testcases/taskdefs/optional/junit.xml   | 15 ++++++++++
 .../ant/taskdefs/optional/junit/JUnitTask.java  |  3 +-
 .../taskdefs/optional/junit/JUnitTaskTest.java  | 30 ++++++++++++++++++++
 4 files changed, 50 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ant/blob/b38bf68f/WHATSNEW
----------------------------------------------------------------------
diff --git a/WHATSNEW b/WHATSNEW
index 157c201..4a75837 100644
--- a/WHATSNEW
+++ b/WHATSNEW
@@ -10,6 +10,9 @@ Fixed bugs:
    is 'true'.
    Bugzilla Report 60062
 
+ * The junit task when used with includeantruntime="no" was incorrectly
+   printing a warning about multiple versions of ant detected in path
+
 Changes from Ant 1.9.10 TO Ant 1.9.11
 =====================================
 

http://git-wip-us.apache.org/repos/asf/ant/blob/b38bf68f/src/etc/testcases/taskdefs/optional/junit.xml
----------------------------------------------------------------------
diff --git a/src/etc/testcases/taskdefs/optional/junit.xml 
b/src/etc/testcases/taskdefs/optional/junit.xml
index cc66e20..34d8cb2 100644
--- a/src/etc/testcases/taskdefs/optional/junit.xml
+++ b/src/etc/testcases/taskdefs/optional/junit.xml
@@ -358,4 +358,19 @@
     </junit>
   </target>
 
+  <target name="testCheckForkedPath">
+    <property name="includeantruntime" value="yes" />
+    <!-- duplicate the Ant classes into a jar -->
+    <jar destfile="${output}/ant.jar" basedir="${antclasses}" />
+    <junit fork="yes" haltonerror="true" haltonfailure="true"
+             showoutput="${showoutput}" 
includeantruntime="${includeantruntime}">
+      <test name="org.example.junit.Output" />
+      <classpath>
+        <pathelement location="../../../../../build/testcases" />
+        <pathelement location="${junitjar}" />
+        <pathelement location="${output}/ant.jar" />
+      </classpath>
+    </junit>
+  </target>
+
 </project>

http://git-wip-us.apache.org/repos/asf/ant/blob/b38bf68f/src/main/org/apache/tools/ant/taskdefs/optional/junit/JUnitTask.java
----------------------------------------------------------------------
diff --git 
a/src/main/org/apache/tools/ant/taskdefs/optional/junit/JUnitTask.java 
b/src/main/org/apache/tools/ant/taskdefs/optional/junit/JUnitTask.java
index dcf66c1..e587474 100644
--- a/src/main/org/apache/tools/ant/taskdefs/optional/junit/JUnitTask.java
+++ b/src/main/org/apache/tools/ant/taskdefs/optional/junit/JUnitTask.java
@@ -1395,7 +1395,8 @@ public class JUnitTask extends Task {
             loader =
                 AntClassLoader.newAntClassLoader(null, getProject(),
                                                  
cmd.createClasspath(getProject()),
-                                                 true);
+                                                 false);
+            loader.setIsolated(true);
             final String projectResourceName =
                 LoaderUtils.classNameToResource(Project.class.getName());
             URL previous = null;

http://git-wip-us.apache.org/repos/asf/ant/blob/b38bf68f/src/tests/junit/org/apache/tools/ant/taskdefs/optional/junit/JUnitTaskTest.java
----------------------------------------------------------------------
diff --git 
a/src/tests/junit/org/apache/tools/ant/taskdefs/optional/junit/JUnitTaskTest.java
 
b/src/tests/junit/org/apache/tools/ant/taskdefs/optional/junit/JUnitTaskTest.java
index 28d7f9c..6c0d4b4 100644
--- 
a/src/tests/junit/org/apache/tools/ant/taskdefs/optional/junit/JUnitTaskTest.java
+++ 
b/src/tests/junit/org/apache/tools/ant/taskdefs/optional/junit/JUnitTaskTest.java
@@ -577,6 +577,36 @@ public class JUnitTaskTest {
         }
     }
 
+    private void setupCheckDuplicateTest() {
+        final String projectResourceName =
+                LoaderUtils.classNameToResource(Project.class.getName());
+        final File antclasses = LoaderUtils.getResourceSource(
+                Project.class.getClassLoader(), projectResourceName);
+        final String testResourceName =
+                
LoaderUtils.classNameToResource(junit.framework.Test.class.getName());
+        final File junitJar = LoaderUtils.getResourceSource(
+                Project.class.getClassLoader(), testResourceName);
+        buildRule.getProject().setProperty("antclasses", 
antclasses.getAbsolutePath());
+        buildRule.getProject().setProperty("junitjar", 
junitJar.getAbsolutePath());
+    }
+
+    @Test
+    public void testCheckDuplicateAntJar() throws Exception {
+        setupCheckDuplicateTest();
+        buildRule.executeTarget("testCheckForkedPath");
+        assertTrue("Expecting the warning about the duplicate ant jar",
+                buildRule.getLog().contains("WARNING: multiple versions of ant 
detected in path for junit"));
+    }
+
+    @Test
+    public void testCheckNonDuplicateAntJar() throws Exception {
+        setupCheckDuplicateTest();
+        buildRule.getProject().setProperty("includeantruntime", "no");
+        buildRule.executeTarget("testCheckForkedPath");
+        assertFalse("Unexpected warning about the duplicate ant jar",
+                buildRule.getLog().contains("WARNING: multiple versions of ant 
detected in path for junit"));
+    }
+
     private void delete(File f) {
         if (f.isDirectory()) {
             final File[] clds = f.listFiles();

Reply via email to