blob: 878098096e898218682d9d9d76bb099ac86b4244 [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
https://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">
<import file="../buildfiletest-base.xml"/>
<target name="setUp">
<mkdir dir="${output}" />
</target>
<target name="test1">
<copy file="copy.xml" tofile="${output}/copytest1.tmp" />
</target>
<target name="test2">
<copy file="copy.xml" todir="${output}/copytest1dir" overwrite="true"/>
</target>
<target name="filtertest">
<!-- check fix for bugzilla 23154 -->
<concat destfile="${output}/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="${output}/copy.filter.inp" tofile="${output}/copy.filter.out">
<filterset begintoken="6" endtoken="4">
<filter token=".2.1." value="2.6.4" />
</filterset>
</copy>
<concat><path path="${output}/copy.filter.out"/></concat>
</target>
<target name="infinitetest">
<concat destfile="${output}/copy.filter.inp">
a=b=
</concat>
<copy file="${output}/copy.filter.inp" tofile="${output}/copy.filter.out">
<filterset begintoken="=" endtoken="=">
<filter token="b" value="=b="/>
</filterset>
</copy>
<concat><path path="${output}/copy.filter.out"/></concat>
</target>
<target name="test3">
<!-- create an empty file -->
<touch file="${output}/copytest3.tmp"/>
<!-- copy a different file to two places -->
<copy file="copy.xml" tofile="${output}/copytest3a.tmp" overwrite="true"/>
<copy file="copy.xml" tofile="${output}/copytest3b.tmp" overwrite="true"/>
</target><target name="test3Part2">
<!-- copy an old file onto a newer file (should not work) -->
<copy file="${output}/copytest3.tmp" tofile="${output}/copytest3b.tmp" />
<!-- copy an older file onto a new one, should succeed -->
<copy file="${output}/copytest3.tmp" tofile="${output}/copytest3c.tmp"
overwrite="true"
preservelastmodified="true" />
<!-- copy a newer file onto an older one (should work) -->
<copy file="${output}/copytest3a.tmp" tofile="${output}/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="${output}/copytest_single_file_fileset.tmp">
<fileset dir="." includes="copy.xml"/>
</copy>
</target>
<target name="test_single_file_path">
<copy tofile="${output}/copytest_single_file_path.tmp">
<path>
<pathelement location="copy.xml"/>
</path>
</copy>
</target>
<target name="testFilterSet">
<copy file="copy.filterset" tofile="${output}/copy.filterset.tmp">
<filterset>
<filter token="TITLE" value="Apache Ant Project"/>
</filterset>
</copy>
</target>
<target name="testFilterChain">
<copy file="copy.filterset" tofile="${output}/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="${output}/copytest1.tmp"
encoding="ISO8859_1" outputencoding="UTF8"/>
</target>
<target name="testMissingFileIgnore">
<copy file="not-there" tofile="${output}/copytest1.tmp"
failonerror="false"/>
</target>
<target name="testMissingFileBail">
<copy file="not-there" tofile="${output}/copytest1.tmp"
failonerror="true"/>
</target>
<target name="testMissingDirIgnore">
<copy todir="${output}" failonerror="false">
<fileset dir="not-there"/>
</copy>
</target>
<target name="testMissingDirBail">
<copy todir="${output}" failonerror="true">
<fileset dir="not-there"/>
</copy>
</target>
<property name="to.dir" value="${output}/copy-todir-tmp"/>
<property name="from.dir" value="${output}/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="setupSelfCopyTesting" description="Sets up the necessary files and directories for testSelfCopy task which
will be called by the test cases">
<property name="self.copy.test.root.dir" location="${output}/self-copy-test"/>
<mkdir dir="${self.copy.test.root.dir}"/>
<echo file="${self.copy.test.root.dir}/file.txt" message="hello-world"/>
</target>
<target name="testSelfCopy">
<property name="self.copy.test.root.dir" location="${output}/self-copy-test"/>
<!-- straightforward self-copy -->
<copy file="${self.copy.test.root.dir}/file.txt" tofile="${self.copy.test.root.dir}/file.txt" overwrite="true"/>
<!-- create a symlink of the source file and then attempt a copy of the original file and the symlink -->
<symlink link="${self.copy.test.root.dir}/sylmink-file.txt" resource="${self.copy.test.root.dir}/file.txt"/>
<copy file="${self.copy.test.root.dir}/file.txt" tofile="${self.copy.test.root.dir}/sylmink-file.txt" overwrite="true"/>
<copy file="${self.copy.test.root.dir}/sylmink-file.txt" tofile="${self.copy.test.root.dir}/file.txt" overwrite="true"/>
<!-- create a symlink of the dir containing the source file and then attempt a copy of the original file and the symlink dir -->
<property name="self.copy.test.symlinked.dir" location="${output}/symlink-for-output-dir"/>
<symlink link="${self.copy.test.symlinked.dir}" resource="${self.copy.test.root.dir}"/>
<copy file="${self.copy.test.symlinked.dir}/file.txt" tofile="${self.copy.test.root.dir}/sylmink-file.txt" overwrite="true"/>
<copy file="${self.copy.test.root.dir}/sylmink-file.txt" tofile="${self.copy.test.symlinked.dir}/file.txt" overwrite="true"/>
<copy todir="${self.copy.test.symlinked.dir}" overwrite="true">
<fileset dir="${self.copy.test.root.dir}"/>
</copy>
</target>
</project>