| <?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> |