bodewig 2004/04/19 23:24:25
Modified: . WHATSNEW
src/main/org/apache/tools/ant/types Assertions.java
CommandlineJava.java
src/testcases/org/apache/tools/ant/types
CommandlineJavaTest.java
Log:
<assertions> inside <java> or <junit> didn't work, PR: 27218
Revision Changes Path
1.589 +2 -2 ant/WHATSNEW
Index: WHATSNEW
===================================================================
RCS file: /home/cvs/ant/WHATSNEW,v
retrieving revision 1.588
retrieving revision 1.589
diff -u -r1.588 -r1.589
--- WHATSNEW 16 Apr 2004 09:35:21 -0000 1.588
+++ WHATSNEW 20 Apr 2004 06:24:24 -0000 1.589
@@ -21,8 +21,6 @@
* AntLikeTasksAtTopLevelTest failed on cygwin.
-* <junit> and <assertions> are working together. Bugzilla report 27218
-
* I/O-intensive processes hung when executed via <exec spawn="true">.
Bugzilla reports 23893/26852.
@@ -118,6 +116,8 @@
* <zip> and friends would delete the original file when trying to update
a read-only archive. Bugzilla Report 28419.
+
+* <junit> and <assertions> are working together. Bugzilla report 27218
Other changes:
--------------
1.15 +29 -1 ant/src/main/org/apache/tools/ant/types/Assertions.java
Index: Assertions.java
===================================================================
RCS file: /home/cvs/ant/src/main/org/apache/tools/ant/types/Assertions.java,v
retrieving revision 1.14
retrieving revision 1.15
diff -u -r1.14 -r1.15
--- Assertions.java 14 Apr 2004 15:42:08 -0000 1.14
+++ Assertions.java 20 Apr 2004 06:24:25 -0000 1.15
@@ -20,9 +20,10 @@
import org.apache.tools.ant.BuildException;
import org.apache.tools.ant.Project;
-import java.util.List;
import java.util.ArrayList;
import java.util.Iterator;
+import java.util.List;
+import java.util.ListIterator;
/**
* The assertion datatype. This type describes
@@ -199,6 +200,33 @@
BaseAssertion assertion = (BaseAssertion) it.next();
String arg = assertion.toCommand();
addVmArgument(command, arg);
+ }
+ }
+
+ /**
+ * add the assertions to a list in a format suitable
+ * for adding to a command line
+ * @param commandList
+ */
+ public void applyAssertions(final ListIterator commandIterator) {
+ getProject().log("Applying assertions", Project.MSG_DEBUG);
+ Assertions clause = getFinalReference();
+ //do the system assertions
+ if (Boolean.TRUE.equals(clause.enableSystemAssertions)) {
+ getProject().log("Enabling system assertions",
Project.MSG_DEBUG);
+ commandIterator.add("-enablesystemassertions");
+ } else if (Boolean.FALSE.equals(clause.enableSystemAssertions)) {
+ getProject().log("disabling system assertions",
Project.MSG_DEBUG);
+ commandIterator.add("-disablesystemassertions");
+ }
+
+ //now any inner assertions
+ Iterator it = clause.assertionList.iterator();
+ while (it.hasNext()) {
+ BaseAssertion assertion = (BaseAssertion) it.next();
+ String arg = assertion.toCommand();
+ getProject().log("adding assertion "+arg, Project.MSG_DEBUG);
+ commandIterator.add(arg);
}
}
1.55 +1 -1
ant/src/main/org/apache/tools/ant/types/CommandlineJava.java
Index: CommandlineJava.java
===================================================================
RCS file:
/home/cvs/ant/src/main/org/apache/tools/ant/types/CommandlineJava.java,v
retrieving revision 1.54
retrieving revision 1.55
diff -u -r1.54 -r1.55
--- CommandlineJava.java 14 Apr 2004 15:42:08 -0000 1.54
+++ CommandlineJava.java 20 Apr 2004 06:24:25 -0000 1.55
@@ -401,7 +401,7 @@
//now any assertions are added
if (getAssertions() != null) {
- getAssertions().applyAssertions(this);
+ getAssertions().applyAssertions(listIterator);
}
// JDK usage command line says that -jar must be the first option,
as there is
1.24 +42 -0
ant/src/testcases/org/apache/tools/ant/types/CommandlineJavaTest.java
Index: CommandlineJavaTest.java
===================================================================
RCS file:
/home/cvs/ant/src/testcases/org/apache/tools/ant/types/CommandlineJavaTest.java,v
retrieving revision 1.23
retrieving revision 1.24
diff -u -r1.23 -r1.24
--- CommandlineJavaTest.java 9 Mar 2004 16:49:05 -0000 1.23
+++ CommandlineJavaTest.java 20 Apr 2004 06:24:25 -0000 1.24
@@ -18,6 +18,7 @@
package org.apache.tools.ant.types;
import org.apache.tools.ant.Project;
+import org.apache.tools.ant.util.JavaEnvUtils;
import junit.framework.TestCase;
import junit.framework.AssertionFailedError;
@@ -140,6 +141,47 @@
}
assertNull(System.getProperty("key"));
assertNull(System.getProperty("key2"));
+ }
+
+ public void testAssertions() {
+ if (JavaEnvUtils.isJavaVersion(JavaEnvUtils.JAVA_1_2)
+ || JavaEnvUtils.isJavaVersion(JavaEnvUtils.JAVA_1_3)) {
+ return;
+ }
+
+ CommandlineJava c = new CommandlineJava();
+
c.createArgument().setValue("org.apache.tools.ant.CommandlineJavaTest");
+ c.setClassname("junit.textui.TestRunner");
+ c.createVmArgument().setValue("-Djava.compiler=NONE");
+ Assertions a = new Assertions();
+ a.setProject(project);
+ Assertions.EnabledAssertion ea = new Assertions.EnabledAssertion();
+ ea.setClass("junit.textui.TestRunner");
+ a.addEnable(ea);
+ c.setAssertions(a);
+
+ String[] expected = new String[] {
+ null,
+ "-Djava.compiler=NONE",
+ "-ea:junit.textui.TestRunner",
+ "junit.textui.TestRunner",
+ "org.apache.tools.ant.CommandlineJavaTest",
+ };
+
+ // only the second iteration would pass because of PR 27218
+ for (int i = 0; i < 3; i++) {
+ String[] s = c.getCommandline();
+ assertEquals(expected.length, s.length);
+ for (int j = 1; j < expected.length; j++) {
+ assertEquals(expected[j], s[j]);
+ }
+ }
+ CommandlineJava c2 = (CommandlineJava) c.clone();
+ String[] s = c2.getCommandline();
+ assertEquals(expected.length, s.length);
+ for (int j = 1; j < expected.length; j++) {
+ assertEquals(expected[j], s[j]);
+ }
}
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]