Hi all,

I'm attempting to automatically set a variable depending on a
conditional test. I'm using <ifnot> and <if> for this.

The documentation here is out of date (I guess that's a known issue?):
http://nant.sourceforge.net/release/latest/help/tasks/ifnot.html
http://nant.sourceforge.net/nightly/latest/help/tasks/ifnot.html

It suggests using an opening <ifnot> and a closing </if> tag. Unless I'm
mistaken, that didn't work for me. I used a normal <ifnot></ifnot> or
<if></if>. In any case, it still failed to correctly set the property to
the value of a binary on the system.

Here's my example code for auto detecting a given binary. This method
uses <if> and 'test':

<property name="xsp" value="/opt/mono-current/lib/xsp/1.0/xsp.exe"/>

        <if test="${not file::exists('xsp')}" verbose="${debug}">

                <echo message="xsp was: ${xsp}"/>
                <property name="xsp"
value="/usr/share/dotnet/bin/xsp.exe"/>
                <echo message="xsp is: ${xsp}"/>

        </if>

        <if test="${not file::exists('xsp')}" verbose="${debug}">

                <echo message="xsp was: ${xsp}"/>
                <property name="xsp"
value="/opt/mono-2005-08-07_00//lib/xsp/1.0/xsp.exe"/>
                <echo message="xsp is: ${xsp}"/>

        </if>

This method uses <ifnot> with 'test' again:

        <property name="wsdl"
value="/opt/mono-2005-08-07_00/lib/mono/1.0/wsdl.exe"/>


        <ifnot test="${target::exists('wsdl')}" verbose="${debug}">

                <echo message="wsdl was: ${wsdl}"/>
                <property name="wsdl"
value="/usr/lib/mono/1.0/wsdl.exe"/>
                <echo message="wsdl is: ${wsdl}"/>

        </ifnot>

        <ifnot test="${target::exists('wsdl')}" verbose="${debug}">

                <echo message="wsdl was: ${wsdl}"/>
                <property name="wsdl"
value="/opt/mono-2005-08-07_00/lib/mono/1.0/wsdl.exe"/>
                <echo message="wsdl is: ${wsdl}"/>

        </ifnot>

In either method, the last property tag for xsp is set to the last
property assignment. The same happens with wsdl. In both cases there is
no binary at that location on the given machine. The properties are
simply assigned and it appears they're simply not checked.

Am I mistaken in how I assume ifnot and if are supposed to work?
Is there a better way to do what I'd like to do? Something that can
check that it's an actual executable binary?

Should I file a bug and/or is there any information I could give that
would help in resolving this issue?

I'm using a debian package with version: NAnt 0.85 (Build 0.85.1932.0;
rc3; 4/16/2005) and a nightly build with version: NAnt 0.85 (Build
0.85.1747.0; mono-1.0.unix; dev; 10/13/2004).

Is this a known issue with these versions? I read the change logs and I
didn't see a fix but it's entirely possibly I've overlooked a fix...

-- 
Jake Appelbaum <[EMAIL PROTECTED]>



-------------------------------------------------------
SF.Net email is Sponsored by the Better Software Conference & EXPO
September 19-22, 2005 * San Francisco, CA * Development Lifecycle Practices
Agile & Plan-Driven Development * Managing Projects & Teams * Testing & QA
Security * Process Improvement & Measurement * http://www.sqe.com/bsce5sf
_______________________________________________
Nant-users mailing list
Nant-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/nant-users

Reply via email to