aboutsummaryrefslogtreecommitdiffstats
path: root/framework/src/ant/apache-ant-1.9.6/src/tests/antunit/taskdefs/exec/apply-test.xml
diff options
context:
space:
mode:
Diffstat (limited to 'framework/src/ant/apache-ant-1.9.6/src/tests/antunit/taskdefs/exec/apply-test.xml')
-rw-r--r--framework/src/ant/apache-ant-1.9.6/src/tests/antunit/taskdefs/exec/apply-test.xml792
1 files changed, 792 insertions, 0 deletions
diff --git a/framework/src/ant/apache-ant-1.9.6/src/tests/antunit/taskdefs/exec/apply-test.xml b/framework/src/ant/apache-ant-1.9.6/src/tests/antunit/taskdefs/exec/apply-test.xml
new file mode 100644
index 00000000..1b5a661a
--- /dev/null
+++ b/framework/src/ant/apache-ant-1.9.6/src/tests/antunit/taskdefs/exec/apply-test.xml
@@ -0,0 +1,792 @@
+<?xml version="1.0"?>
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements. See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+<project name="apply-test" default="antunit"
+ xmlns:au="antlib:org.apache.ant.antunit">
+ <import file="../../antunit-base.xml" />
+
+ <property environment="env" />
+ <!-- UNIX -->
+ <available file="sh" filepath="${env.PATH}" property="sh.executable" />
+ <!-- CYGWIN -->
+ <available file="sh.exe" filepath="${env.PATH}" property="sh.exe.executable" />
+ <condition property="test.can.run">
+ <or>
+ <isset property="sh.executable" />
+ <isset property="sh.exe.executable" />
+ </or>
+ </condition>
+ <!-- UNIX -->
+ <available file="sed" filepath="${env.PATH}" property="sed.executable" />
+ <!-- CYGWIN -->
+ <available file="sed.exe" filepath="${env.PATH}" property="sed.exe.executable" />
+ <condition property="sed.can.run">
+ <or>
+ <isset property="sed.executable" />
+ <isset property="sed.exe.executable" />
+ </or>
+ </condition>
+ <!-- UNIX -->
+ <available file="echo" filepath="${env.PATH}" property="echo.executable" />
+ <!-- CYGWIN -->
+ <available file="echo.exe" filepath="${env.PATH}" property="echo.exe.executable" />
+ <condition property="echo.can.run">
+ <or>
+ <isset property="echo.executable" />
+ <isset property="echo.exe.executable" />
+ </or>
+ </condition>
+
+ <!-- UNIX -->
+ <available file="ls" filepath="${env.PATH}" property="ls.executable" />
+ <!-- CYGWIN -->
+ <available file="ls.exe" filepath="${env.PATH}" property="ls.exe.executable" />
+ <!-- piggyback the name of the executable here -->
+ <condition property="ls.can.run" value="ls">
+ <isset property="ls.executable" />
+ </condition>
+ <condition property="ls.can.run" value="ls.exe">
+ <isset property="ls.exe.executable" />
+ </condition>
+
+ <property name="eol" value="${line.separator}" />
+
+ <macrodef name="rcat">
+ <attribute name="refid" />
+ <sequential>
+ <echo>@@{refid}=@{refid}</echo>
+ <concat><resources refid="@{refid}" /></concat>
+ </sequential>
+ </macrodef>
+
+ <macrodef name="assertEmptyFile">
+ <attribute name="file" />
+ <sequential>
+ <au:assertTrue>
+ <and>
+ <available file="@{file}" type="file" />
+ <length length="0" file="@{file}" />
+ </and>
+ </au:assertTrue>
+ </sequential>
+ </macrodef>
+
+ <target name="xyz">
+ <mkdir dir="${input}"/>
+ <mkdir dir="${output}"/>
+ <echo file="${input}/x">s/x/blah/g${eol}</echo>
+ <echo file="${input}/y">s/y/blah/g${eol}</echo>
+ <echo file="${input}/z">s/z/blah/g${eol}</echo>
+ <fileset id="xyz" dir="${input}" includes="x,y,z" />
+ <filelist id="xyzlist" dir="${input}" files="x,y,z" />
+ <property name="x" location="${input}/x" />
+ <property name="y" location="${input}/y" />
+ <property name="z" location="${input}/z" />
+ </target>
+
+ <target name="testNoRedirect" depends="xyz" if="test.can.run">
+ <apply executable="sh">
+ <arg value="parrot.sh" />
+ <fileset refid="xyz" />
+ </apply>
+
+ <au:assertLogContains text="${x} out" />
+ <au:assertLogContains text="${y} out" />
+ <au:assertLogContains text="${z} out" />
+ <au:assertLogContains text="${x} err" />
+ <au:assertLogContains text="${y} err" />
+ <au:assertLogContains text="${z} err" />
+
+ <!--
+
+ The original junit test also verified that x out happened before
+ y out, and y out happened before z out; likewise with err output.
+ I added the antunit:logcontent resource hoping that would help,
+ but I think we need a way to filter (copy) resources first.
+ THAT necessitates the string-to-resource coding we are currently
+ discussing on the dev list IMO. MJB, 9/22/2006
+
+ -->
+
+ </target>
+
+ <target name="testRedirect1" depends="xyz" if="test.can.run">
+ <apply executable="sh" output="${output}/redirect.out" append="true">
+ <arg value="parrot.sh" />
+ <fileset refid="xyz" />
+ </apply>
+
+ <au:assertTrue>
+ <resourcecount count="1">
+ <restrict id="results">
+ <file file="${output}/redirect.out" />
+ <and xmlns="antlib:org.apache.tools.ant.types.resources.selectors">
+ <contains text="${x} out" />
+ <contains text="${y} out" />
+ <contains text="${z} out" />
+ <contains text="${x} err" />
+ <contains text="${y} err" />
+ <contains text="${z} err" />
+ </and>
+ </restrict>
+ </resourcecount>
+ </au:assertTrue>
+
+ </target>
+
+ <target name="testRedirect2" depends="xyz" if="test.can.run">
+ <apply executable="sh" output="${output}/redirect.out"
+ error="${output}/redirect.err" append="true">
+ <arg value="parrot.sh" />
+ <fileset refid="xyz" />
+ </apply>
+
+ <au:assertTrue>
+ <and>
+ <resourcesmatch astext="true">
+ <string value="${x} out${eol}${y} out${eol}${z} out" />
+ <file file="${output}/redirect.out" />
+ </resourcesmatch>
+ <resourcesmatch astext="true">
+ <string value="${x} err${eol}${y} err${eol}${z} err" />
+ <file file="${output}/redirect.err" />
+ </resourcesmatch>
+ </and>
+ </au:assertTrue>
+ </target>
+
+ <target name="testRedirect3" depends="xyz" if="test.can.run">
+ <apply executable="sh" logerror="true" append="true"
+ output="${output}/redirect.out" outputproperty="redirect3.out">
+ <arg value="parrot.sh" />
+ <fileset refid="xyz" />
+ </apply>
+
+ <au:assertTrue>
+ <resourcesmatch astext="true">
+ <string value="${x} out${eol}${y} out${eol}${z} out" />
+ <file file="${output}/redirect.out" />
+ <propertyresource name="redirect3.out" />
+ </resourcesmatch>
+ </au:assertTrue>
+
+ <au:assertLogContains text="${x} err" />
+ <au:assertLogContains text="${y} err" />
+ <au:assertLogContains text="${z} err" />
+ </target>
+
+ <target name="testRedirect4" depends="xyz" if="test.can.run">
+ <apply executable="sh" append="true"
+ error="${output}/redirect.err" errorproperty="redirect4.err"
+ output="${output}/redirect.out" outputproperty="redirect4.out">
+ <arg value="parrot.sh" />
+ <fileset refid="xyz" />
+ </apply>
+
+ <au:assertTrue>
+ <and>
+ <resourcesmatch astext="true">
+ <string value="${x} out${eol}${y} out${eol}${z} out" />
+ <file file="${output}/redirect.out" />
+ <propertyresource name="redirect4.out" />
+ </resourcesmatch>
+ <resourcesmatch astext="true">
+ <string value="${x} err${eol}${y} err${eol}${z} err" />
+ <file file="${output}/redirect.err" />
+ <propertyresource name="redirect4.err" />
+ </resourcesmatch>
+ </and>
+ </au:assertTrue>
+ </target>
+
+ <target name="testRedirect5" depends="xyz" if="sed.can.run">
+ <apply executable="sed" inputstring="x y z${eol}" append="true"
+ error="${output}/redirect.err" errorproperty="redirect5.err"
+ output="${output}/redirect.out" outputproperty="redirect5.out">
+ <arg value="-f" />
+ <fileset refid="xyz" />
+ </apply>
+
+ <au:assertTrue>
+ <and>
+ <resourcesmatch astext="true">
+ <propertyresource name="redirect5.out" />
+ <string value="blah y z${eol}x blah z${eol}x y blah" />
+ <file file="${output}/redirect.out" />
+ </resourcesmatch>
+ <equals arg1="${redirect5.err}" arg2="" />
+ </and>
+ </au:assertTrue>
+ <assertEmptyFile file="${output}/redirect.err" />
+ </target>
+
+ <target name="testRedirect6" depends="xyz" if="sed.can.run">
+ <echo file="${input}/redirect.in">x y z${eol}</echo>
+ <apply executable="sed" input="${input}/redirect.in" append="true"
+ error="${output}/redirect.err" errorproperty="redirect6.err"
+ output="${output}/redirect.out" outputproperty="redirect6.out">
+ <arg value="-f" />
+ <filelist refid="xyzlist" />
+ </apply>
+
+ <au:assertTrue>
+ <and>
+ <resourcesmatch astext="true">
+ <propertyresource name="redirect6.out" />
+ <string value="blah y z${eol}x blah z${eol}x y blah" />
+ <file file="${output}/redirect.out" />
+ </resourcesmatch>
+ <equals arg1="${redirect6.err}" arg2="" />
+ <length length="0"><file file="${output}/redirect.err" /></length>
+ </and>
+ </au:assertTrue>
+ </target>
+
+ <target name="testRedirect7" depends="xyz" if="sed.can.run">
+ <apply executable="sed" inputstring="x y z${eol}"
+ error="${output}/redirect.err" output="${output}/redirect.out"
+ outputproperty="redirect7.out">
+ <arg value="-f" />
+ <fileset refid="xyz" />
+ </apply>
+
+ <au:assertTrue>
+ <and>
+ <equals arg1="${redirect7.out}" arg2="blah y z" />
+ <resourcesmatch astext="true">
+ <file file="${output}/redirect.out" />
+ <string value="x y blah" />
+ </resourcesmatch>
+ </and>
+ </au:assertTrue>
+ <assertEmptyFile file="${output}/redirect.err" />
+ </target>
+
+ <target name="testRedirector1" description="fail"
+ depends="xyz" if="test.can.run">
+ <au:expectfailure
+ expectedmessage="cannot have &gt; 1 nested &lt;redirector&gt;s">
+ <apply executable="sh">
+ <arg value="parrot.sh" />
+ <fileset refid="xyz" />
+ <redirector output="${output}/redirector.out" />
+ <redirector output="${output}/whocares" />
+ </apply>
+ </au:expectfailure>
+ </target>
+
+ <target name="testRedirector2" depends="xyz" if="test.can.run">
+ <apply executable="sh">
+ <arg value="parrot.sh" />
+ <fileset refid="xyz" />
+ <redirector output="${output}/redirector.out" append="true" />
+ </apply>
+ <au:assertTrue>
+ <resourcecount count="1">
+ <restrict id="results">
+ <file file="${output}/redirector.out" />
+ <and xmlns="antlib:org.apache.tools.ant.types.resources.selectors">
+ <contains text="${x} out" />
+ <contains text="${y} out" />
+ <contains text="${z} out" />
+ <contains text="${x} err" />
+ <contains text="${y} err" />
+ <contains text="${z} err" />
+ </and>
+ </restrict>
+ </resourcecount>
+ </au:assertTrue>
+ </target>
+
+ <target name="testRedirector3" depends="xyz" if="test.can.run">
+ <apply executable="sh">
+ <arg value="parrot.sh" />
+ <fileset refid="xyz" />
+ <redirector append="true"
+ output="${output}/redirector.out"
+ error="${output}/redirector.err" />
+ </apply>
+ <au:assertTrue>
+ <and>
+ <resourcesmatch astext="true">
+ <string value="${x} out${eol}${y} out${eol}${z} out" />
+ <file file="${output}/redirector.out" />
+ </resourcesmatch>
+ <resourcesmatch astext="true">
+ <string value="${x} err${eol}${y} err${eol}${z} err" />
+ <file file="${output}/redirector.err" />
+ </resourcesmatch>
+ </and>
+ </au:assertTrue>
+ </target>
+
+ <target name="testRedirector4" depends="xyz" if="test.can.run">
+ <apply executable="sh">
+ <arg value="parrot.sh" />
+ <fileset refid="xyz" />
+ <redirector output="${output}/redirector.out" logerror="true"
+ append="true" outputproperty="redirector4.out" />
+ </apply>
+
+ <au:assertTrue>
+ <resourcesmatch astext="true">
+ <string value="${x} out${eol}${y} out${eol}${z} out" />
+ <file file="${output}/redirector.out" />
+ <propertyresource name="redirector4.out" />
+ </resourcesmatch>
+ </au:assertTrue>
+
+ <au:assertLogContains text="${x} err" />
+ <au:assertLogContains text="${y} err" />
+ <au:assertLogContains text="${z} err" />
+ </target>
+
+ <target name="testRedirector5" depends="xyz" if="test.can.run">
+ <apply executable="sh">
+ <redirector error="${output}/redirector.err"
+ errorproperty="redirector5.err"
+ output="${output}/redirector.out"
+ outputproperty="redirector5.out"
+ append="true" />
+ <arg value="parrot.sh" />
+ <fileset refid="xyz" />
+ </apply>
+ <au:assertTrue>
+ <and>
+ <resourcesmatch astext="true">
+ <string value="${x} out${eol}${y} out${eol}${z} out" />
+ <file file="${output}/redirector.out" />
+ <propertyresource name="redirector5.out" />
+ </resourcesmatch>
+ <resourcesmatch astext="true">
+ <string value="${x} err${eol}${y} err${eol}${z} err" />
+ <file file="${output}/redirector.err" />
+ <propertyresource name="redirector5.err" />
+ </resourcesmatch>
+ </and>
+ </au:assertTrue>
+ </target>
+
+ <target name="testRedirector6" depends="xyz" if="test.can.run">
+ <apply executable="sh">
+ <redirector append="true" outputproperty="redirector6.out"
+ errorproperty="redirector6.err">
+ <outputmapper type="merge" to="${output}/redirector.out" />
+ <errormapper type="merge" to="${output}/redirector.err" />
+ </redirector>
+ <arg value="parrot.sh" />
+ <filelist refid="xyzlist" />
+ </apply>
+
+ <au:assertTrue>
+ <and>
+ <resourcesmatch astext="true">
+ <string value="${x} out${eol}${y} out${eol}${z} out" />
+ <file file="${output}/redirector.out" />
+ <propertyresource name="redirector6.out" />
+ </resourcesmatch>
+ <resourcesmatch astext="true">
+ <string value="${x} err${eol}${y} err${eol}${z} err" />
+ <file file="${output}/redirector.err" />
+ <propertyresource name="redirector6.err" />
+ </resourcesmatch>
+ </and>
+ </au:assertTrue>
+ </target>
+
+ <target name="testRedirector7" depends="xyz" if="test.can.run">
+ <apply executable="sh">
+ <redirector append="true" outputproperty="redirector7.out"
+ errorproperty="redirector7.err">
+ <outputmapper type="merge" to="${output}/redirector.out" />
+ <errormapper type="merge" to="${output}/redirector.err" />
+ <errorfilterchain>
+ <replacestring from="err" to="ERROR!!!" />
+ </errorfilterchain>
+ </redirector>
+ <arg value="parrot.sh" />
+ <fileset refid="xyz" />
+ </apply>
+
+ <au:assertTrue>
+ <and>
+ <resourcesmatch astext="true">
+ <string value="${x} out${eol}${y} out${eol}${z} out" />
+ <file file="${output}/redirector.out" />
+ <propertyresource name="redirector7.out" />
+ </resourcesmatch>
+ <resourcesmatch astext="true">
+ <string value="${x} ERROR!!!${eol}${y} ERROR!!!${eol}${z} ERROR!!!" />
+ <file file="${output}/redirector.err" />
+ <propertyresource name="redirector7.err" />
+ </resourcesmatch>
+ </and>
+ </au:assertTrue>
+ </target>
+
+ <target name="testRedirector8" depends="xyz" if="sed.can.run">
+ <echo file="${input}/redirector.in">x y z${eol}</echo>
+ <apply executable="sed">
+ <redirector append="true" outputproperty="redirector8.out"
+ errorproperty="redirector8.err">
+ <inputmapper type="merge" to="${input}/redirector.in" />
+ <outputmapper type="merge" to="${output}/redirector.out" />
+ <errormapper type="merge" to="${output}/redirector.err" />
+ </redirector>
+ <arg value="-f" />
+ <fileset refid="xyz" />
+ </apply>
+
+ <au:assertTrue>
+ <and>
+ <resourcesmatch astext="true">
+ <propertyresource name="redirector8.out" />
+ <string value="blah y z${eol}x blah z${eol}x y blah" />
+ <file file="${output}/redirector.out" />
+ </resourcesmatch>
+ <equals arg1="${redirector8.err}" arg2="" />
+ </and>
+ </au:assertTrue>
+ <assertEmptyFile file="${output}/redirector.err" />
+ </target>
+
+ <macrodef name="valRor9-12">
+ <attribute name="n" />
+ <sequential>
+ <au:assertTrue>
+ <and>
+ <equals arg1="" arg2="${redirector@{n}.err}" />
+ <resourcesmatch astext="true">
+ <string value="blah after y after z${eol}x after blah after z${eol}x after y after blah" />
+ <propertyresource name="redirector@{n}.out" />
+ <file file="${output}/redirector.out" />
+ </resourcesmatch>
+ </and>
+ </au:assertTrue>
+ <assertEmptyFile file="${output}/redirector.err" />
+ </sequential>
+ </macrodef>
+
+ <target name="testRedirector9" depends="xyz" if="sed.can.run">
+ <echo file="${input}/redirector.in">x before y before z${eol}</echo>
+ <apply executable="sed">
+ <redirector outputproperty="redirector9.out"
+ errorproperty="redirector9.err" append="true">
+ <inputfilterchain>
+ <replacestring from="before" to="after" />
+ </inputfilterchain>
+ <inputmapper type="merge" to="${input}/redirector.in" />
+ <outputmapper type="merge" to="${output}/redirector.out" />
+ <errormapper type="merge" to="${output}/redirector.err" />
+ </redirector>
+ <arg value="-f" />
+ <fileset refid="xyz" />
+ </apply>
+
+ <valRor9-12 n="9" />
+ </target>
+
+ <target name="testRedirector10" depends="xyz" if="sed.can.run">
+ <echo file="${input}/redirector.in">x before y before z${eol}</echo>
+ <apply executable="sed">
+ <redirector outputproperty="redirector10.out"
+ errorproperty="redirector10.err" append="true">
+ <outputfilterchain>
+ <replacestring from="before" to="after" />
+ </outputfilterchain>
+ <outputmapper type="merge" to="${output}/redirector.out" />
+ <errormapper type="merge" to="${output}/redirector.err" />
+ </redirector>
+ <arg value="-f" />
+ <srcfile />
+ <arg value="${input}/redirector.in" />
+ <filelist refid="xyzlist" />
+ </apply>
+
+ <valRor9-12 n="10" />
+ </target>
+
+ <target name="testRedirector11" depends="xyz" if="sed.can.run">
+ <apply executable="sed">
+ <redirector outputproperty="redirector11.out"
+ errorproperty="redirector11.err"
+ inputstring="x before y before z${eol}"
+ append="true">
+ <inputfilterchain>
+ <replacestring from="before" to="after" />
+ </inputfilterchain>
+ <outputmapper type="merge" to="${output}/redirector.out" />
+ <errormapper type="merge" to="${output}/redirector.err" />
+ </redirector>
+ <arg value="-f" />
+ <fileset refid="xyz" />
+ </apply>
+
+ <valRor9-12 n="11" />
+ </target>
+
+ <target name="testRedirector12" depends="xyz" if="sed.can.run">
+ <echo file="${input}/redirector.in">x before y before z${eol}</echo>
+ <apply executable="sed" output="${output}/redirector.out"
+ error="${output}/redirector.err">
+ <redirector outputproperty="redirector12.out"
+ errorproperty="redirector12.err" append="true">
+ <outputfilterchain>
+ <replacestring from="before" to="after" />
+ </outputfilterchain>
+ <outputmapper type="glob" from="nomatch" to="nomatchout" />
+ <errormapper type="glob" from="nomatch" to="nomatcherr" />
+ </redirector>
+ <arg value="-f" />
+ <srcfile />
+ <arg value="${input}/redirector.in" />
+ <filelist refid="xyzlist" />
+ </apply>
+
+ <valRor9-12 n="12" />
+ </target>
+
+ <target name="testRedirector13" depends="xyz" if="test.can.run">
+ <apply executable="sh">
+ <redirector>
+ <outputfilterchain>
+ <replacestring from="out" to="OUTPUT???" />
+ </outputfilterchain>
+ <errorfilterchain>
+ <replacestring from="err" to="ERROR!!!" />
+ </errorfilterchain>
+ </redirector>
+ <arg value="parrot.sh" />
+ <fileset refid="xyz" />
+ </apply>
+
+ <au:assertLogContains text="${x} OUTPUT???" />
+ <au:assertLogContains text="${y} OUTPUT???" />
+ <au:assertLogContains text="${z} OUTPUT???" />
+ <au:assertLogContains text="${x} ERROR!!!" />
+ <au:assertLogContains text="${y} ERROR!!!" />
+ <au:assertLogContains text="${z} ERROR!!!" />
+ </target>
+
+ <target name="testRedirector14" depends="xyz" if="sed.can.run">
+ <echo file="${input}/redirector.in">z before y before x${eol}</echo>
+ <apply executable="sed">
+ <redirector append="true"
+ inputstring="x before y before z${eol}">
+ <outputfilterchain>
+ <replacestring from="before" to="after" />
+ </outputfilterchain>
+ <inputmapper type="glob" from="x" to="${input}/redirector.in" />
+ <outputmapper type="glob" from="y" to="${output}/redirector.out" />
+ <errormapper type="glob" from="z" to="${output}/redirector.err" />
+ </redirector>
+ <arg value="-f" />
+ <fileset refid="xyz" />
+ </apply>
+
+ <assertEmptyFile file="${output}/redirector.err" />
+
+ <au:assertTrue>
+ <and>
+ <resourcesmatch astext="true">
+ <string value="x after blah after z" />
+ <file file="${output}/redirector.out" />
+ </resourcesmatch>
+ </and>
+ </au:assertTrue>
+ <au:assertLogContains text="z after y after blahx after y after blah"/>
+ </target>
+
+ <target name="pad">
+ <condition property="pad" value="">
+ <or>
+ <not>
+ <os family="dos" />
+ </not>
+ <not>
+ <or>
+ <equals arg1="${ant.java.version}" arg2="1.1" />
+ <equals arg1="${ant.java.version}" arg2="1.2" />
+ </or>
+ </not>
+ </or>
+ </condition>
+
+ <condition property="pad" value=" ">
+ <and>
+ <os family="dos" />
+ <or>
+ <equals arg1="${ant.java.version}" arg2="1.2" />
+ </or>
+ </and>
+ </condition>
+
+ </target>
+
+ <target name="testIgnoreMissing" depends="xyz,pad" if="echo.can.run">
+ <filelist id="xylist" dir="${input}" files="x,y" />
+ <delete file="${input}/z" />
+
+ <pathconvert property="xy" pathsep="${pad}${eol}" refid="xylist" />
+
+ <pathconvert property="xyz" pathsep="${pad}${eol}" refid="xyzlist" />
+
+ <apply executable="echo" ignoremissing="true"
+ outputproperty="ignoretrue" append="true">
+ <filelist refid="xyzlist" />
+ </apply>
+
+ <apply executable="echo" ignoremissing="false"
+ outputproperty="ignorefalse" append="true">
+ <filelist refid="xyzlist" />
+ </apply>
+
+ <au:assertTrue>
+ <and>
+ <equals arg1="${xy}${pad}" arg2="${ignoretrue}" />
+ <equals arg1="${xyz}${pad}" arg2="${ignorefalse}" />
+ </and>
+ </au:assertTrue>
+ </target>
+
+ <target name="testForce" depends="xyz,pad" if="echo.can.run">
+ <presetdef name="ekko">
+ <apply executable="echo" append="true" dest="${input}">
+ <filelist refid="xyzlist" />
+ <mapper type="identity" />
+ </apply>
+ </presetdef>
+
+ <pathconvert property="xyz" pathsep="${pad}${eol}" refid="xyzlist" />
+
+ <ekko outputproperty="foo" />
+ <ekko outputproperty="bar" force="true" />
+
+ <au:assertTrue>
+ <and>
+ <equals arg1="${foo}" arg2="" />
+ <equals arg1="${bar}" arg2="${xyz}" />
+ </and>
+ </au:assertTrue>
+ </target>
+
+ <target name="testNoDest" depends="xyz" if="echo.can.run">
+ <presetdef name="ekko">
+ <apply executable="echo" addsourcefile="false" force="true">
+ <filelist dir="${input}" files="x" />
+ <globmapper from="*" to="${input}/*" />
+ <targetfile />
+ </apply>
+ </presetdef>
+ <ekko outputproperty="dest" dest="${input}" />
+ <ekko outputproperty="nodest" />
+
+ <au:assertFileDoesntExist file="${dest}" />
+ <au:assertFileExists file="${nodest}" />
+ </target>
+
+ <target name="testLsPath" if="ls.can.run" depends="xyz">
+ <apply executable="ls" parallel="false" outputproperty="lsPathOut"
+ force="true" dest="${input}" append="true" type="both">
+ <path path="${env.PATH}" />
+ <identitymapper/>
+ </apply>
+ <au:assertTrue>
+ <resourcecount count="1">
+ <restrict>
+ <propertyresource name="lsPathOut" />
+ <containsregexp expression="^${ls.can.run}$"
+ xmlns="antlib:org.apache.tools.ant.types.resources.selectors" />
+ </restrict>
+ </resourcecount>
+ </au:assertTrue>
+ </target>
+
+ <target name="testLsPathParallel" if="ls.can.run" depends="xyz">
+ <apply executable="ls" parallel="true" outputproperty="lsPathParallelOut"
+ force="true" dest="${input}" append="true" type="both">
+ <path path="${env.PATH}" />
+ <identitymapper/>
+ </apply>
+ <au:assertTrue>
+ <resourcecount count="1">
+ <restrict>
+ <propertyresource name="lsPathParallelOut" />
+ <containsregexp expression="^${ls.can.run}$"
+ xmlns="antlib:org.apache.tools.ant.types.resources.selectors" />
+ </restrict>
+ </resourcecount>
+ </au:assertTrue>
+ </target>
+
+ <target name="testSrcfilePrefix" if="test.can.run" depends="xyz">
+ <apply executable="sh" force="true">
+ <arg value="parrot.sh" />
+ <srcfile prefix="-Dfoo="/>
+ <fileset refid="xyz" />
+ </apply>
+ <au:assertLogContains text="-Dfoo=${x} out" />
+ <au:assertLogContains text="-Dfoo=${y} out" />
+ <au:assertLogContains text="-Dfoo=${z} out" />
+ </target>
+
+ <target name="testTargetfileSuffix" if="test.can.run" depends="xyz">
+ <apply executable="sh" addsourcefile="false" dest="${input}">
+ <arg value="parrot.sh" />
+ <targetfile suffix=",x"/>
+ <fileset refid="xyz" />
+ <globmapper from="*" to="*.bar"/>
+ </apply>
+ <au:assertLogContains text="${x}.bar,x out" />
+ <au:assertLogContains text="${y}.bar,x out" />
+ <au:assertLogContains text="${z}.bar,x out" />
+ </target>
+
+ <target name="testRedirectorWithParallel" if="test.can.run" depends="xyz">
+ <apply executable="sh" dest="${input}" parallel="true" addsourcefile="yes">
+ <arg value="parrot.sh" />
+ <targetfile/>
+ <fileset refid="xyz" />
+ <globmapper from="*" to="*.bar"/>
+ <redirector output="${output}/all_out.txt" append="yes"/>
+ </apply>
+ <au:assertResourceContains resource="${output}/all_out.txt"
+ value="x.bar out"/>
+ <au:assertResourceContains resource="${output}/all_out.txt"
+ value="x.bar err"/>
+ <au:assertResourceContains resource="${output}/all_out.txt"
+ value="x out"/>
+ <au:assertResourceContains resource="${output}/all_out.txt"
+ value="x err"/>
+ <au:assertResourceContains resource="${output}/all_out.txt"
+ value="y.bar out"/>
+ <au:assertResourceContains resource="${output}/all_out.txt"
+ value="y.bar err"/>
+ <au:assertResourceContains resource="${output}/all_out.txt"
+ value="y out"/>
+ <au:assertResourceContains resource="${output}/all_out.txt"
+ value="y err"/>
+ <au:assertResourceContains resource="${output}/all_out.txt"
+ value="z.bar out"/>
+ <au:assertResourceContains resource="${output}/all_out.txt"
+ value="z.bar err"/>
+ <au:assertResourceContains resource="${output}/all_out.txt"
+ value="z out"/>
+ <au:assertResourceContains resource="${output}/all_out.txt"
+ value="z err"/>
+ </target>
+</project>