Could you provide more information?
On which statement were you using an "if test"?
Use ${environment::variable-exists('name')} for testing environment
variables.
Use ${property::exists('name')} for testing NAnt properties.
For example:
<target name="test.target">
<echo message="Will not be echoed"
if="${environment::variable-exists('test')}"/>
<echo message="Will not be echoed"
if="${property::exists('test')}"/>
<echo message="Env variable does not exist"
unless="${environment::variable-exists('test')}"/>
<echo message="Prop does not exist"
unless="${property::exists('test')}"/>
<property name="test" value="true"/>
<echo message="Will not be echoed"
if="${environment::variable-exists('test')}"/>
<echo message="Property exists"
if="${property::exists('test')}"/>
<echo message="Env variable does not exist"
unless="${environment::variable-exists('test')}"/>
<echo message="Will not be echoed"
unless="${property::exists('test')}"/>
</target>
Gives:
NAnt 0.85 (Build 0.85.2478.0; release; 14/10/2006)
Copyright (C) 2001-2006 Gerry Shaw
http://nant.sourceforge.net
Buildfile: file:///C:/test.build
Target framework: Microsoft .NET Framework 2.0
Target(s) specified: test.target
test.target:
[echo] Env variable does not exist
[echo] Prop does not exist
[echo] Property exists
[echo] Env variable does not exist
BUILD SUCCEEDED
Total time: 0.3 seconds.
Alex.
-----Original Message-----
From: [EMAIL PROTECTED]
[mailto:[EMAIL PROTECTED] On Behalf Of Schley
Andrew Kutz
Sent: Tuesday, June 03, 2008 5:57 PM
To: [email protected]
Subject: [NAnt-users] Bug discovered: The If and Unless tags evaluate
afterproperties are checked for existence
Ex.
<!-- get the path to the nunit lib dir on the server (if it exists) -->
<property name="compile.nunit.path" value="null" />
<if
test="${environment::variable-exists('NUNIT_LIB_DIR')}">
<property
name="compile.nunit.path"
value="${environment::get-variable('NUNIT_LIB_DIR')}"
if="${environment::variable-exists('NUNIT_LIB_DIR')}"/>
</if>
<!-- compile the main assembly -->
<csc target="library"
output="${build}/${proj.name.unix}-${proj.version}.test.dll"
doc="${docs}/${proj.name.unix}-${proj.version}.test.xml"
warninglevel="0">
<sources>
<include name="src/**/*.cs" />
</sources>
<references>
<!--
if this is being run on a build
server then reference
the nunit files on the server,
otherwise reference the files
from the tools directory
-->
<include
name="${compile.nunit.path}/*.dll" />
<include
name="../../tools/nunit-2.5-alpha1/net-2.0/lib/*.dll"/>
<include
name="../../src/${proj.name}/${build}/${proj.name.unix}-$
{proj.version}.dll"/>
</references>
</csc>
Notice my if statement. I *was* using an if test when setting the
property and then when including it in the references block. However,
NAnt kindly informed me that compile.nunit.path did not exist. Well,
duh -- that is what I was checking. Apparently NAnt evaluates whether
properties exist BEFORE it evaluates the IF and UNLESS expressions.
I consider this to be a bug, but it may be by design...
--
-a
"condensing fact from the vapor of nuance"
------------------------------------------------------------------------
-
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2008.
http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
_______________________________________________
NAnt-users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/nant-users
-------------------------------------------------------------------------
Check out the new SourceForge.net Marketplace.
It's the best place to buy or sell services for
just about anything Open Source.
http://sourceforge.net/services/buy/index.php
_______________________________________________
NAnt-users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/nant-users