I recently did this but was unable to do it with a purely macrodef-based
approach.
The gist of my solution was to define the fileset generated by Junit.

    <fileset id="junit.raw" dir="${blah}" includes="TEST-*.xml"/>
    
Then check if it was actually there:

    <target name="junitcheck">
        <!-- did we actually run any unit tests? -->
        <pathconvert targetos="windows" refid="junit.raw"
            property="report.junit" setonempty="false"/>
    </target>
    
Then only do the junitreport if the property was set:

    <target name="junitreports" depends="junitcheck" if="report.junit">
        <junitreport>
            <fileset refid="junit.raw"/>
            <report format="frames" todir="${report}"/>
        </junitreport>
    </target>

Hope thie helps, and if anyone has more elegant solutions I'd be
delighted to hear them!

Keith



-----Original Message-----
From: Jon Jagger [mailto:[EMAIL PROTECTED] 
Sent: 28 February 2005 15:03
To: user@ant.apache.org
Subject: if junit batchtest is skipped also skip junitreport?


I have a package based ant setup which uses the following...

<macrodef name="run-test"
    <attribute name="package"//>
    ...
    <sequential>
        ...
       <junit errorProperty="test.failed" ...>
          ...
          <formatter type="xml"/>
          <batchtest todir="..."
                         unless="@{package}.tests.uptodate">
             ...
          <batchtest>
        </junit>
        ...
        <fail if="test.failed"/>
        ...
        <junitreport todir="....>
          ...
        </junitreport>
  </sequential>
</macrodef>

This works but I'd like to run the junitreport only if batchtest 
actually runs some tests. In other words, I like an unless on 
junitreport to mirror the unless on batchtest. But there isn't one and I

can't see an obvious answer in chapter 4 of Erik & Steve's excellent ant

book. Is there a way to do this without resorting to the <if>
ant-contrib?


Also, I'm using a flag file to indicate whether a test-run passed or 
failed. That way I can rerun the tests even if none of the code being 
tested or the code doing the tests has changed. Exactly as Erik and 
Steve suggest in chapter 4 (pages 106-108). Is there a way to stop the 
<delete> task from echoing a successful deletion message to the console?

Many thanks
Jon

        

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to