ant-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From bugzi...@apache.org
Subject DO NOT REPLY [Bug 12024] - [PATCH] Enable junit to inherit Ant properties as system properties
Date Fri, 09 May 2003 13:48:33 GMT
DO NOT REPLY TO THIS EMAIL, BUT PLEASE POST YOUR BUG 
RELATED COMMENTS THROUGH THE WEB INTERFACE AVAILABLE AT
<http://nagoya.apache.org/bugzilla/show_bug.cgi?id=12024>.
ANY REPLY MADE TO THIS MESSAGE WILL NOT BE COLLECTED AND 
INSERTED IN THE BUG DATABASE.

http://nagoya.apache.org/bugzilla/show_bug.cgi?id=12024

[PATCH] Enable junit to inherit Ant properties as system properties





------- Additional Comments From ddevienne@lgc.com  2003-05-09 13:48 -------
Hi Stefan,

I already have my own copy of SubAnt (I like to think of it as the original ;-) 
covered. Trivial Change:

Index: SubAnt.java
===================================================================
RCS 
file: /cm3/cvs/buildtools/buildmagic/buildmagic/src/com/lgc/buildmagic/SubAnt.ja
va,v
retrieving revision 1.3
retrieving revision 1.4
diff -r1.3 -r1.4
6a7
> import java.util.Map;
7a9,10
> import java.util.Iterator;
> import java.util.Properties;
41a45
>     private PropertySet propertySet;
53a58,70
>         // Inject all System properties defined by <propertyset>, if any.
>         if (this.propertySet != null) {
>             Properties properties = propertySet.getProperties();
>             for (Iterator i = properties.entrySet().iterator(); i.hasNext();) 
{
>                 Map.Entry p = (Map.Entry)i.next();
>                 Property property = new Property();
>                 property.setProject(getProject());
>                 property.setName((String)p.getKey());
>                 property.setValue((String)p.getValue());
>                 addProperty(property);
>             }
>         }
>
268a286,300
>     }
>
>     public void setPropertySetRef(String reference) {
>         if (this.propertySet != null) {
>             throw new BuildException("too many nested <propertyset>s");
>         }
>         propertySet = (PropertySet)TaskUtils.getReferencedObject(getProject(),
>                                reference, PropertySet.class, "<propertyset>");
>     }
>
>     public void addPropertySet(PropertySet propertySet) {
>         if (this.propertySet != null) {
>             throw new BuildException("too many nested <propertyset>s");
>         }
>         this.propertySet = propertySet;

Here's the test:

    public void testPropertySet() {
        // User-properties seem to be always passed down...
        getProject().setUserProperty("U", "u");
        expectLog("test-propertyset",
                  "p.A=a, p.B=${p.B}, p.C=c, p.D=dd, p.E=eee, U=u");
    }

Here's the test:

  <target name="test-propertyset">
    <property name="p.A" value="a" />
    <property name="p.B" value="b" />
    <property name="p.C" value="c" />
    <subant target="test-propertyset-level2">
      <buildpath>
        <pathelement location="${ant.file}" />
      </buildpath>
      <propertyset>
        <!-- Should pass in p.A, and p.C only! -->
        <propertyref name="p.A" />
        <propertyref name="p.D" /> <!-- Not defined yet, so not passed! -->
        <propertyref regex=".\.C" /> <!-- should match p.C -->
      </propertyset>
    </subant>
  </target>

  <target name="test-propertyset-level2">
    <property name="p.D" value="dd" />
    <propertyset id="propertyset-level2">
      <!-- Should pass in p.A, p.C, and p.D only! -->
      <propertyref prefix="p." />
    </propertyset>
    <subant target="test-propertyset-level3"
            propertysetref="propertyset-level2">
      <buildpath>
        <pathelement location="${ant.file}" />
      </buildpath>
    </subant>
  </target>

  <target name="test-propertyset-level3">
    <property name="p.A" value="aaa" />
    <property name="p.D" value="ddd" />
    <property name="p.E" value="eee" />
    <!--  Expecting the following string literall (minus extra spaces):
          p.A=a,      p.B=${p.B}, p.C=c,      p.D=dd,     p.E=eee   , U=u -->
    <echo>p.A=${p.A}, p.B=${p.B}, p.C=${p.C}, p.D=${p.D}, p.E=${p.E}, U=${U}
</echo>
  </target>

Something I've been thinking is that Env. Vars. for <junit>/<java>/<exec>
could 
(and I think should) be passed down in a similar fashion.

Sorry, I haven't documented this stuff so far... --DD

Mime
View raw message