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