blob: 88cf0600a624ffd68ecf29c46dca112546250f75 [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" depends="-set-zip-ts-properties">
<mkdir dir="${output}"/>
<property name="dest" location="${output}/test.zip"/>
<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="mode" default="644"/>
<sequential>
<au:assertTrue>
<cond:islastmodified datetime="@{dateTime}"
pattern="@{pattern}">
<cmp:zipentry name="asf-logo.gif">
<file file="${dest}"/>
</cmp:zipentry>
</cond:islastmodified>
</au:assertTrue>
<au:assertTrue>
<cmp:hasmode mode="@{mode}">
<cmp:zipentry name="asf-logo.gif">
<file file="${dest}"/>
</cmp:zipentry>
</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:zip destfile="${dest}">
<fileset dir="${input}" includes="asf-logo.gif"/>
</cmp:zip>
<checkProperties dateTime="2009-08-19-05:49:22 +0200"/>
</target>
<target name="testCoreZipFileSet" depends="setUp">
<cmp:zip destfile="${dest}">
<zipfileset src="../resources/asf-logo.gif.zip"
includes="asf-logo.gif"/>
</cmp:zip>
<checkProperties dateTime="${zip-ts-value}"
pattern="${zip-ts-pattern}"
mode="644"/>
</target>
<target name="testAntlibZipFileSet" depends="setUp">
<cmp:zip destfile="${dest}">
<cmp:zipfileset src="../resources/asf-logo.gif.zip"
includes="asf-logo.gif"/>
</cmp:zip>
<checkProperties dateTime="${zip-ts-value}"
pattern="${zip-ts-pattern}"
mode="644"/>
</target>
<target name="testCoreTarFileSet" depends="setUp">
<cmp:zip destfile="${dest}">
<tarfileset src="../resources/asf-logo.gif.tar"
includes="asf-logo.gif"/>
</cmp:zip>
<checkProperties dateTime="2001-11-19-15:34:20 +0100" mode="644"
/>
</target>
<target name="testAntlibTarFileSet" depends="setUp">
<cmp:zip destfile="${dest}">
<cmp:tarfileset src="../resources/asf-logo.gif.tar"
includes="asf-logo.gif"/>
</cmp:zip>
<checkProperties dateTime="2001-11-19-15:34:20 +0100" mode="644"
/>
</target>
<target name="testArFileSet" depends="setUp">
<cmp:zip destfile="${dest}">
<cmp:arfileset src="../resources/asf-logo.gif.ar"
includes="asf-logo.gif"/>
</cmp:zip>
<checkProperties dateTime="2009-07-31-20:11:14 +0200" mode="644"
/>
</target>
<target name="testCpioFileSet" depends="setUp">
<cmp:zip destfile="${dest}">
<cmp:cpiofileset src="../resources/asf-logo.gif.bin.cpio"
includes="asf-logo.gif"/>
</cmp:zip>
<checkProperties dateTime="2009-07-31-20:11:14 +0200" mode="644"
/>
</target>
<target name="testNoDirectoriesByDefault" depends="setUp">
<cmp:zip destfile="${dest}">
<fileset dir="${input}"/>
<dirset dir="${input}"/>
</cmp:zip>
<assertResourceExists>
<cmp:zipentry name="subdir/asf-logo.gif">
<file file="${dest}"/>
</cmp:zipentry>
</assertResourceExists>
<assertResourceDoesntExist>
<cmp:zipentry name="subdir/">
<file file="${dest}"/>
</cmp:zipentry>
</assertResourceDoesntExist>
</target>
<target name="testWithDirectories" depends="setUp">
<cmp:zip destfile="${dest}" filesonly="false">
<dirset dir="${input}" excludes="."/>
</cmp:zip>
<assertResourceExists>
<cmp:zipentry name="subdir/">
<file file="${dest}"/>
</cmp:zipentry>
</assertResourceExists>
<au:assertTrue>
<cmp:hasmode mode="755">
<cmp:zipentry name="subdir/">
<file file="${dest}"/>
</cmp:zipentry>
</cmp:hasmode>
</au:assertTrue>
<assertResourceDoesntExist>
<cmp:zipentry name="subdir/asf-logo.gif">
<file file="${dest}"/>
</cmp:zipentry>
</assertResourceDoesntExist>
</target>
<target name="testWithImplicitDirectories" depends="setUp">
<cmp:zip destfile="${dest}" filesonly="false">
<fileset dir="${input}"/>
</cmp:zip>
<assertResourceExists>
<cmp:zipentry name="subdir/">
<file file="${dest}"/>
</cmp:zipentry>
</assertResourceExists>
<au:assertTrue>
<cmp:hasmode mode="755">
<cmp:zipentry name="subdir/">
<file file="${dest}"/>
</cmp:zipentry>
</cmp:hasmode>
</au:assertTrue>
<assertResourceExists>
<cmp:zipentry name="subdir/asf-logo.gif">
<file file="${dest}"/>
</cmp:zipentry>
</assertResourceExists>
</target>
<target name="testImplicitDirectoriesUsePermissions" depends="setUp">
<cmp:zip destfile="${dest}" filesonly="false">
<zipfileset dir="${input}" dirmode="750"/>
</cmp:zip>
<au:assertTrue>
<cmp:hasmode mode="750">
<cmp:zipentry name="subdir/">
<file file="${dest}"/>
</cmp:zipentry>
</cmp:hasmode>
</au:assertTrue>
</target>
<target name="testFileSetPermissionsWin" depends="setUp">
<cmp:zip destfile="${dest}">
<cmp:arfileset src="../resources/asf-logo.gif.ar"
filemode="600"
includes="asf-logo.gif"/>
</cmp:zip>
<checkProperties dateTime="2009-07-31-20:11:14 +0200" mode="600"/>
</target>
<target name="testFullpath" depends="setUp">
<cmp:zip destfile="${dest}">
<cmp:arfileset src="../resources/asf-logo.gif.ar"
fullpath="logo.gif"
includes="asf-logo.gif"/>
</cmp:zip>
<assertResourceExists>
<cmp:zipentry name="logo.gif">
<file file="${dest}"/>
</cmp:zipentry>
</assertResourceExists>
<assertResourceDoesntExist>
<cmp:zipentry name="asf-logo.gif">
<file file="${dest}"/>
</cmp:zipentry>
</assertResourceDoesntExist>
</target>
<target name="testPrefixWithSlash" depends="setUp">
<cmp:zip destfile="${dest}">
<cmp:arfileset src="../resources/asf-logo.gif.ar"
prefix="x/"
includes="asf-logo.gif"/>
</cmp:zip>
<assertResourceExists>
<cmp:zipentry name="x/asf-logo.gif">
<file file="${dest}"/>
</cmp:zipentry>
</assertResourceExists>
<assertResourceDoesntExist>
<cmp:zipentry name="asf-logo.gif">
<file file="${dest}"/>
</cmp:zipentry>
</assertResourceDoesntExist>
</target>
<target name="testPrefixWithBackslash" depends="setUp">
<cmp:zip destfile="${dest}">
<cmp:arfileset src="../resources/asf-logo.gif.ar"
prefix="x\"
includes="asf-logo.gif"/>
</cmp:zip>
<assertResourceExists>
<cmp:zipentry name="x/asf-logo.gif">
<file file="${dest}"/>
</cmp:zipentry>
</assertResourceExists>
<assertResourceDoesntExist>
<cmp:zipentry name="asf-logo.gif">
<file file="${dest}"/>
</cmp:zipentry>
</assertResourceDoesntExist>
</target>
<target name="testPrefixWithoutSlash" depends="setUp">
<cmp:zip destfile="${dest}">
<cmp:arfileset src="../resources/asf-logo.gif.ar"
prefix="x"
includes="asf-logo.gif"/>
</cmp:zip>
<assertResourceExists>
<cmp:zipentry name="x/asf-logo.gif">
<file file="${dest}"/>
</cmp:zipentry>
</assertResourceExists>
<assertResourceDoesntExist>
<cmp:zipentry name="asf-logo.gif">
<file file="${dest}"/>
</cmp:zipentry>
</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>
<au:assertTrue>
<cmp:hasmode mode="0">
<cmp:arentry name="asf-logo.gif">
<file file="${src}"/>
</cmp:arentry>
</cmp:hasmode>
</au:assertTrue>
</target>
<target name="test0PermissionsGetReplaced"
depends="-setUp0Permissions">
<cmp:zip destfile="${dest}">
<cmp:arfileset src="${src}"
includes="asf-logo.gif"/>
</cmp:zip>
<checkProperties dateTime="2009-07-31-20:11:14 +0200" mode="644"/>
</target>
<target name="testPreserve0Permissions"
depends="-setUp0Permissions">
<cmp:zip destfile="${dest}" preserve0permissions="true">
<cmp:arfileset src="${src}"
includes="asf-logo.gif"/>
</cmp:zip>
<checkProperties dateTime="2009-07-31-20:11:14 +0200" mode="0"/>
</target>
<target name="testRoundDown" depends="setUp">
<cmp:zip destfile="${dest}" roundup="false">
<cmp:arfileset src="../resources/asf-logo.gif.ar"
includes="asf-logo.gif"/>
</cmp:zip>
<checkProperties dateTime="2009-07-31-20:11:12 +0200" mode="644"
/>
</target>
<target name="testRemoveLeadingSlashes" depends="setUp">
<cmp:zip destfile="${dest}">
<cmp:arfileset src="../resources/asf-logo.gif.ar"
fullpath="/logo.gif"
includes="asf-logo.gif"/>
</cmp:zip>
<assertResourceExists>
<cmp:zipentry name="logo.gif">
<file file="${dest}"/>
</cmp:zipentry>
</assertResourceExists>
<assertResourceDoesntExist>
<cmp:zipentry name="/logo.gif">
<file file="${dest}"/>
</cmp:zipentry>
</assertResourceDoesntExist>
</target>
<target name="testPreserveLeadingSlashes" depends="setUp">
<cmp:zip destfile="${dest}" preserveleadingslashes="true">
<cmp:arfileset src="../resources/asf-logo.gif.ar"
fullpath="/logo.gif"
includes="asf-logo.gif"/>
</cmp:zip>
<assertResourceExists>
<cmp:zipentry name="/logo.gif">
<file file="${dest}"/>
</cmp:zipentry>
</assertResourceExists>
<assertResourceDoesntExist>
<cmp:zipentry name="logo.gif">
<file file="${dest}"/>
</cmp:zipentry>
</assertResourceDoesntExist>
</target>
<target name="testLevel" depends="setUp">
<cmp:zip destfile="${output}/compressed.zip">
<file file="${ant.file}"/>
</cmp:zip>
<cmp:zip destfile="${output}/uncompressed.zip" level="0">
<file file="${ant.file}"/>
</cmp:zip>
<au:assertTrue>
<resourcecount count="2">
<fileset dir="${output}"/>
</resourcecount>
</au:assertTrue>
<au:assertTrue>
<resourcecount count="1">
<fileset dir="${output}">
<size value="5" units="Ki" when="less"/>
</fileset>
</resourcecount>
</au:assertTrue>
</target>
<target name="testComment" depends="setUp">
<cmp:zip destfile="${output}/test.zip" comment="This is a comment">
<file file="${ant.file}"/>
</cmp:zip>
<!-- not sure how to test this without a new condition, checked
with command line zip -->
</target>
<target name="testAddDuplicates" depends="setUp">
<cmp:zip destfile="${dest}" duplicate="add">
<cmp:arfileset src="../resources/asf-logo.gif.ar"/>
<cmp:zipfileset src="../resources/asf-logo.gif.zip"/>
</cmp:zip>
<au:assertLogContains text="duplicate entry asf-logo.gif found, adding."
level="verbose"/>
</target>
<target name="testPreserveDuplicates" depends="setUp">
<cmp:zip destfile="${dest}" duplicate="preserve">
<cmp:arfileset src="../resources/asf-logo.gif.ar"/>
<cmp:zipfileset src="../resources/asf-logo.gif.zip"/>
</cmp:zip>
<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:zip destfile="${dest}">
<cmp:arfileset src="../resources/asf-logo.gif.ar"/>
<cmp:zipfileset src="../resources/asf-logo.gif.zip"/>
</cmp:zip>
</au:expectfailure>
</target>
<target name="testFailEmpty" depends="setUp">
<au:expectfailure
message="No sources, nothing to do.">
<cmp:zip destfile="${dest}">
<fileset dir="." includes="not-there"/>
</cmp:zip>
</au:expectfailure>
</target>
<target name="testSkipEmpty" depends="setUp">
<cmp:zip destfile="${dest}" whenEmpty="skip">
<fileset dir="." includes="not-there"/>
</cmp:zip>
<au:assertLogContains text="No sources, nothing to do."
level="warn"/>
<au:assertFileDoesntExist file="${dest}"/>
</target>
<target name="testNonFileDest" depends="setUp">
<cmp:zip>
<fileset dir="." includes="ar-test.xml"/>
<dest>
<gzipresource>
<file file="${dest}.gz"/>
</gzipresource>
</dest>
</cmp:zip>
<au:assertFileExists file="${dest}.gz"/>
<au:assertFileDoesntExist file="${dest}"/>
<gunzip src="${dest}.gz" dest="${dest}"/>
<unzip 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:zip dest="${dest}">
<fileset dir="${input}"/>
</cmp:zip>
<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:zip dest="${dest}" mode="create">
<fileset dir="${input}" includes="ar-test.xml,zip-test.xml"/>
</cmp:zip>
<au:assertLogContains
text="test.zip is up-to-date, nothing to do."/>
<au:assertDestIsUptodate
src="${dest}" dest="${dest}.bak"/>
</target>
<target name="testForceCreateOfUpToDate"
depends="-prepareArchiveForModeTests">
<cmp:zip dest="${dest}" mode="force-create">
<fileset dir="${input}" includes="ar-test.xml,zip-test.xml"/>
</cmp:zip>
<au:assertLogDoesntContain
text="test.zip is up-to-date, nothing to do."/>
<au:assertDestIsOutofdate
src="${dest}" dest="${dest}.bak"/>
<assertResourceDoesntExist>
<cmp:zipentry name="tar-test.xml">
<file file="${dest}"/>
</cmp:zipentry>
</assertResourceDoesntExist>
</target>
<target name="testCreateOfOutOfDate" depends="-prepareArchiveForModeTests">
<touch file="${input}/ar-test.xml"/>
<cmp:zip dest="${dest}" mode="create">
<fileset dir="${input}" includes="ar-test.xml,zip-test.xml"/>
</cmp:zip>
<au:assertLogDoesntContain
text="test.zip is up-to-date, nothing to do."/>
<au:assertDestIsOutofdate
src="${dest}" dest="${dest}.bak"/>
<assertResourceDoesntExist>
<cmp:zipentry name="tar-test.xml">
<file file="${dest}"/>
</cmp:zipentry>
</assertResourceDoesntExist>
</target>
<target name="testReplaceOfUpToDate" depends="-prepareArchiveForModeTests">
<cmp:zip dest="${dest}" mode="replace">
<fileset dir="${input}" includes="ar-test.xml,zip-test.xml"/>
</cmp:zip>
<au:assertLogContains
text="test.zip is up-to-date, nothing to do."/>
<au:assertDestIsUptodate
src="${dest}" dest="${dest}.bak"/>
</target>
<target name="testForceReplaceOfUpToDate"
depends="-prepareArchiveForModeTests">
<cmp:zip dest="${dest}" mode="force-replace">
<fileset dir="${input}" includes="ar-test.xml,zip-test.xml"/>
</cmp:zip>
<au:assertLogDoesntContain
text="test.zip is up-to-date, nothing to do."/>
<au:assertDestIsOutofdate
src="${dest}" dest="${dest}.bak"/>
<assertResourceExists>
<cmp:zipentry name="tar-test.xml">
<file file="${dest}"/>
</cmp:zipentry>
</assertResourceExists>
<au:assertTrue>
<cond:islastmodified datetime="${timestamp}"
pattern="yyyy-MM-dd-HH:mm:ss Z">
<cmp:zipentry name="zip-test.xml">
<file file="${dest}"/>
</cmp:zipentry>
</cond:islastmodified>
</au:assertTrue>
</target>
<target name="testReplaceOfOutOfDate" depends="-prepareArchiveForModeTests">
<touch file="${input}/ar-test.xml"/>
<cmp:zip dest="${dest}" mode="replace">
<fileset dir="${input}" includes="ar-test.xml,zip-test.xml"/>
</cmp:zip>
<au:assertLogDoesntContain
text="test.zip is up-to-date, nothing to do."/>
<au:assertDestIsOutofdate
src="${dest}" dest="${dest}.bak"/>
<assertResourceExists>
<cmp:zipentry name="tar-test.xml">
<file file="${dest}"/>
</cmp:zipentry>
</assertResourceExists>
<au:assertTrue>
<cond:islastmodified datetime="${timestamp}"
pattern="yyyy-MM-dd-HH:mm:ss Z">
<cmp:zipentry name="zip-test.xml">
<file file="${dest}"/>
</cmp:zipentry>
</cond:islastmodified>
</au:assertTrue>
</target>
<target name="testUpdateOfUpToDate" depends="-prepareArchiveForModeTests">
<cmp:zip dest="${dest}" mode="update">
<fileset dir="${input}" includes="ar-test.xml,zip-test.xml"/>
</cmp:zip>
<au:assertLogContains
text="test.zip 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:zip dest="${dest}" mode="update">
<fileset dir="${input}" includes="ar-test.xml,zip-test.xml"/>
</cmp:zip>
<au:assertLogDoesntContain
text="test.zip is up-to-date, nothing to do."/>
<au:assertDestIsOutofdate
src="${dest}" dest="${dest}.bak"/>
<assertResourceExists>
<cmp:zipentry name="tar-test.xml">
<file file="${dest}"/>
</cmp:zipentry>
</assertResourceExists>
<au:assertFalse>
<cond:islastmodified datetime="${timestamp}"
pattern="yyyy-MM-dd-HH:mm:ss Z">
<cmp:zipentry name="zip-test.xml">
<file file="${dest}"/>
</cmp:zipentry>
</cond:islastmodified>
</au:assertFalse>
</target>
<target name="testBigArchiveWithZip64" depends="setUp">
<cmp:zip dest="${dest}" zip64mode="always">
<cmp:devzero size="5000000000" name="big"/>
</cmp:zip>
<assertResourceExists>
<cmp:zipentry name="big">
<file file="${dest}"/>
</cmp:zipentry>
</assertResourceExists>
</target>
<target name="testBigArchiveWithoutZip64" depends="setUp">
<au:expectfailure>
<cmp:zip dest="${dest}" zip64mode="never">
<cmp:devzero size="5000000000" name="big"/>
</cmp:zip>
</au:expectfailure>
</target>
</project>