Repository: ant Updated Branches: refs/heads/master 285af3dbb -> 102623615
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/10262361 Tree: http://git-wip-us.apache.org/repos/asf/ant/tree/10262361 Diff: http://git-wip-us.apache.org/repos/asf/ant/diff/10262361 Branch: refs/heads/master Commit: 10262361546354f81ede051c656a2125c8918d6f Parents: 285af3d Author: Nicolas LaleveÌe <nicolas.lale...@hibnet.org> Authored: Fri Apr 13 21:54:19 2018 +0200 Committer: Nicolas LaleveÌe <nicolas.lale...@hibnet.org> Committed: Fri Apr 13 21:54:19 2018 +0200 ---------------------------------------------------------------------- WHATSNEW | 3 ++ src/etc/testcases/taskdefs/optional/junit.xml | 15 ++++++++++ .../ant/taskdefs/optional/junit/JUnitTask.java | 7 +++-- .../taskdefs/optional/junit/JUnitTaskTest.java | 30 ++++++++++++++++++++ 4 files changed, 52 insertions(+), 3 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/ant/blob/10262361/WHATSNEW ---------------------------------------------------------------------- diff --git a/WHATSNEW b/WHATSNEW index 0c91829..a017dfd 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.10.2 TO Ant 1.10.3 ===================================== http://git-wip-us.apache.org/repos/asf/ant/blob/10262361/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 314ba87..40bfda6 100644 --- a/src/etc/testcases/taskdefs/optional/junit.xml +++ b/src/etc/testcases/taskdefs/optional/junit.xml @@ -354,4 +354,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/10262361/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 235cc7d..7d8eb6a 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 @@ -1368,9 +1368,10 @@ public class JUnitTask extends Task { return; } try (AntClassLoader loader = - AntClassLoader.newAntClassLoader(null, getProject(), - cmd.createClasspath(getProject()), - true)) { + AntClassLoader.newAntClassLoader(null, getProject(), + cmd.createClasspath(getProject()), + 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/10262361/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 616e6a0..6a9a9af 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();