5.8 Conditions

Conditions are nested elements of the condition, if and waitfor tasks.

5.8.1 not

The <not> element expects exactly one other condition to be nested into this element, negating the result of the condition. It doesn't have any attributes and accepts all nested elements of the condition task as nested elements as well.

5.8.2 and

The <and> element doesn't have any attributes and accepts an arbitrary number of conditions as nested elements. This condition is true if all of its contained conditions are, conditions will be evaluated in the order they have been specified in the build file.

The <and> condition has the same shortcut semantics as the && operator in some programming languages, as soon as one of the nested conditions is false, no other condition will be evaluated.

5.8.3 or

The <or> element doesn't have any attributes and accepts an arbitrary number of conditions as nested elements. This condition is true if at least one of its contained conditions is, conditions will be evaluated in the order they have been specified in the build file.

The <or> condition has the same shortcut semantics as the || operator in some programming languages, as soon as one of the nested conditions is true, no other condition will be evaluated.

5.8.4 xor

The <xor> element performs an exclusive or on all nested elements, similar to the ^ operator in PHP. It only evaluates to true if an odd number of nested conditions are true. There is no shortcutting of evaluation, unlike the <and> and <or> tests. It doesn't have any attributes and accepts all nested elements of the condition task as nested elements as well.

5.8.5 os

Test whether the current operating system is of a given type.

Table 5.1: OS Attributes

AttributeDescriptionRequired
familyThe name of the operating system family to expect.Yes

Supported values for the family attribute are:

  • windows (for all versions of Microsoft Windows)

  • mac (for all Apple Macintosh systems)

  • unix (for all Unix and Unix-like operating systems)

5.8.6 equals

Tests whether the two given Strings are identical

Table 5.2: equals Attributes

AttributeDescriptionRequired
arg1First string to test.Yes
arg2Second string to test.Yes
casesensitivePerform a case sensitive comparision. Default is true.No
trimTrim whitespace from arguments before comparing them. Default is false.No

5.8.7 version-compare

Compares two given versions

Table 5.3: version-compare Attributes

AttributeDescriptionRequired
versionThe version you want to compareYes
desiredVersionThe version you want to compare againsYes
operatorThe operator to use for version comparison. Default is >=.No
debugTurns on debug mode, that echoes the comparion message. Default is false.No

<version-compare version="${someproperty}" desiredVersion="1.3" operator="gt" />

This condition internally uses PHP version_compare(). Operators and behavior are the same.

5.8.8 http

Condition to wait for a HTTP request to succeed.

Attributes are:

  • url - the URL of the request.
  • errorsBeginAt - number at which errors begin at.

Table 5.4: http Attributes

urlThe URL of the request.Yes
errorsBeginAtNumber at which errors begin at. - Default: 400No

<http url="http://url.to.test" errorsBeginAt="404" />

5.8.9 socket

Condition to test for a (tcp) listener on a specified host and port.

Table 5.5: socket Attributes

serverThe hostname or ip address of the server.Yes
portThe port number of the server.Yes

<socket server="localhost" port="80" />

5.8.10 hasfreespace

Condition returns true if selected partition has the requested space, false otherwise.

Table 5.6: hasfreespace Attributes

AttributeDescriptionRequired
partitionThe partition/device to check.Yes
neededThe amount of free space required.Yes

<hasfreespace partition="c:" needed="10M" />

This condition internally uses PHP disk_free_space().

5.8.11 isset

Test whether a given property has been set in this project.

Table 5.7: isset Attributes

AttributeDescriptionRequired
propertyThe name of the property to test.Yes

5.8.12 contains

Tests whether a string contains another one.

Table 5.8: contains Attributes

AttributeDescriptionRequired
stringThe string to search in.Yes
substringThe string to search for.Yes
casesensitivePerform a case sensitive comparision. Default is true.No

5.8.13 istrue

Tests whether a string evaluates to true.

Table 5.9: istrue Attributes

AttributeDescriptionRequired
valuevalue to testYes

<istrue value="${someproperty}"/>
<istrue value="false"/>

5.8.14 isfalse

Tests whether a string evaluates to not true, the negation of <istrue>

Table 5.10: isfalse Attributes

AttributeDescriptionRequired
valuevalue to testYes

<isfalse value="${someproperty}"/>
<isfalse value="false"/>

5.8.15 referenceexists

Tests whether a specified reference exists.

Table 5.11: referenceexists Attributes

AttributeDescriptionRequired
refreference to test forYes

<referenceexists ref="${someid}"/>

5.8.16 available

This condition is identical to the Available task, all attributes and nested elements of that task are supported, the property and value attributes are redundant and will be ignored.

5.8.17 filesmatch

Test two files for matching. Nonexistence of one file results in "false", although if neither exists they are considered equal in terms of content. This test does a byte for byte comparison, so test time scales with byte size. NB: if the files are different sizes, one of them is missing or the filenames match the answer is so obvious the detailed test is omitted.

Table 5.12: filesmatch Attributes

AttributeDescriptionRequired
file1First file to test.Yes
file2Second file to test.Yes

<filesmatch file1="${file1}" file2="${file2}"/>