blob: 7444c71110ca61714b3cf8d74f8b25d8fddc39ae [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
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 default="antunit"
xmlns:au="antlib:org.apache.ant.antunit"
xmlns:cond="antlib:org.apache.tools.ant.types.conditions"
xmlns:cmp="antlib:org.apache.ant.compress">
<import file="antunit-base.xml" />
<target name="setUp">
<mkdir dir="${output}"/>
<property name="dest" location="${output}/test.ar"/>
<mkdir dir="${input}/s"/>
<copy todir="${input}/s" file="../resources/asf-logo.gif"/>
<macrodef name="checkProperties">
<attribute name="pattern" default="yyyy-MM-dd-HH:mm:ss Z"/>
<attribute name="dateTime"/>
<attribute name="uid" default="0"/>
<attribute name="gid" default="0"/>
<attribute name="mode" default="644"/>
<sequential>
<au:assertTrue>
<cond:islastmodified datetime="@{dateTime}"
pattern="@{pattern}">
<cmp:arentry name="asf-logo.gif">
<file file="${dest}"/>
</cmp:arentry>
</cond:islastmodified>
</au:assertTrue>
<au:assertTrue>
<cmp:hasuserid id="@{uid}">
<cmp:arentry name="asf-logo.gif">
<file file="${dest}"/>
</cmp:arentry>
</cmp:hasuserid>
</au:assertTrue>
<au:assertTrue>
<cmp:hasgroupid id="@{gid}">
<cmp:arentry name="asf-logo.gif">
<file file="${dest}"/>
</cmp:arentry>
</cmp:hasgroupid>
</au:assertTrue>
<au:assertTrue>
<cmp:hasmode mode="@{mode}">
<cmp:arentry name="asf-logo.gif">
<file file="${dest}"/>
</cmp:arentry>
</cmp:hasmode>
</au:assertTrue>
</sequential>
</macrodef>
</target>
<target name="testPlainFileSet" depends="setUp">
<mkdir dir="${input}"/>
<copy todir="${input}" file="../resources/asf-logo.gif"/>
<touch datetime="2009-08-19-05:49:21 +0200"
pattern="yyyy-MM-dd-HH:mm:ss Z"
file="${input}/asf-logo.gif"/>
<cmp:ar destfile="${dest}">
<fileset dir="${input}" includes="asf-logo.gif"/>
</cmp:ar>
<checkProperties dateTime="2009-08-19-05:49:21 +0200"/>
</target>
<target name="testCoreZipFileSet" depends="setUp">
<cmp:ar destfile="${dest}">
<zipfileset src="../resources/asf-logo.gif.zip"
includes="asf-logo.gif"/>
</cmp:ar>
<checkProperties dateTime="2001-11-19-15:34:20"
pattern="yyyy-MM-dd-HH:mm:ss"
mode="644"/>
</target>
<target name="testAntlibZipFileSet" depends="setUp">
<cmp:ar destfile="${dest}">
<cmp:zipfileset src="../resources/asf-logo.gif.zip"
includes="asf-logo.gif"/>
</cmp:ar>
<checkProperties dateTime="2001-11-19-15:34:20"
pattern="yyyy-MM-dd-HH:mm:ss"
mode="644"/>
</target>
<target name="testCoreTarFileSet" depends="setUp">
<cmp:ar destfile="${dest}">
<tarfileset src="../resources/asf-logo.gif.tar"
includes="asf-logo.gif"/>
</cmp:ar>
<checkProperties dateTime="2001-11-19-15:34:20 +0100" mode="644"
uid="500" gid="500"/>
</target>
<target name="testAntlibTarFileSet" depends="setUp">
<cmp:ar destfile="${dest}">
<cmp:tarfileset src="../resources/asf-logo.gif.tar"
includes="asf-logo.gif"/>
</cmp:ar>
<checkProperties dateTime="2001-11-19-15:34:20 +0100" mode="644"
uid="500" gid="500"/>
</target>
<target name="testArFileSet" depends="setUp">
<cmp:ar destfile="${dest}">
<cmp:arfileset src="../resources/asf-logo.gif.ar"
includes="asf-logo.gif"/>
</cmp:ar>
<checkProperties dateTime="2009-07-31-20:11:13 +0200" mode="644"
uid="1000" gid="1000"/>
</target>
<target name="testCpioFileSet" depends="setUp">
<cmp:ar destfile="${dest}">
<cmp:cpiofileset src="../resources/asf-logo.gif.bin.cpio"
includes="asf-logo.gif"/>
</cmp:ar>
<checkProperties dateTime="2009-07-31-20:11:13 +0200" mode="644"
uid="1000" gid="1000"/>
</target>
<target name="testNoDirectoriesByDefault" depends="setUp">
<cmp:ar destfile="${dest}">
<fileset dir="${input}"/>
<dirset dir="${input}"/>
</cmp:ar>
<assertResourceExists>
<cmp:arentry name="s/asf-logo.gif">
<file file="${dest}"/>
</cmp:arentry>
</assertResourceExists>
<assertResourceDoesntExist>
<cmp:arentry name="s/">
<file file="${dest}"/>
</cmp:arentry>
</assertResourceDoesntExist>
</target>
<target name="testWithDirectories" depends="setUp">
<au:expectfailure
message="ar archives cannot store directory entries">
<cmp:ar destfile="${dest}" filesonly="false">
<dirset dir="${input}" excludes="."/>
</cmp:ar>
</au:expectfailure>
</target>
<target name="testWithImplicitDirectories" depends="setUp">
<au:expectfailure
message="ar archives cannot store directory entries">
<cmp:ar destfile="${dest}" filesonly="false">
<fileset dir="${input}"/>
</cmp:ar>
</au:expectfailure>
</target>
<target name="testImplicitDirectoriesUsePermissions" depends="setUp">
<au:expectfailure
message="ar archives cannot store directory entries">
<cmp:ar destfile="${dest}" filesonly="false">
<fileset dir="${input}"/>
</cmp:ar>
</au:expectfailure>
</target>
<target name="testFileSetPermissionsWin" depends="setUp">
<cmp:ar destfile="${dest}">
<cmp:arfileset src="../resources/asf-logo.gif.ar"
filemode="600"
includes="asf-logo.gif"/>
</cmp:ar>
<checkProperties dateTime="2009-07-31-20:11:13 +0200" mode="600"
uid="1000" gid="1000"/>
</target>
<target name="testFullpath" depends="setUp">
<cmp:ar destfile="${dest}">
<cmp:arfileset src="../resources/asf-logo.gif.ar"
fullpath="logo.gif"
includes="asf-logo.gif"/>
</cmp:ar>
<assertResourceExists>
<cmp:arentry name="logo.gif">
<file file="${dest}"/>
</cmp:arentry>
</assertResourceExists>
<assertResourceDoesntExist>
<cmp:arentry name="asf-logo.gif">
<file file="${dest}"/>
</cmp:arentry>
</assertResourceDoesntExist>
</target>
<target name="testPrefixWithSlash" depends="setUp">
<cmp:ar destfile="${dest}">
<cmp:arfileset src="../resources/asf-logo.gif.ar"
prefix="x/"
includes="asf-logo.gif"/>
</cmp:ar>
<assertResourceExists>
<cmp:arentry name="x/asf-logo.gif">
<file file="${dest}"/>
</cmp:arentry>
</assertResourceExists>
<assertResourceDoesntExist>
<cmp:arentry name="asf-logo.gif">
<file file="${dest}"/>
</cmp:arentry>
</assertResourceDoesntExist>
</target>
<target name="testPrefixWithBackslash" depends="setUp">
<cmp:ar destfile="${dest}">
<cmp:arfileset src="../resources/asf-logo.gif.ar"
prefix="x\"
includes="asf-logo.gif"/>
</cmp:ar>
<assertResourceExists>
<cmp:arentry name="x/asf-logo.gif">
<file file="${dest}"/>
</cmp:arentry>
</assertResourceExists>
<assertResourceDoesntExist>
<cmp:arentry name="asf-logo.gif">
<file file="${dest}"/>
</cmp:arentry>
</assertResourceDoesntExist>
</target>
<target name="testPrefixWithoutSlash" depends="setUp">
<cmp:ar destfile="${dest}">
<cmp:arfileset src="../resources/asf-logo.gif.ar"
prefix="x"
includes="asf-logo.gif"/>
</cmp:ar>
<assertResourceExists>
<cmp:arentry name="x/asf-logo.gif">
<file file="${dest}"/>
</cmp:arentry>
</assertResourceExists>
<assertResourceDoesntExist>
<cmp:arentry name="asf-logo.gif">
<file file="${dest}"/>
</cmp:arentry>
</assertResourceDoesntExist>
</target>
<target name="-setUp0Permissions" depends="setUp">
<property name="src" location="${input}/src.ar"/>
<cmp:ar destfile="${src}" preserve0permissions="true">
<cmp:arfileset src="../resources/asf-logo.gif.ar"
filemode="0"
includes="asf-logo.gif"/>
</cmp:ar>
</target>
<target name="test0PermissionsGetReplaced"
depends="-setUp0Permissions">
<cmp:ar destfile="${dest}">
<cmp:arfileset src="${src}"
includes="asf-logo.gif"/>
</cmp:ar>
<checkProperties dateTime="2009-07-31-20:11:13 +0200" mode="644"
uid="1000" gid="1000"/>
</target>
<target name="testPreserve0Permissions"
depends="-setUp0Permissions">
<cmp:ar destfile="${dest}" preserve0permissions="true">
<cmp:arfileset src="${src}"
includes="asf-logo.gif"/>
</cmp:ar>
<checkProperties dateTime="2009-07-31-20:11:13 +0200" mode="0"
uid="1000" gid="1000"/>
</target>
<target name="testRemoveLeadingSlashes" depends="setUp">
<cmp:ar destfile="${dest}">
<cmp:arfileset src="../resources/asf-logo.gif.ar"
fullpath="/logo.gif"
includes="asf-logo.gif"/>
</cmp:ar>
<assertResourceExists>
<cmp:arentry name="logo.gif">
<file file="${dest}"/>
</cmp:arentry>
</assertResourceExists>
<assertResourceDoesntExist>
<cmp:arentry name="/logo.gif">
<file file="${dest}"/>
</cmp:arentry>
</assertResourceDoesntExist>
</target>
<target name="testPreserveLeadingSlashes" depends="setUp">
<cmp:ar destfile="${dest}" preserveleadingslashes="true">
<cmp:arfileset src="../resources/asf-logo.gif.ar"
fullpath="/logo.gif"
includes="asf-logo.gif"/>
</cmp:ar>
<assertResourceExists>
<cmp:arentry name="/logo.gif">
<file file="${dest}"/>
</cmp:arentry>
</assertResourceExists>
<assertResourceDoesntExist>
<cmp:arentry name="logo.gif">
<file file="${dest}"/>
</cmp:arentry>
</assertResourceDoesntExist>
</target>
<target name="testAddDuplicates" depends="setUp">
<cmp:ar destfile="${dest}" duplicate="add">
<cmp:arfileset src="../resources/asf-logo.gif.ar"/>
<cmp:zipfileset src="../resources/asf-logo.gif.zip"/>
</cmp:ar>
<au:assertLogContains text="duplicate entry asf-logo.gif found, adding."
level="verbose"/>
</target>
<target name="testPreserveDuplicates" depends="setUp">
<cmp:ar destfile="${dest}" duplicate="preserve">
<cmp:arfileset src="../resources/asf-logo.gif.ar"/>
<cmp:zipfileset src="../resources/asf-logo.gif.zip"/>
</cmp:ar>
<au:assertLogContains text="asf-logo.gif already added, skipping."
level="verbose"/>
</target>
<target name="testFailDuplicates" depends="setUp">
<au:expectfailure
message="Duplicate entry asf-logo.gif was found and the duplicate attribute is 'fail'.">
<cmp:ar destfile="${dest}">
<cmp:arfileset src="../resources/asf-logo.gif.ar"/>
<cmp:zipfileset src="../resources/asf-logo.gif.zip"/>
</cmp:ar>
</au:expectfailure>
</target>
<target name="testFailEmpty" depends="setUp">
<au:expectfailure
message="No sources, nothing to do.">
<cmp:ar destfile="${dest}">
<fileset dir="." includes="not-there"/>
</cmp:ar>
</au:expectfailure>
</target>
<target name="testSkipEmpty" depends="setUp">
<cmp:ar destfile="${dest}" whenEmpty="skip">
<fileset dir="." includes="not-there"/>
</cmp:ar>
<au:assertLogContains text="No sources, nothing to do."
level="warn"/>
<au:assertFileDoesntExist file="${dest}"/>
</target>
<target name="testNonFileDest" depends="setUp">
<cmp:ar>
<fileset dir="." includes="ar-test.xml"/>
<dest>
<gzipresource>
<file file="${dest}.gz"/>
</gzipresource>
</dest>
</cmp:ar>
<au:assertFileExists file="${dest}.gz"/>
<au:assertFileDoesntExist file="${dest}"/>
<gunzip src="${dest}.gz" dest="${dest}"/>
<cmp:unar src="${dest}" dest="${output}"/>
<au:assertFilesMatch expected="ar-test.xml"
actual="${output}/ar-test.xml"/>
</target>
<target name="-prepareArchiveForModeTests" depends="setUp">
<mkdir dir="${input}"/>
<copy todir="${input}">
<fileset dir="." includes="*r-test.xml,zip-test.xml"/>
</copy>
<cmp:ar dest="${dest}">
<fileset dir="${input}"/>
</cmp:ar>
<copy tofile="${dest}.bak" file="${dest}"/>
<property name="timestamp" value="2000-01-01-00:00:00 +0000"/>
<touch datetime="${timestamp}" file="${input}/zip-test.xml"
pattern="yyyy-MM-dd-HH:mm:ss Z"/>
<sleep seconds="2"/>
<touch file="${dest}.bak"/>
<sleep seconds="2"/>
</target>
<target name="testCreateOfUpToDate" depends="-prepareArchiveForModeTests">
<cmp:ar dest="${dest}" mode="create">
<fileset dir="${input}" includes="ar-test.xml,zip-test.xml"/>
</cmp:ar>
<au:assertLogContains
text="test.ar is up-to-date, nothing to do."/>
<au:assertDestIsUptodate
src="${dest}" dest="${dest}.bak"/>
</target>
<target name="testForceCreateOfUpToDate"
depends="-prepareArchiveForModeTests">
<cmp:ar dest="${dest}" mode="force-create">
<fileset dir="${input}" includes="ar-test.xml,zip-test.xml"/>
</cmp:ar>
<au:assertLogDoesntContain
text="test.ar is up-to-date, nothing to do."/>
<au:assertDestIsOutofdate
src="${dest}" dest="${dest}.bak"/>
<assertResourceDoesntExist>
<cmp:arentry name="tar-test.xml">
<file file="${dest}"/>
</cmp:arentry>
</assertResourceDoesntExist>
</target>
<target name="testCreateOfOutOfDate" depends="-prepareArchiveForModeTests">
<touch file="${input}/ar-test.xml"/>
<cmp:ar dest="${dest}" mode="create">
<fileset dir="${input}" includes="ar-test.xml,zip-test.xml"/>
</cmp:ar>
<au:assertLogDoesntContain
text="test.ar is up-to-date, nothing to do."/>
<au:assertDestIsOutofdate
src="${dest}" dest="${dest}.bak"/>
<assertResourceDoesntExist>
<cmp:arentry name="tar-test.xml">
<file file="${dest}"/>
</cmp:arentry>
</assertResourceDoesntExist>
</target>
<target name="testReplaceOfUpToDate" depends="-prepareArchiveForModeTests">
<cmp:ar dest="${dest}" mode="replace">
<fileset dir="${input}" includes="ar-test.xml,zip-test.xml"/>
</cmp:ar>
<au:assertLogContains
text="test.ar is up-to-date, nothing to do."/>
<au:assertDestIsUptodate
src="${dest}" dest="${dest}.bak"/>
</target>
<target name="testForceReplaceOfUpToDate"
depends="-prepareArchiveForModeTests">
<cmp:ar dest="${dest}" mode="force-replace">
<fileset dir="${input}" includes="ar-test.xml,zip-test.xml"/>
</cmp:ar>
<au:assertLogDoesntContain
text="test.ar is up-to-date, nothing to do."/>
<au:assertDestIsOutofdate
src="${dest}" dest="${dest}.bak"/>
<assertResourceExists>
<cmp:arentry name="tar-test.xml">
<file file="${dest}"/>
</cmp:arentry>
</assertResourceExists>
<au:assertTrue>
<cond:islastmodified datetime="${timestamp}"
pattern="yyyy-MM-dd-HH:mm:ss Z">
<cmp:arentry name="zip-test.xml">
<file file="${dest}"/>
</cmp:arentry>
</cond:islastmodified>
</au:assertTrue>
</target>
<target name="testReplaceOfOutOfDate" depends="-prepareArchiveForModeTests">
<touch file="${input}/ar-test.xml"/>
<cmp:ar dest="${dest}" mode="replace">
<fileset dir="${input}" includes="ar-test.xml,zip-test.xml"/>
</cmp:ar>
<au:assertLogDoesntContain
text="test.ar is up-to-date, nothing to do."/>
<au:assertDestIsOutofdate
src="${dest}" dest="${dest}.bak"/>
<assertResourceExists>
<cmp:arentry name="tar-test.xml">
<file file="${dest}"/>
</cmp:arentry>
</assertResourceExists>
<au:assertTrue>
<cond:islastmodified datetime="${timestamp}"
pattern="yyyy-MM-dd-HH:mm:ss Z">
<cmp:arentry name="zip-test.xml">
<file file="${dest}"/>
</cmp:arentry>
</cond:islastmodified>
</au:assertTrue>
</target>
<target name="testUpdateOfUpToDate" depends="-prepareArchiveForModeTests">
<cmp:ar dest="${dest}" mode="update">
<fileset dir="${input}" includes="ar-test.xml,zip-test.xml"/>
</cmp:ar>
<au:assertLogContains
text="test.ar is up-to-date, nothing to do."/>
<au:assertDestIsUptodate
src="${dest}" dest="${dest}.bak"/>
</target>
<target name="testUpdateOfOutOfDate" depends="-prepareArchiveForModeTests">
<touch file="${input}/ar-test.xml"/>
<cmp:ar dest="${dest}" mode="update">
<fileset dir="${input}" includes="ar-test.xml,zip-test.xml"/>
</cmp:ar>
<au:assertLogDoesntContain
text="test.ar is up-to-date, nothing to do."/>
<au:assertDestIsOutofdate
src="${dest}" dest="${dest}.bak"/>
<assertResourceExists>
<cmp:arentry name="tar-test.xml">
<file file="${dest}"/>
</cmp:arentry>
</assertResourceExists>
<au:assertFalse>
<cond:islastmodified datetime="${timestamp}"
pattern="yyyy-MM-dd-HH:mm:ss Z">
<cmp:arentry name="zip-test.xml">
<file file="${dest}"/>
</cmp:arentry>
</cond:islastmodified>
</au:assertFalse>
</target>
</project>