blob: 4b23d1d62f76e82dd5bc2c39c802ec649fc46693 [file] [log] [blame]
<?xml version="1.0"?>
<project name="selectors-test" basedir="." default="setupfiles">
<property name="etc.dir" value=".."/>
<property name="test.dir"
value="selectortest"/>
<property name="testregexpsrc.dir"
value="regexpseltestsrc"/>
<property name="testregexpdest.dir"
value="regexpseltestdest"/>
<property name="mirror.dir"
value="selectortest2"/>
<target name="setupfiles">
<mkdir dir="${test.dir}" />
<mkdir dir="${test.dir}/zip" />
<mkdir dir="${test.dir}/tar" />
<mkdir dir="${test.dir}/tar/gz" />
<mkdir dir="${test.dir}/tar/bz2" />
<copy file="${etc.dir}/taskdefs/expected/asf-logo.gif.md5"
tofile="${test.dir}/asf-logo.gif.md5" />
<copy file="${etc.dir}/taskdefs/expected/asf-logo.gif.bz2"
tofile="${test.dir}/asf-logo.gif.bz2" />
<copy file="${etc.dir}/taskdefs/expected/asf-logo.gif.gz"
tofile="${test.dir}/asf-logo.gif.gz" />
<copy file="${etc.dir}/taskdefs/expected/copy.filterset.filtered"
tofile="${test.dir}/copy.filterset.filtered" />
<copy file="${etc.dir}/taskdefs/expected/asf-logo.gif.zip"
tofile="${test.dir}/zip/asf-logo.gif.zip" />
<copy file="${etc.dir}/taskdefs/expected/asf-logo.gif.tar"
tofile="${test.dir}/tar/asf-logo.gif.tar" />
<copy file="${etc.dir}/taskdefs/expected/asf-logo-huge.tar.gz"
tofile="${test.dir}/tar/asf-logo-huge.tar.gz" />
<copy file="${etc.dir}/taskdefs/expected/asf-logo.gif.tar.gz"
tofile="${test.dir}/tar/gz/asf-logo.gif.tar.gz" />
<copy file="${etc.dir}/taskdefs/expected/asf-logo.gif.tar.bz2"
tofile="${test.dir}/tar/bz2/asf-logo.gif.tar.bz2" />
<copy file="${etc.dir}/taskdefs/expected/asf-logo-huge.tar.bz2"
tofile="${test.dir}/tar/bz2/asf-logo-huge.tar.bz2" />
<!-- Make linefeeds consistent between platforms -->
<fixcrlf srcdir="${test.dir}" includes="*.filtered" eol="lf"/>
<!-- Set a known base time for all files -->
<touch datetime="11/21/2001 4:55 AM">
<fileset dir="${test.dir}">
<include name="**/*"/>
</fileset>
</touch>
<!-- Then adjust individual ones -->
<touch file="${test.dir}/asf-logo.gif.bz2"
datetime="01/01/2001 12:00 AM"/>
<touch file="${test.dir}/asf-logo.gif.gz"
datetime="04/15/2002 2:30 PM"/>
<touch file="${test.dir}/zip/asf-logo.gif.zip"
datetime="05/10/2002 2:30 PM"/>
<touch file="${test.dir}/tar/asf-logo.gif.tar"
datetime="05/10/2002 2:29 PM"/>
<touch file="${test.dir}/tar/asf-logo-huge.tar.gz"
datetime="05/10/2002 2:29 AM"/>
</target>
<target name="cleanup">
<delete dir="${test.dir}" />
</target>
<target name="mirrorfiles">
<mkdir dir="${mirror.dir}" />
<mkdir dir="${mirror.dir}/zip" />
<mkdir dir="${mirror.dir}/tar" />
<mkdir dir="${mirror.dir}/tar/gz" />
<mkdir dir="${mirror.dir}/tar/bz2" />
<touch file="${mirror.dir}/asf-logo.gif.md5"/>
<touch file="${mirror.dir}/asf-logo.gif.bz2"/>
<sleep seconds="2"/>
<touch file="${mirror.dir}/zip/asf-logo.gif.zip"/>
<sleep seconds="3"/>
<touch file="${mirror.dir}/tar/asf-logo.gif.tar"/>
<sleep seconds="2"/>
<touch file="${mirror.dir}/tar/asf-logo-huge.tar.gz"/>
<touch file="${mirror.dir}/tar/gz/asf-logo.gif.tar.gz"/>
<touch file="${mirror.dir}/tar/bz2/asf-logo.gif.tar.bz2"/>
<touch file="${mirror.dir}/tar/bz2/asf-logo-huge.tar.bz2"/>
</target>
<target name="cleanup.mirrorfiles">
<delete dir="${mirror.dir}" />
</target>
<target name="cleanupregexp">
<delete dir="${testregexpsrc.dir}" />
<delete dir="${testregexpdest.dir}" />
</target>
<target name="containsregexp">
<mkdir dir="${testregexpsrc.dir}" />
<mkdir dir="${testregexpdest.dir}" />
<!-- Make two test files, shouldcopy.txt will get selected if everything works
shouldnotcopy.txt will not get selected for copy. The test looks to see
that only one file is copied
-->
<echo message="Some testregexp text 2.0" file="${testregexpsrc.dir}/shouldcopy.txt" />
<echo message="Some testregexp text 20" file="${testregexpsrc.dir}/shouldnotcopy.txt" />
<copy todir="${testregexpdest.dir}">
<fileset dir="${testregexpsrc.dir}">
<include name="*.txt" />
<containsregexp expression="[0-9]\.[0,1,2]" />
</fileset>
</copy>
</target>
<!-- ========== Test for ModifiedSelector ========== -->
<target name="modifiedselectortest-makeDirty">
<!-- Load propertyfile generated by SelectorTest-class -->
<property file="ModifiedSelectorTest.properties"/>
<!-- Modify only timestamp -->
<touch file="${test.dir}/${f2name}" datetime="02/28/2003 9:55 AM"/>
<!-- Change content but keep timestamp -->
<echo file="${test.dir}/${f3name}" append="true" message="new content"/>
<touch file="${test.dir}/${f3name}" datetime="11/21/2001 4:55 AM"/>
<!-- Change content and timestamp -->
<echo file="${test.dir}/${f4name}" append="true" message="new content"/>
</target>
<target name="modifiedselectortest-scenario-clean">
<delete dir="${test.dir}"/>
</target>
<target name="modifiedselectortest-scenario-prepare">
<mkdir dir="${test.dir}/src"/>
<copy todir="${test.dir}/src">
<fileset dir="${ant.home}/lib" includes="ant.jar">
<type type="file"/>
</fileset>
<fileset dir="${ant.home}/bin">
<type type="file"/>
</fileset>
</copy>
<touch datetime="12/24/2002 4:00 pm">
<fileset dir="${test.dir}"/>
</touch>
<mkdir dir="${test.dir}/to-1"/>
<mkdir dir="${test.dir}/to-2"/>
<mkdir dir="${test.dir}/to-3"/>
</target>
<target name="modifiedselectortest-scenario-makeDirty">
<touch file="${test.dir}/src/ant.jar"/>
<echo file="${test.dir}/src/ant.bat" append="true" message="new-content"/>
<echo file="${test.dir}/src/antRun.pl" append="true" message="new-content"/>
<touch file="${test.dir}/src/antRun.pl" datetime="12/24/2002 4:00 pm"/>
</target>
<target name="modifiedselectortest-scenario-coreselector-defaults" depends="modifiedselectortest-scenario-prepare">
<!-- copy first time and create cachefile -->
<copy todir="${test.dir}/to-1">
<fileset dir="${test.dir}/src">
<modified/>
</fileset>
</copy>
<!-- copy second time: nothing should be copied -->
<copy todir="${test.dir}/to-2">
<fileset dir="${test.dir}/src">
<modified/>
</fileset>
</copy>
<!-- 'modify' the source files -->
<antcall target="modifiedselectortest-scenario-makeDirty"/>
<!-- copy third time: only the files with new CONTENT should be copied -->
<copy todir="${test.dir}/to-3">
<fileset dir="${test.dir}/src">
<modified/>
</fileset>
</copy>
</target>
<target name="modifiedselectortest-scenario-coreselector-settings" depends="modifiedselectortest-scenario-prepare">
<!-- copy first time and create cachefile -->
<copy todir="${test.dir}/to-1">
<fileset dir="${test.dir}/src">
<modified cache="propertyfile" algorithm="hashvalue" update="true">
<param name="cache.cachefile" value="core.cache.properties" />
</modified>
</fileset>
</copy>
<!-- copy second time: nothing should be copied -->
<copy todir="${test.dir}/to-2">
<fileset dir="${test.dir}/src">
<modified cache="propertyfile" algorithm="hashvalue" update="true">
<param name="cache.cachefile" value="core.cache.properties" />
</modified>
</fileset>
</copy>
<!-- 'modify' the source files -->
<antcall target="modifiedselectortest-scenario-makeDirty"/>
<!-- copy third time: only the files with new CONTENT should be copied -->
<copy todir="${test.dir}/to-3">
<fileset dir="${test.dir}/src">
<modified cache="propertyfile" algorithm="hashvalue" update="true">
<param name="cache.cachefile" value="core.cache.properties" />
</modified>
</fileset>
</copy>
</target>
<target name="modifiedselectortest-scenario-customselector-settings" depends="modifiedselectortest-scenario-prepare">
<!-- copy first time and create cachefile -->
<copy todir="${test.dir}/to-1">
<fileset dir="${test.dir}/src">
<custom classname="org.apache.tools.ant.types.selectors.modifiedselector.ModifiedSelector">
<param name="cache" value="propertyfile"/>
<param name="algorithm" value="hashvalue"/>
<param name="update" value="true"/>
<param name="cache.cachefile" value="core.cache.properties"/>
</custom>
</fileset>
</copy>
<!-- copy second time: nothing should be copied -->
<copy todir="${test.dir}/to-2">
<fileset dir="${test.dir}/src">
<custom classname="org.apache.tools.ant.types.selectors.modifiedselector.ModifiedSelector">
<param name="cache" value="propertyfile"/>
<param name="algorithm" value="hashvalue"/>
<param name="update" value="true"/>
<param name="cache.cachefile" value="core.cache.properties"/>
</custom>
</fileset>
</copy>
<!-- 'modify' the source files -->
<antcall target="modifiedselectortest-scenario-makeDirty"/>
<!-- copy third time: only the files with new CONTENT should be copied -->
<copy todir="${test.dir}/to-3">
<fileset dir="${test.dir}/src">
<custom classname="org.apache.tools.ant.types.selectors.modifiedselector.ModifiedSelector">
<param name="cache" value="propertyfile"/>
<param name="algorithm" value="hashvalue"/>
<param name="update" value="true"/>
<param name="cache.cachefile" value="core.cache.properties"/>
</custom>
</fileset>
</copy>
</target>
<target name="modifiedselectortest-customClasses" depends="modifiedselectortest-scenario-prepare">
<property name="pkg.live" value="org.apache.tools.ant.types.selectors.modifiedselector"/>
<property name="pkg.test" value="org.apache.tools.ant.types.selectors"/>
<fileset id="fs.mod" dir="${test.dir}/src">
<modified
algorithmclass="${pkg.test}.MockAlgorithm"
cacheclass="${pkg.test}.MockCache"
comparatorclass="${pkg.test}.MockComparator"
>
<classpath>
<pathelement location="${build.tests.value}"/>
</classpath>
</modified>
</fileset>
<fileset id="fs.full" dir="${test.dir}/src"/>
<property name="fs.mod.value" refid="fs.mod"/>
<property name="fs.full.value" refid="fs.full"/>
</target>
<target name="modifiedselectortest-ResourceSimple">
<fail message="Didnt get the required numbers of Resources.">
<condition>
<not>
<resourcecount when="equal" count="3">
<restrict>
<resources>
<file file="foo" />
<resource name="foo" />
<file file="foo" basedir="${basedir}" />
</resources>
<modified selres="true" xmlns="antlib:org.apache.tools.ant.types.resources.selectors"/>
</restrict>
</resourcecount>
</not>
</condition>
</fail>
</target>
<target name="modifiedselectortest-ResourceSelresTrue">
<fail message="Got the Resource, but should.">
<condition>
<not>
<resourcecount when="equal" count="1">
<restrict>
<resources>
<resource name="notExisting" />
</resources>
<modified selres="true" xmlns="antlib:org.apache.tools.ant.types.resources.selectors"/>
</restrict>
</resourcecount>
</not>
</condition>
</fail>
</target>
<target name="modifiedselectortest-ResourceSelresFalse">
<fail message="Got the Resource, but should not.">
<condition>
<not>
<resourcecount when="equal" count="0">
<restrict>
<resources>
<resource name="notExisting" />
</resources>
<modified selres="false" xmlns="antlib:org.apache.tools.ant.types.resources.selectors"/>
</restrict>
</resourcecount>
</not>
</condition>
</fail>
</target>
<target name="modifiedselectortest-scenario-resourceSimple" depends="modifiedselectortest-scenario-prepare">
<macrodef name="check">
<attribute name="count"/>
<attribute name="message"/>
<sequential>
<fail message="@{message}">
<condition>
<not>
<resourcecount when="equal" count="@{count}">
<restrict>
<resources>
<fileset dir="${test.dir}/src"/>
</resources>
<modified selres="false" xmlns="antlib:org.apache.tools.ant.types.resources.selectors"/>
</restrict>
</resourcecount>
</not>
</condition>
</fail>
</sequential>
</macrodef>
<!-- select first time and create cachefile -->
<check count="14" message="Initial set of files not ok."/>
<!-- check second time: nothing should be selected -->
<check count="0" message="Selected files but shouldnt."/>
<!-- 'modify' the source files -->
<antcall target="modifiedselectortest-scenario-makeDirty"/>
<!-- copy third time: only the files with new CONTENT should be copied -->
<check count="2" message="Didnt select the 2 modified files."/>
</target>
</project>