peterreilly 2003/09/10 06:57:20
Modified: src/etc/testcases/taskdefs ant.xml
src/main/org/apache/tools/ant/taskdefs Ant.java
src/testcases/org/apache/tools/ant/taskdefs AntTest.java
Added: src/etc/testcases/taskdefs ant.topleveltest.xml
Log:
Changes to <ant>
do not call the "" target (it gets run anyway)
allow duplicate params with the same name, last
param will be used.
Test cases for above
Revision Changes Path
1.12 +16 -0 ant/src/etc/testcases/taskdefs/ant.xml
Index: ant.xml
===================================================================
RCS file: /home/cvs/ant/src/etc/testcases/taskdefs/ant.xml,v
retrieving revision 1.11
retrieving revision 1.12
diff -u -r1.11 -r1.12
--- ant.xml 4 Sep 2003 11:46:03 -0000 1.11
+++ ant.xml 10 Sep 2003 13:57:19 -0000 1.12
@@ -169,4 +169,20 @@
<target name="middleman" depends="infinite-loop-via-depends"/>
<target name="dependent" depends="middleman"/>
+
+ <target name="multi-same-property">
+ <ant antfile="ant.xml" target="echo-for-multi-same">
+ <property name="prop" value="one"/>
+ <property name="prop" value="two"/>
+ </ant>
+ </target>
+
+ <target name="echo-for-multi-same">
+ <echo>prop is ${prop}</echo>
+ </target>
+
+ <target name="topleveltarget">
+ <ant antfile="ant.topleveltest.xml"/>
+ </target>
+
</project>
1.1 ant/src/etc/testcases/taskdefs/ant.topleveltest.xml
Index: ant.topleveltest.xml
===================================================================
<project>
<echo>Hello world</echo>
</project>
1.89 +18 -5 ant/src/main/org/apache/tools/ant/taskdefs/Ant.java
Index: Ant.java
===================================================================
RCS file: /home/cvs/ant/src/main/org/apache/tools/ant/taskdefs/Ant.java,v
retrieving revision 1.88
retrieving revision 1.89
diff -u -r1.88 -r1.89
--- Ant.java 10 Sep 2003 13:17:00 -0000 1.88
+++ Ant.java 10 Sep 2003 13:57:19 -0000 1.89
@@ -62,6 +62,8 @@
import java.util.Enumeration;
import java.util.Hashtable;
import java.util.Vector;
+import java.util.Set;
+import java.util.HashSet;
import org.apache.tools.ant.BuildException;
import org.apache.tools.ant.BuildListener;
import org.apache.tools.ant.DefaultLogger;
@@ -393,10 +395,10 @@
throw new BuildException(getTaskName() + " task calling "
+ "its own parent target.");
} else {
- Target other =
+ Target other =
(Target) getProject().getTargets().get(target);
if (other != null && other.dependsOn(owningTargetName)) {
- throw new BuildException(getTaskName()
+ throw new BuildException(getTaskName()
+ " task calling a target"
+ " that depends on"
+ " its parent target \'"
@@ -409,9 +411,9 @@
addReferences();
if (target != null) {
- newProject.executeTarget(target);
- } else {
- newProject.executeTarget("");
+ if (!"".equals(target)) {
+ newProject.executeTarget(target);
+ }
}
} finally {
// help the gc
@@ -441,6 +443,17 @@
* @throws BuildException under unknown circumstances
*/
private void overrideProperties() throws BuildException {
+ // remove duplicate properties - last property wins
+ // Needed for backward compatibility
+ Set set = new HashSet();
+ for (int i = properties.size() - 1; i >= 0; --i) {
+ Property p = (Property) properties.get(i);
+ if (set.contains(p.getName())) {
+ properties.remove(i);
+ } else {
+ set.add(p.getName());
+ }
+ }
Enumeration e = properties.elements();
while (e.hasMoreElements()) {
Property p = (Property) e.nextElement();
1.19 +9 -1
ant/src/testcases/org/apache/tools/ant/taskdefs/AntTest.java
Index: AntTest.java
===================================================================
RCS file:
/home/cvs/ant/src/testcases/org/apache/tools/ant/taskdefs/AntTest.java,v
retrieving revision 1.18
retrieving revision 1.19
diff -u -r1.18 -r1.19
--- AntTest.java 4 Sep 2003 11:46:03 -0000 1.18
+++ AntTest.java 10 Sep 2003 13:57:20 -0000 1.19
@@ -306,6 +306,14 @@
expectBuildException("infinite-loop-via-depends", "recursive call");
}
+ public void testMultiSameProperty() {
+ expectLog("multi-same-property", "prop is two");
+ }
+
+ public void testTopLevelTarget() {
+ expectLog("topleveltarget", "Hello world");
+ }
+
private class BasedirChecker implements BuildListener {
private String[] expectedBasedirs;
private int calls = 0;
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]