From b38bf68f5c8a29ba7befa0760251f5f61d25ae32 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nicolas=20Laleve=CC=81e?= Date: Fri, 13 Apr 2018 21:54:19 +0200 Subject: [PATCH 1/2] 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 --- WHATSNEW | 3 ++ src/etc/testcases/taskdefs/optional/junit.xml | 15 ++++++++++ .../taskdefs/optional/junit/JUnitTask.java | 3 +- .../optional/junit/JUnitTaskTest.java | 30 +++++++++++++++++++ 4 files changed, 50 insertions(+), 1 deletion(-) diff --git a/WHATSNEW b/WHATSNEW index 157c2019f..4a7583726 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 ===================================== diff --git a/src/etc/testcases/taskdefs/optional/junit.xml b/src/etc/testcases/taskdefs/optional/junit.xml index cc66e20e5..34d8cb2b2 100644 --- a/src/etc/testcases/taskdefs/optional/junit.xml +++ b/src/etc/testcases/taskdefs/optional/junit.xml @@ -358,4 +358,19 @@ + + + + + + + + + + + + + + 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 dcf66c174..e587474bf 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; 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 28d7f9c54..6c0d4b42b 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(); From 38a22b0cfd2356bdfc0d58835d5ccec24b394715 Mon Sep 17 00:00:00 2001 From: Stefan Bodewig Date: Sat, 14 Apr 2018 18:54:48 +0200 Subject: [PATCH 2/2] it's enough to have one antunit dir inside of ./build --- src/tests/antunit/core/location/location.xml | 2 +- .../taskdefs/optional/junit/junit-outputtoformatters-test.xml | 2 +- src/tests/antunit/taskdefs/taskdef-antlib-test.xml | 2 +- src/tests/antunit/taskdefs/taskdef-test.xml | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/tests/antunit/core/location/location.xml b/src/tests/antunit/core/location/location.xml index 091d6f337..bf37d9f16 100644 --- a/src/tests/antunit/core/location/location.xml +++ b/src/tests/antunit/core/location/location.xml @@ -20,7 +20,7 @@ + location="${ant.build.dir}/antunit/location-dir"/> diff --git a/src/tests/antunit/taskdefs/optional/junit/junit-outputtoformatters-test.xml b/src/tests/antunit/taskdefs/optional/junit/junit-outputtoformatters-test.xml index 29068e488..c84ae49aa 100644 --- a/src/tests/antunit/taskdefs/optional/junit/junit-outputtoformatters-test.xml +++ b/src/tests/antunit/taskdefs/optional/junit/junit-outputtoformatters-test.xml @@ -18,7 +18,7 @@ - + diff --git a/src/tests/antunit/taskdefs/taskdef-antlib-test.xml b/src/tests/antunit/taskdefs/taskdef-antlib-test.xml index 58d01f064..b03911ee2 100644 --- a/src/tests/antunit/taskdefs/taskdef-antlib-test.xml +++ b/src/tests/antunit/taskdefs/taskdef-antlib-test.xml @@ -22,7 +22,7 @@ - + diff --git a/src/tests/antunit/taskdefs/taskdef-test.xml b/src/tests/antunit/taskdefs/taskdef-test.xml index 95745082a..0244270a0 100644 --- a/src/tests/antunit/taskdefs/taskdef-test.xml +++ b/src/tests/antunit/taskdefs/taskdef-test.xml @@ -20,7 +20,7 @@ - +