This is an elegant solution IMHO.

It has one little flaw, which really isn't; a test that crashes the VM
(can happen with native code and JNI) prevents the XML file from being
generated. So using forkmode="perTest", you'd be missing one or more of
these XML files, and if all tests were of this category, you could in
theory have run some tests, all of them failing. But what's the point of
running the report when you have no input ;-) Which is why I say it's
not really a flaw.

The fact that <junit> missed such 'crashing' failures may have been
fixed I think, as I vaguely recall a bug about this. --DD

> -----Original Message-----
> From: Keith Hatton [mailto:[EMAIL PROTECTED]
> Sent: Monday, February 28, 2005 11:17 AM
> To: Ant Users List
> Subject: RE: if junit batchtest is skipped also skip junitreport?
> 
> 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]


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

Reply via email to