blob: 9f558fa651fa205a9d87fae4649632dd60416664 [file] [log] [blame]
<?xml version="1.0"?>
<project name="test" basedir=".">
<path id="testclasses">
<pathelement location="../../../../build/testcases" />
<pathelement path="${java.class.path}" />
</path>
<mapper id="testmapper"
classname="org.apache.tools.ant.taskdefs.MultiMapTest$TestMapper"
classpathref="testclasses"/>
<property name="map.ext" value=".copy2"/>
<property name="rootScratchDir" value="test_multi_mapper_scratch_area"/>
<property name="baseScratchSrc" value="${rootScratchDir}/src"/>
<property name="baseScratchDest" value="${rootScratchDir}/dest"/>
<target name="setup">
<delete dir="${baseScratchSrc}"/>
<mkdir dir="${baseScratchSrc}"/>
<delete dir="${baseScratchDest}"/>
<mkdir dir="${baseScratchDest}"/>
<touch file="${baseScratchSrc}/somefile.txt"/>
</target>
<!-- test simple single file to multiple file move -->
<target name="multicopy" depends="setup">
<copy todir="${baseScratchDest}" enablemultiplemappings="true">
<fileset dir="${baseScratchSrc}" includes="somefile.txt"/>
<mapper refid="testmapper"/>
</copy>
<condition property="multicopy.outcome">
<and>
<available file="${baseScratchDest}/somefile.txt"/>
<available file="${baseScratchDest}/somefile.txt${map.ext}"/>
</and>
</condition>
<fail unless="multicopy.outcome">multicopy failed</fail>
</target>
<target name="multimove" depends="setup">
<move todir="${baseScratchDest}" enablemultiplemappings="true">
<fileset dir="${baseScratchSrc}" includes="somefile.txt"/>
<mapper refid="testmapper"/>
</move>
<condition property="test2.outcome">
<and>
<available file="${baseScratchDest}/somefile.txt"/>
<available file="${baseScratchDest}/somefile.txt${map.ext}"/>
<not>
<available file="${baseScratchSrc}/somefile.txt"/>
</not>
<not>
<available file="${baseScratchSrc}/somefile.txt${map.ext}"/>
</not>
</and>
</condition>
<fail unless="test2.outcome">mulitmove failed</fail>
</target>
<!--
test traditional single file to single file copy explicitly telling
task to ignore multiple mappings
-->
<target name="singlecopy" depends="setup">
<copy todir="${baseScratchDest}" enablemultiplemappings="false">
<fileset dir="${baseScratchSrc}" includes="somefile.txt"/>
<mapper refid="testmapper"/>
</copy>
<condition property="singlecopy.outcome">
<and>
<available file="${baseScratchDest}/somefile.txt"/>
<not>
<available file="${baseScratchDest}/somefile.txt${map.ext}"/>
</not>
<available file="${baseScratchSrc}/somefile.txt"/>
</and>
</condition>
<fail unless="singlecopy.outcome">singlecopy failed</fail>
</target>
<target name="singlemove" depends="setup">
<move todir="${baseScratchDest}" enablemultiplemappings="false">
<fileset dir="${baseScratchSrc}" includes="somefile.txt"/>
<mapper refid="testmapper"/>
</move>
<condition property="singlemove.outcome">
<and>
<available file="${baseScratchDest}/somefile.txt"/>
<not>
<available file="${baseScratchDest}/somefile.txt${map.ext}"/>
</not>
<not>
<available file="${baseScratchSrc}/somefile.txt"/>
</not>
</and>
</condition>
<fail unless="singlemove.outcome">singlemove failed</fail>
</target>
<!-- test dir w/ file + empty dir multimap copy -->
<target name="copywithempty">
<delete dir="${baseScratchSrc}"/>
<mkdir dir="${baseScratchSrc}/dirwithfile"/>
<mkdir dir="${baseScratchSrc}/emptydir"/>
<touch file="${baseScratchSrc}/dirwithfile/somefile.txt"/>
<delete dir="${baseScratchDest}"/>
<mkdir dir="${baseScratchDest}"/>
<copy todir="${baseScratchDest}" enablemultiplemappings="true">
<fileset dir="${baseScratchSrc}" includes="**/*"/>
<mapper refid="testmapper"/>
</copy>
<condition property="copywithempty.outcome">
<and>
<available file="${baseScratchDest}/dirwithfile"/>
<available file="${baseScratchDest}/dirwithfile${map.ext}"/>
<available file="${baseScratchDest}/dirwithfile/somefile.txt"/>
<available file="${baseScratchDest}/dirwithfile/somefile.txt${map.ext}"/>
<not>
<available file="${baseScratchDest}/dirwithfile${map.ext}/somefile.txt"/>
</not>
<not>
<available file="${baseScratchDest}/dirwithfile${map.ext}/somefile.txt${map.ext}"/>
</not>
<available file="${baseScratchDest}/emptydir"/>
<available file="${baseScratchDest}/emptydir${map.ext}"/>
</and>
</condition>
<fail unless="copywithempty.outcome">copywithempty failed</fail>
</target>
<!-- test dir w/ file + empty dir multimap move -->
<target name="movewithempty">
<delete dir="${baseScratchSrc}"/>
<mkdir dir="${baseScratchSrc}/dirwithfile"/>
<mkdir dir="${baseScratchSrc}/emptydir"/>
<touch file="${baseScratchSrc}/dirwithfile/somefile.txt"/>
<delete dir="${baseScratchDest}"/>
<mkdir dir="${baseScratchDest}"/>
<move todir="${baseScratchDest}" enablemultiplemappings="true">
<fileset dir="${baseScratchSrc}" includes="**/*"/>
<mapper refid="testmapper"/>
</move>
<condition property="movewithempty.outcome">
<and>
<available file="${baseScratchDest}/dirwithfile"/>
<available file="${baseScratchDest}/dirwithfile${map.ext}"/>
<available file="${baseScratchDest}/dirwithfile/somefile.txt"/>
<available file="${baseScratchDest}/dirwithfile/somefile.txt${map.ext}"/>
<not>
<available file="${baseScratchDest}/dirwithfile${map.ext}/somefile.txt"/>
</not>
<not>
<available file="${baseScratchDest}/dirwithfile${map.ext}/somefile.txt${map.ext}"/>
</not>
<available file="${baseScratchDest}/emptydir"/>
<available file="${baseScratchDest}/emptydir${map.ext}"/>
<not>
<available file="${baseScratchSrc}/dirwithfile"/>
</not>
<not>
<available file="${baseScratchSrc}/emptydir"/>
</not>
</and>
</condition>
<fail unless="movewithempty.outcome">movewithempty failed</fail>
</target>
<target name="cleanup">
<delete dir="${rootScratchDir}"/>
</target>
</project>