blob: bb0f9382f9e4e76b0ca27d8995688e09d67e8f18 [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.tar"/>
<mkdir dir="${input}/subdir"/>
<copy todir="${input}/subdir" 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"/>
<attribute name="user" default=""/>
<attribute name="group" default=""/>
<sequential>
<au:assertTrue>
<cond:islastmodified datetime="@{dateTime}"
pattern="@{pattern}">
<cmp:tarentry name="asf-logo.gif">
<file file="${dest}"/>
</cmp:tarentry>
</cond:islastmodified>
</au:assertTrue>
<au:assertTrue>
<cmp:hasuserid id="@{uid}">
<cmp:tarentry name="asf-logo.gif">
<file file="${dest}"/>
</cmp:tarentry>
</cmp:hasuserid>
</au:assertTrue>
<au:assertTrue>
<cmp:hasgroupid id="@{gid}">
<cmp:tarentry name="asf-logo.gif">
<file file="${dest}"/>
</cmp:tarentry>
</cmp:hasgroupid>
</au:assertTrue>
<au:assertTrue>
<cmp:hasmode mode="@{mode}">
<cmp:tarentry name="asf-logo.gif">
<file file="${dest}"/>
</cmp:tarentry>
</cmp:hasmode>
</au:assertTrue>
<au:assertTrue>
<cmp:hasusername name="@{user}">
<cmp:tarentry name="asf-logo.gif">
<file file="${dest}"/>
</cmp:tarentry>
</cmp:hasusername>
</au:assertTrue>
<au:assertTrue>
<cmp:hasgroupname name="@{group}">
<cmp:tarentry name="asf-logo.gif">
<file file="${dest}"/>
</cmp:tarentry>
</cmp:hasgroupname>
</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:tar destfile="${dest}">
<fileset dir="${input}" includes="asf-logo.gif"/>
</cmp:tar>
<checkProperties dateTime="2009-08-19-05:49:21 +0200"/>
</target>
<target name="testCoreZipFileSet" depends="setUp">
<cmp:tar destfile="${dest}">
<zipfileset src="../resources/asf-logo.gif.zip"
includes="asf-logo.gif"/>
</cmp:tar>
<checkProperties dateTime="2001-11-19-15:34:20"
pattern="yyyy-MM-dd-HH:mm:ss"
mode="644"/>
</target>
<target name="testAntlibZipFileSet" depends="setUp">
<cmp:tar destfile="${dest}">
<cmp:zipfileset src="../resources/asf-logo.gif.zip"
includes="asf-logo.gif"/>
</cmp:tar>
<checkProperties dateTime="2001-11-19-15:34:20"
pattern="yyyy-MM-dd-HH:mm:ss"
mode="644"/>
</target>
<target name="testCoreTarFileSet" depends="setUp">
<cmp:tar destfile="${dest}">
<tarfileset src="../resources/asf-logo.gif.tar"
includes="asf-logo.gif"/>
</cmp:tar>
<checkProperties dateTime="2001-11-19-15:34:20 +0100" mode="644"
uid="500" gid="500" user="bodewig" group="bodewig"/>
</target>
<target name="testAntlibTarFileSet" depends="setUp">
<cmp:tar destfile="${dest}">
<cmp:tarfileset src="../resources/asf-logo.gif.tar"
includes="asf-logo.gif"/>
</cmp:tar>
<checkProperties dateTime="2001-11-19-15:34:20 +0100" mode="644"
uid="500" gid="500" user="bodewig" group="bodewig"/>
</target>
<target name="testArFileSet" depends="setUp">
<cmp:tar destfile="${dest}">
<cmp:arfileset src="../resources/asf-logo.gif.ar"
includes="asf-logo.gif"/>
</cmp:tar>
<checkProperties dateTime="2009-07-31-20:11:13 +0200" mode="644"
uid="1000" gid="1000"/>
</target>
<target name="testCpioFileSet" depends="setUp">
<cmp:tar destfile="${dest}">
<cmp:cpiofileset src="../resources/asf-logo.gif.bin.cpio"
includes="asf-logo.gif"/>
</cmp:tar>
<checkProperties dateTime="2009-07-31-20:11:13 +0200" mode="644"
uid="1000" gid="1000"/>
</target>
<target name="testNoDirectoriesByDefault" depends="setUp">
<cmp:tar destfile="${dest}">
<fileset dir="${input}"/>
<dirset dir="${input}"/>
</cmp:tar>
<assertResourceExists>
<cmp:tarentry name="subdir/asf-logo.gif">
<file file="${dest}"/>
</cmp:tarentry>
</assertResourceExists>
<assertResourceDoesntExist>
<cmp:tarentry name="subdir/">
<file file="${dest}"/>
</cmp:tarentry>
</assertResourceDoesntExist>
</target>
<target name="testWithDirectories" depends="setUp">
<cmp:tar destfile="${dest}" filesonly="false">
<dirset dir="${input}" excludes="."/>
</cmp:tar>
<assertResourceExists>
<cmp:tarentry name="subdir/">
<file file="${dest}"/>
</cmp:tarentry>
</assertResourceExists>
<au:assertTrue>
<cmp:hasmode mode="755">
<cmp:tarentry name="subdir/">
<file file="${dest}"/>
</cmp:tarentry>
</cmp:hasmode>
</au:assertTrue>
<assertResourceDoesntExist>
<cmp:tarentry name="subdir/asf-logo.gif">
<file file="${dest}"/>
</cmp:tarentry>
</assertResourceDoesntExist>
</target>
<target name="testWithImplicitDirectories" depends="setUp">
<cmp:tar destfile="${dest}" filesonly="false">
<fileset dir="${input}"/>
</cmp:tar>
<assertResourceExists>
<cmp:tarentry name="subdir/">
<file file="${dest}"/>
</cmp:tarentry>
</assertResourceExists>
<au:assertTrue>
<cmp:hasmode mode="755">
<cmp:tarentry name="subdir/">
<file file="${dest}"/>
</cmp:tarentry>
</cmp:hasmode>
</au:assertTrue>
<assertResourceExists>
<cmp:tarentry name="subdir/asf-logo.gif">
<file file="${dest}"/>
</cmp:tarentry>
</assertResourceExists>
</target>
<target name="testImplicitDirectoriesUsePermissions" depends="setUp">
<cmp:tar destfile="${dest}" filesonly="false">
<zipfileset dir="${input}" dirmode="750"/>
</cmp:tar>
<au:assertTrue>
<cmp:hasmode mode="750">
<cmp:tarentry name="subdir/">
<file file="${dest}"/>
</cmp:tarentry>
</cmp:hasmode>
</au:assertTrue>
</target>
<target name="testFileSetPermissionsWin" depends="setUp">
<cmp:tar destfile="${dest}">
<cmp:arfileset src="../resources/asf-logo.gif.ar"
filemode="600"
includes="asf-logo.gif"/>
</cmp:tar>
<checkProperties dateTime="2009-07-31-20:11:13 +0200" mode="600"
uid="1000" gid="1000"/>
</target>
<target name="testFullpath" depends="setUp">
<cmp:tar destfile="${dest}">
<cmp:arfileset src="../resources/asf-logo.gif.ar"
fullpath="logo.gif"
includes="asf-logo.gif"/>
</cmp:tar>
<assertResourceExists>
<cmp:tarentry name="logo.gif">
<file file="${dest}"/>
</cmp:tarentry>
</assertResourceExists>
<assertResourceDoesntExist>
<cmp:tarentry name="asf-logo.gif">
<file file="${dest}"/>
</cmp:tarentry>
</assertResourceDoesntExist>
</target>
<target name="testPrefixWithSlash" depends="setUp">
<cmp:tar destfile="${dest}">
<cmp:arfileset src="../resources/asf-logo.gif.ar"
prefix="x/"
includes="asf-logo.gif"/>
</cmp:tar>
<assertResourceExists>
<cmp:tarentry name="x/asf-logo.gif">
<file file="${dest}"/>
</cmp:tarentry>
</assertResourceExists>
<assertResourceDoesntExist>
<cmp:tarentry name="asf-logo.gif">
<file file="${dest}"/>
</cmp:tarentry>
</assertResourceDoesntExist>
</target>
<target name="testPrefixWithBackslash" depends="setUp">
<cmp:tar destfile="${dest}">
<cmp:arfileset src="../resources/asf-logo.gif.ar"
prefix="x\"
includes="asf-logo.gif"/>
</cmp:tar>
<assertResourceExists>
<cmp:tarentry name="x/asf-logo.gif">
<file file="${dest}"/>
</cmp:tarentry>
</assertResourceExists>
<assertResourceDoesntExist>
<cmp:tarentry name="asf-logo.gif">
<file file="${dest}"/>
</cmp:tarentry>
</assertResourceDoesntExist>
</target>
<target name="testPrefixWithoutSlash" depends="setUp">
<cmp:tar destfile="${dest}">
<cmp:arfileset src="../resources/asf-logo.gif.ar"
prefix="x"
includes="asf-logo.gif"/>
</cmp:tar>
<assertResourceExists>
<cmp:tarentry name="x/asf-logo.gif">
<file file="${dest}"/>
</cmp:tarentry>
</assertResourceExists>
<assertResourceDoesntExist>
<cmp:tarentry name="asf-logo.gif">
<file file="${dest}"/>
</cmp:tarentry>
</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:tar destfile="${dest}">
<cmp:arfileset src="${src}"
includes="asf-logo.gif"/>
</cmp:tar>
<checkProperties dateTime="2009-07-31-20:11:13 +0200" mode="644"
uid="1000" gid="1000"/>
</target>
<target name="testPreserve0Permissions"
depends="-setUp0Permissions">
<cmp:tar destfile="${dest}" preserve0permissions="true">
<cmp:arfileset src="${src}"
includes="asf-logo.gif"/>
</cmp:tar>
<checkProperties dateTime="2009-07-31-20:11:13 +0200" mode="0"
uid="1000" gid="1000"/>
</target>
<target name="testRemoveLeadingSlashes" depends="setUp">
<cmp:tar destfile="${dest}">
<cmp:arfileset src="../resources/asf-logo.gif.ar"
fullpath="/logo.gif"
includes="asf-logo.gif"/>
</cmp:tar>
<assertResourceExists>
<cmp:tarentry name="logo.gif">
<file file="${dest}"/>
</cmp:tarentry>
</assertResourceExists>
<assertResourceDoesntExist>
<cmp:tarentry name="/logo.gif">
<file file="${dest}"/>
</cmp:tarentry>
</assertResourceDoesntExist>
</target>
<!-- doesn't work because TarEntry strips leading slashes, will be
fixed for Apache Commons Compress 1.1 -->
<target name="fail-testPreserveLeadingSlashes" depends="setUp">
<cmp:tar destfile="${dest}" preserveleadingslashes="true">
<cmp:arfileset src="../resources/asf-logo.gif.ar"
fullpath="/logo.gif"
includes="asf-logo.gif"/>
</cmp:tar>
<assertResourceExists>
<cmp:tarentry name="/logo.gif">
<file file="${dest}"/>
</cmp:tarentry>
</assertResourceExists>
<assertResourceDoesntExist>
<cmp:tarentry name="logo.gif">
<file file="${dest}"/>
</cmp:tarentry>
</assertResourceDoesntExist>
</target>
<target name="testAddDuplicates" depends="setUp">
<cmp:tar destfile="${dest}" duplicate="add">
<cmp:arfileset src="../resources/asf-logo.gif.ar"/>
<cmp:zipfileset src="../resources/asf-logo.gif.zip"/>
</cmp:tar>
<au:assertLogContains text="duplicate entry asf-logo.gif found, adding."
level="verbose"/>
</target>
<target name="testPreserveDuplicates" depends="setUp">
<cmp:tar destfile="${dest}" duplicate="preserve">
<cmp:arfileset src="../resources/asf-logo.gif.ar"/>
<cmp:zipfileset src="../resources/asf-logo.gif.zip"/>
</cmp:tar>
<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:tar destfile="${dest}">
<cmp:arfileset src="../resources/asf-logo.gif.ar"/>
<cmp:zipfileset src="../resources/asf-logo.gif.zip"/>
</cmp:tar>
</au:expectfailure>
</target>
<target name="testFailEmpty" depends="setUp">
<au:expectfailure
message="No sources, nothing to do.">
<cmp:tar destfile="${dest}">
<fileset dir="." includes="not-there"/>
</cmp:tar>
</au:expectfailure>
</target>
<target name="testSkipEmpty" depends="setUp">
<cmp:tar destfile="${dest}" whenEmpty="skip">
<fileset dir="." includes="not-there"/>
</cmp:tar>
<au:assertLogContains text="No sources, nothing to do."
level="warn"/>
<au:assertFileDoesntExist file="${dest}"/>
</target>
<target name="testNonFileDest" depends="setUp">
<cmp:tar>
<fileset dir="." includes="ar-test.xml"/>
<dest>
<gzipresource>
<file file="${dest}.gz"/>
</gzipresource>
</dest>
</cmp:tar>
<au:assertFileExists file="${dest}.gz"/>
<au:assertFileDoesntExist file="${dest}"/>
<gunzip src="${dest}.gz" dest="${dest}"/>
<untar 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:tar dest="${dest}">
<fileset dir="${input}"/>
</cmp:tar>
<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:tar dest="${dest}" mode="create">
<fileset dir="${input}" includes="ar-test.xml,zip-test.xml"/>
</cmp:tar>
<au:assertLogContains
text="test.tar is up-to-date, nothing to do."/>
<au:assertDestIsUptodate
src="${dest}" dest="${dest}.bak"/>
</target>
<target name="testForceCreateOfUpToDate"
depends="-prepareArchiveForModeTests">
<cmp:tar dest="${dest}" mode="force-create">
<fileset dir="${input}" includes="ar-test.xml,zip-test.xml"/>
</cmp:tar>
<au:assertLogDoesntContain
text="test.tar is up-to-date, nothing to do."/>
<au:assertDestIsOutofdate
src="${dest}" dest="${dest}.bak"/>
<assertResourceDoesntExist>
<cmp:tarentry name="tar-test.xml">
<file file="${dest}"/>
</cmp:tarentry>
</assertResourceDoesntExist>
</target>
<target name="testCreateOfOutOfDate" depends="-prepareArchiveForModeTests">
<touch file="${input}/ar-test.xml"/>
<cmp:tar dest="${dest}" mode="create">
<fileset dir="${input}" includes="ar-test.xml,zip-test.xml"/>
</cmp:tar>
<au:assertLogDoesntContain
text="test.tar is up-to-date, nothing to do."/>
<au:assertDestIsOutofdate
src="${dest}" dest="${dest}.bak"/>
<assertResourceDoesntExist>
<cmp:tarentry name="tar-test.xml">
<file file="${dest}"/>
</cmp:tarentry>
</assertResourceDoesntExist>
</target>
<target name="testReplaceOfUpToDate" depends="-prepareArchiveForModeTests">
<cmp:tar dest="${dest}" mode="replace">
<fileset dir="${input}" includes="ar-test.xml,zip-test.xml"/>
</cmp:tar>
<au:assertLogContains
text="test.tar is up-to-date, nothing to do."/>
<au:assertDestIsUptodate
src="${dest}" dest="${dest}.bak"/>
</target>
<target name="testForceReplaceOfUpToDate"
depends="-prepareArchiveForModeTests">
<cmp:tar dest="${dest}" mode="force-replace">
<fileset dir="${input}" includes="ar-test.xml,zip-test.xml"/>
</cmp:tar>
<au:assertLogDoesntContain
text="test.tar is up-to-date, nothing to do."/>
<au:assertDestIsOutofdate
src="${dest}" dest="${dest}.bak"/>
<assertResourceExists>
<cmp:tarentry name="tar-test.xml">
<file file="${dest}"/>
</cmp:tarentry>
</assertResourceExists>
<au:assertTrue>
<cond:islastmodified datetime="${timestamp}"
pattern="yyyy-MM-dd-HH:mm:ss Z">
<cmp:tarentry name="zip-test.xml">
<file file="${dest}"/>
</cmp:tarentry>
</cond:islastmodified>
</au:assertTrue>
</target>
<target name="testReplaceOfOutOfDate" depends="-prepareArchiveForModeTests">
<touch file="${input}/ar-test.xml"/>
<cmp:tar dest="${dest}" mode="replace">
<fileset dir="${input}" includes="ar-test.xml,zip-test.xml"/>
</cmp:tar>
<au:assertLogDoesntContain
text="test.tar is up-to-date, nothing to do."/>
<au:assertDestIsOutofdate
src="${dest}" dest="${dest}.bak"/>
<assertResourceExists>
<cmp:tarentry name="tar-test.xml">
<file file="${dest}"/>
</cmp:tarentry>
</assertResourceExists>
<au:assertTrue>
<cond:islastmodified datetime="${timestamp}"
pattern="yyyy-MM-dd-HH:mm:ss Z">
<cmp:tarentry name="zip-test.xml">
<file file="${dest}"/>
</cmp:tarentry>
</cond:islastmodified>
</au:assertTrue>
</target>
<target name="testUpdateOfUpToDate" depends="-prepareArchiveForModeTests">
<cmp:tar dest="${dest}" mode="update">
<fileset dir="${input}" includes="ar-test.xml,zip-test.xml"/>
</cmp:tar>
<au:assertLogContains
text="test.tar 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:tar dest="${dest}" mode="update">
<fileset dir="${input}" includes="ar-test.xml,zip-test.xml"/>
</cmp:tar>
<au:assertLogDoesntContain
text="test.tar is up-to-date, nothing to do."/>
<au:assertDestIsOutofdate
src="${dest}" dest="${dest}.bak"/>
<assertResourceExists>
<cmp:tarentry name="tar-test.xml">
<file file="${dest}"/>
</cmp:tarentry>
</assertResourceExists>
<au:assertFalse>
<cond:islastmodified datetime="${timestamp}"
pattern="yyyy-MM-dd-HH:mm:ss Z">
<cmp:tarentry name="zip-test.xml">
<file file="${dest}"/>
</cmp:tarentry>
</cond:islastmodified>
</au:assertFalse>
</target>
<target name="-longFileSetUp" depends="setUp">
<property name="long" value="0123456789/0123456789/0123456789/0123456789/0123456789/0123456789/0123456789/0123456789/0123456789/0123456789.txt"/>
<touch file="${input}/${long}"
mkdirs="true"/>
</target>
<target name="testImplicitUstarLongFile" depends="-longFileSetUp">
<au:expectfailure>
<cmp:tar destfile="${dest}">
<fileset dir="${input}"/>
</cmp:tar>
</au:expectfailure>
</target>
<target name="testExplicitUstarLongFile" depends="-longFileSetUp">
<au:expectfailure>
<cmp:tar destfile="${dest}" format="ustar">
<fileset dir="${input}"/>
</cmp:tar>
</au:expectfailure>
</target>
<target name="testOldgnuLongFile" depends="-longFileSetUp">
<cmp:tar destfile="${dest}" format="oldgnu">
<fileset dir="${input}"/>
</cmp:tar>
<assertResourceExists>
<cmp:tarentry name="${long}">
<file file="${dest}"/>
</cmp:tarentry>
</assertResourceExists>
</target>
</project>