blob: 85cf7c2246ae05f82880e831cc86e486f6c12665 [file] [log] [blame]
<?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="copy-test" basedir="." default="test1">
<target name="test1">
<copy file="copy.xml" tofile="copytest1.tmp" />
</target>
<target name="test2">
<copy file="copy.xml" todir="copytest1dir" overwrite="true"/>
</target>
<target name="filtertest">
<!-- check fix for bugzilla 23154 -->
<delete quiet="yes" file="copy.filter.out"/>
<delete quiet="yes" file="copy.filter.inp"/>
<concat destfile="copy.filter.inp">
PRODUCT_VERSION=6.2.1.4
PRODUCT_BUILD=6.5 (BLD_65036)
PRODUCT_VERSION=6.2.1.4
PRODUCT_BUILD=6.5 (BLD_65036)
</concat>
<copy file="copy.filter.inp" tofile="copy.filter.out">
<filterset begintoken="6" endtoken="4">
<filter token=".2.1." value="2.6.4" />
</filterset>
</copy>
<concat><path path="copy.filter.out"/></concat>
</target>
<target name="infinitetest">
<delete quiet="yes" file="copy.filter.out"/>
<delete quiet="yes" file="copy.filter.inp"/>
<concat destfile="copy.filter.inp">
a=b=
</concat>
<copy file="copy.filter.inp" tofile="copy.filter.out">
<filterset begintoken="=" endtoken="=">
<filter token="b" value="=b="/>
</filterset>
</copy>
<concat><path path="copy.filter.out"/></concat>
</target>
<target name="test3">
<!-- create an empty file -->
<touch file="copytest3.tmp"/>
<!--wait -->
<sleep seconds="4"/>
<!-- copy a different file to two places -->
<copy file="copy.xml" tofile="copytest3a.tmp" overwrite="true"/>
<copy file="copy.xml" tofile="copytest3b.tmp" overwrite="true"/>
<!--wait -->
<sleep seconds="4"/>
<!-- copy an old file onto a newer file (should not work) -->
<copy file="copytest3.tmp" tofile="copytest3b.tmp" />
<!-- copy an older file onto a new one, should succeed -->
<copy file="copytest3.tmp" tofile="copytest3c.tmp"
overwrite="true"
preservelastmodified="true" />
<!-- copy a newer file onto an older one (should work) -->
<copy file="copytest3a.tmp" tofile="copytest3.tmp"
preservelastmodified="true" />
<!-- expected state :
3a.tmp==3.tmp==copy.xml
timeof(3a.tmp)==timeof(3.tmp)==now()-4
sizeof(3c)==0
timeof(3c.tmp)<timeof(3a.tmp);
3b.tmp==copy.xml
-->
</target>
<target name="test_single_file_fileset">
<copy tofile="copytest_single_file_fileset.tmp">
<fileset dir="." includes="copy.xml"/>
</copy>
</target>
<target name="test_single_file_path">
<copy tofile="copytest_single_file_path.tmp">
<path>
<pathelement location="copy.xml"/>
</path>
</copy>
</target>
<target name="testFilterSet">
<copy file="copy.filterset" tofile="copy.filterset.tmp">
<filterset>
<filter token="TITLE" value="Apache Ant Project"/>
</filterset>
</copy>
</target>
<target name="testFilterChain">
<copy file="copy.filterset" tofile="copy.filterchain.tmp">
<filterchain>
<replacetokens>
<token key="TITLE" value="Apache Ant Project"/>
</replacetokens>
</filterchain>
</copy>
</target>
<target name="testTranscoding">
<copy file="copy/input/iso8859-1" tofile="copytest1.tmp"
encoding="ISO8859_1" outputencoding="UTF8"/>
</target>
<target name="testMissingFileIgnore">
<copy file="not-there" tofile="copytest1.tmp"
failonerror="false"/>
</target>
<target name="testMissingFileBail">
<copy file="not-there" tofile="copytest1.tmp"
failonerror="true"/>
</target>
<target name="testMissingDirIgnore">
<copy todir="copytest1dir" failonerror="false">
<fileset dir="not-there"/>
</copy>
</target>
<target name="testMissingDirBail">
<copy todir="copytest1dir" failonerror="true">
<fileset dir="not-there"/>
</copy>
</target>
<property name="to.dir" value="copy-todir-tmp"/>
<property name="from.dir" value="copy-fromdir-tmp"/>
<target name="testResource.prepare">
<mkdir dir="${from.dir}"/>
<concat destfile="${from.dir}/file1.txt">This is file 1</concat>
<concat destfile="${from.dir}/file2.txt">This is file 2</concat>
<concat destfile="${from.dir}/file3.txt">This is file 3</concat>
<concat destfile="${from.dir}/fileNR.txt">This is file @NR@</concat>
</target>
<target name="testFileResourcePlain" depends="testResource.prepare">
<copy todir="${to.dir}" flatten="true">
<resources>
<file file="${from.dir}/file1.txt"/>
<file file="${from.dir}/file2.txt"/>
<file file="${from.dir}/file3.txt"/>
</resources>
</copy>
</target>
<target name="testFileResourceWithMapper" depends="testResource.prepare">
<copy todir="${to.dir}" flatten="true">
<resources>
<file file="${from.dir}/file1.txt"/>
<file file="${from.dir}/file2.txt"/>
<file file="${from.dir}/file3.txt"/>
</resources>
<regexpmapper from="^(.*)\.txt$$" to="\1.txt.bak"/>
</copy>
</target>
<target name="testFileResourceWithFilter" depends="testResource.prepare">
<copy todir="${to.dir}" flatten="true">
<resources>
<file file="${from.dir}/fileNR.txt"/>
</resources>
<filterset>
<filter token="NR" value="42"/>
</filterset>
</copy>
</target>
<target name="testResourcePlain">
</target>
<target name="testResourcePlainWithMapper">
</target>
<target name="testResourcePlainWithFilter">
</target>
<target name="testOnlineResources">
</target>
<target name="testPathAsResource" depends="testResource.prepare">
<copy todir="${to.dir}">
<path>
<fileset dir="${from.dir}"/>
</path>
</copy>
</target>
<target name="testZipfileset" depends="testResource.prepare">
<zip destfile="${from.dir}/test.zip" roundup="false">
<fileset dir="${from.dir}" excludes="*.zip"/>
</zip>
<copy todir="${to.dir}">
<zipfileset src="${from.dir}/test.zip"/>
</copy>
</target>
<target name="prepareDirset">
<touch mkdirs="true">
<filelist dir="${from.dir}/dirset">
<file name="a/x/foo" />
<file name="a/y/foo" />
<file name="a/z/foo" />
<file name="b/x/foo" />
<file name="b/y/foo" />
<file name="b/z/foo" />
</filelist>
</touch>
<fail>
<condition>
<or>
<resourcecount when="ne" count="9">
<dirset id="dirset" dir="${from.dir}/dirset" />
</resourcecount>
<resourcecount when="ne" count="6">
<fileset dir="${from.dir}/dirset" />
</resourcecount>
</or>
</condition>
</fail>
<delete dir="${to.dir}/dirset" />
<fail>
<condition>
<available file="${to.dir}/dirset" />
</condition>
</fail>
</target>
<target name="testDirset" depends="prepareDirset">
<copy todir="${to.dir}/dirset">
<resources refid="dirset" />
</copy>
<fail>
<condition>
<or>
<resourcecount when="ne" count="9">
<dirset dir="${to.dir}/dirset" />
</resourcecount>
<resourcecount when="ne" count="0">
<fileset dir="${to.dir}/dirset" />
</resourcecount>
</or>
</condition>
</fail>
</target>
<target name="cleanup">
<delete file="copytest1.tmp"/>
<delete file="copytest3.tmp"/>
<delete file="copytest3a.tmp"/>
<delete file="copytest3b.tmp"/>
<delete file="copytest3c.tmp"/>
<delete file="copytest_single_file_fileset.tmp"/>
<delete file="copytest_single_file_path.tmp"/>
<delete file="copy.filterset.tmp"/>
<delete file="copy.filterchain.tmp"/>
<delete dir="copytest1dir"/>
<delete quiet="yes" file="copy.filter.out"/>
<delete quiet="yes" file="copy.filter.inp"/>
<delete dir="${from.dir}"/>
<delete dir="${to.dir}"/>
</target>
</project>