We are trying to migrate away from this requirement, but it will take quite a bit of time. I am providing this patch in the hopes that we can avoid having a customized version of Ant in our development environment.
Michael
Index: JUnitTask.java
===================================================================
RCS file:
/home/cvspublic/ant/src/main/org/apache/tools/ant/taskdefs/optional/junit/JUnitTask.java,v
retrieving revision 1.44.2.7
diff -u -b -w -r1.44.2.7 JUnitTask.java
--- JUnitTask.java 10 Feb 2003 14:25:13 -0000 1.44.2.7
+++ JUnitTask.java 6 Jun 2003 21:37:27 -0000
@@ -168,6 +168,7 @@
private Integer timeout = null;
private boolean summary = false;
+ private boolean reloading = true;
private String summaryValue = "";
private JUnitTestRunner runner = null;
@@ -178,6 +179,16 @@
private Path antRuntimeClasses = null;
private boolean showOutput = false;
+ private AntClassLoader classLoader = null;
+
+ /**
+ * If true, force ant to re-classload all classes for each JUnit TestCase
+ *
+ * @param value force class reloading for each test case
+ */
+ public void setReloading(boolean value) {
+ reloading = value;
+ }
/**
* If true, smartly filter the stack frames of
@@ -794,7 +805,7 @@
if (sysProperties != null) {
sysProperties.setSystem();
}
- AntClassLoader cl = null;
+
try {
log("Using System properties " + System.getProperties(),
Project.MSG_VERBOSE);
@@ -809,19 +820,21 @@
classpath.append(antRuntimeClasses);
}
- cl = new AntClassLoader(null, getProject(), classpath, false);
- log("Using CLASSPATH " + cl.getClasspath(),
+ if (reloading || classLoader == null) {
+ classLoader = new AntClassLoader(null, getProject(),
classpath, false);
+ log("Using CLASSPATH " + classLoader.getClasspath(),
Project.MSG_VERBOSE);
// make sure the test will be accepted as a TestCase
- cl.addSystemPackageRoot("junit");
+ classLoader.addSystemPackageRoot("junit");
// will cause trouble in JDK 1.1 if omitted
- cl.addSystemPackageRoot("org.apache.tools.ant");
- cl.setThreadContextLoader();
+ classLoader.addSystemPackageRoot("org.apache.tools.ant");
+ classLoader.setThreadContextLoader();
+ }
}
runner = new JUnitTestRunner(test, test.getHaltonerror(),
test.getFiltertrace(),
- test.getHaltonfailure(), cl);
+ test.getHaltonfailure(), classLoader);
if (summary) {
log("Running " + test.getName(), Project.MSG_INFO);
@@ -851,8 +864,8 @@
if (sysProperties != null) {
sysProperties.restoreSystem();
}
- if (cl != null) {
- cl.resetThreadContextLoader();
+ if (classLoader != null) {
+ classLoader.resetThreadContextLoader();
}
}
}--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
