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]

Reply via email to