blob: fde4f32b5a7fdccacf6169e7599383b2057c2c5f [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}"/>
<mkdir dir="${input}/subdir"/>
<copy todir="${input}/subdir" file="../resources/asf-logo.gif"/>
<property name="dest" location="${output}/test.cpio"/>
<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:cpioentry name="asf-logo.gif">
<file file="${dest}"/>
</cmp:cpioentry>
</cond:islastmodified>
</au:assertTrue>
<au:assertTrue>
<cmp:hasuserid id="@{uid}">
<cmp:cpioentry name="asf-logo.gif">
<file file="${dest}"/>
</cmp:cpioentry>
</cmp:hasuserid>
</au:assertTrue>
<au:assertTrue>
<cmp:hasgroupid id="@{gid}">
<cmp:cpioentry name="asf-logo.gif">
<file file="${dest}"/>
</cmp:cpioentry>
</cmp:hasgroupid>
</au:assertTrue>
<au:assertTrue>
<cmp:hasmode mode="@{mode}">
<cmp:cpioentry name="asf-logo.gif">
<file file="${dest}"/>
</cmp:cpioentry>
</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:cpio destfile="${dest}">
<fileset dir="${input}" includes="asf-logo.gif"/>
</cmp:cpio>
<checkProperties dateTime="2009-08-19-05:49:21 +0200"/>
</target>
<target name="testCoreZipFileSet" depends="setUp">
<cmp:cpio destfile="${dest}">
<zipfileset src="../resources/asf-logo.gif.zip"
includes="asf-logo.gif"/>
</cmp:cpio>
<checkProperties dateTime="2001-11-19-15:34:20"
pattern="yyyy-MM-dd-HH:mm:ss"
mode="644"/>
</target>
<target name="testAntlibZipFileSet" depends="setUp">
<cmp:cpio destfile="${dest}">
<cmp:zipfileset src="../resources/asf-logo.gif.zip"
includes="asf-logo.gif"/>
</cmp:cpio>
<checkProperties dateTime="2001-11-19-15:34:20"
pattern="yyyy-MM-dd-HH:mm:ss"
mode="644"/>
</target>
<target name="testCoreTarFileSet" depends="setUp">
<cmp:cpio destfile="${dest}">
<tarfileset src="../resources/asf-logo.gif.tar"
includes="asf-logo.gif"/>
</cmp:cpio>
<checkProperties dateTime="2001-11-19-15:34:20 +0100" mode="644"
uid="500" gid="500"/>
</target>
<target name="testAntlibTarFileSet" depends="setUp">
<cmp:cpio destfile="${dest}">
<cmp:tarfileset src="../resources/asf-logo.gif.tar"
includes="asf-logo.gif"/>
</cmp:cpio>
<checkProperties dateTime="2001-11-19-15:34:20 +0100" mode="644"
uid="500" gid="500"/>
</target>
<target name="testArFileSet" depends="setUp">
<cmp:cpio destfile="${dest}">
<cmp:arfileset src="../resources/asf-logo.gif.ar"
includes="asf-logo.gif"/>
</cmp:cpio>
<checkProperties dateTime="2009-07-31-20:11:13 +0200" mode="644"
uid="1000" gid="1000"/>
</target>
<target name="testCpioFileSet" depends="setUp">
<cmp:cpio destfile="${dest}">
<cmp:cpiofileset src="../resources/asf-logo.gif.bin.cpio"
includes="asf-logo.gif"/>
</cmp:cpio>
<checkProperties dateTime="2009-07-31-20:11:13 +0200" mode="644"
uid="1000" gid="1000"/>
</target>
<target name="testNoDirectoriesByDefault" depends="setUp">
<cmp:cpio destfile="${dest}">
<fileset dir="${input}"/>
<dirset dir="${input}"/>
</cmp:cpio>
<assertResourceExists>
<cmp:cpioentry name="subdir/asf-logo.gif">
<file file="${dest}"/>
</cmp:cpioentry>
</assertResourceExists>
<assertResourceDoesntExist>
<cmp:cpioentry name="subdir/">
<file file="${dest}"/>
</cmp:cpioentry>
</assertResourceDoesntExist>
</target>
<target name="testWithDirectories" depends="setUp">
<cmp:cpio destfile="${dest}" filesonly="false">
<dirset dir="${input}" excludes="."/>
</cmp:cpio>
<assertResourceExists>
<cmp:cpioentry name="subdir/">
<file file="${dest}"/>
</cmp:cpioentry>
</assertResourceExists>
<au:assertTrue>
<cmp:hasmode mode="755">
<cmp:cpioentry name="subdir/">
<file file="${dest}"/>
</cmp:cpioentry>
</cmp:hasmode>
</au:assertTrue>
<assertResourceDoesntExist>
<cmp:cpioentry name="subdir/asf-logo.gif">
<file file="${dest}"/>
</cmp:cpioentry>
</assertResourceDoesntExist>
</target>
<target name="testWithImplicitDirectories" depends="setUp">
<cmp:cpio destfile="${dest}" filesonly="false">
<fileset dir="${input}"/>
</cmp:cpio>
<assertResourceExists>
<cmp:cpioentry name="subdir/">
<file file="${dest}"/>
</cmp:cpioentry>
</assertResourceExists>
<au:assertTrue>
<cmp:hasmode mode="755">
<cmp:cpioentry name="subdir/">
<file file="${dest}"/>
</cmp:cpioentry>
</cmp:hasmode>
</au:assertTrue>
<assertResourceExists>
<cmp:cpioentry name="subdir/asf-logo.gif">
<file file="${dest}"/>
</cmp:cpioentry>
</assertResourceExists>
</target>
<target name="testImplicitDirectoriesUsePermissions" depends="setUp">
<cmp:cpio destfile="${dest}" filesonly="false">
<zipfileset dir="${input}" dirmode="750"/>
</cmp:cpio>
<au:assertTrue>
<cmp:hasmode mode="750">
<cmp:cpioentry name="subdir/">
<file file="${dest}"/>
</cmp:cpioentry>
</cmp:hasmode>
</au:assertTrue>
</target>
<target name="testFileSetPermissionsWin" depends="setUp">
<cmp:cpio destfile="${dest}">
<cmp:arfileset src="../resources/asf-logo.gif.ar"
filemode="600"
includes="asf-logo.gif"/>
</cmp:cpio>
<checkProperties dateTime="2009-07-31-20:11:13 +0200" mode="600"
uid="1000" gid="1000"/>
</target>
<target name="testFullpath" depends="setUp">
<cmp:cpio destfile="${dest}">
<cmp:arfileset src="../resources/asf-logo.gif.ar"
fullpath="logo.gif"
includes="asf-logo.gif"/>
</cmp:cpio>
<assertResourceExists>
<cmp:cpioentry name="logo.gif">
<file file="${dest}"/>
</cmp:cpioentry>
</assertResourceExists>
<assertResourceDoesntExist>
<cmp:cpioentry name="asf-logo.gif">
<file file="${dest}"/>
</cmp:cpioentry>
</assertResourceDoesntExist>
</target>
<target name="testPrefixWithSlash" depends="setUp">
<cmp:cpio destfile="${dest}">
<cmp:arfileset src="../resources/asf-logo.gif.ar"
prefix="x/"
includes="asf-logo.gif"/>
</cmp:cpio>
<assertResourceExists>
<cmp:cpioentry name="x/asf-logo.gif">
<file file="${dest}"/>
</cmp:cpioentry>
</assertResourceExists>
<assertResourceDoesntExist>
<cmp:cpioentry name="asf-logo.gif">
<file file="${dest}"/>
</cmp:cpioentry>
</assertResourceDoesntExist>
</target>
<target name="testPrefixWithBackslash" depends="setUp">
<cmp:cpio destfile="${dest}">
<cmp:arfileset src="../resources/asf-logo.gif.ar"
prefix="x\"
includes="asf-logo.gif"/>
</cmp:cpio>
<assertResourceExists>
<cmp:cpioentry name="x/asf-logo.gif">
<file file="${dest}"/>
</cmp:cpioentry>
</assertResourceExists>
<assertResourceDoesntExist>
<cmp:cpioentry name="asf-logo.gif">
<file file="${dest}"/>
</cmp:cpioentry>
</assertResourceDoesntExist>
</target>
<target name="testPrefixWithoutSlash" depends="setUp">
<cmp:cpio destfile="${dest}">
<cmp:arfileset src="../resources/asf-logo.gif.ar"
prefix="x"
includes="asf-logo.gif"/>
</cmp:cpio>
<assertResourceExists>
<cmp:cpioentry name="x/asf-logo.gif">
<file file="${dest}"/>
</cmp:cpioentry>
</assertResourceExists>
<assertResourceDoesntExist>
<cmp:cpioentry name="asf-logo.gif">
<file file="${dest}"/>
</cmp:cpioentry>
</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:cpio destfile="${dest}">
<cmp:arfileset src="${src}"
includes="asf-logo.gif"/>
</cmp:cpio>
<checkProperties dateTime="2009-07-31-20:11:13 +0200" mode="644"
uid="1000" gid="1000"/>
</target>
<target name="testPreserve0Permissions"
depends="-setUp0Permissions">
<cmp:cpio destfile="${dest}" preserve0permissions="true">
<cmp:arfileset src="${src}"
includes="asf-logo.gif"/>
</cmp:cpio>
<checkProperties dateTime="2009-07-31-20:11:13 +0200" mode="0"
uid="1000" gid="1000"/>
</target>
<target name="testRemoveLeadingSlashes" depends="setUp">
<cmp:cpio destfile="${dest}">
<cmp:arfileset src="../resources/asf-logo.gif.ar"
fullpath="/logo.gif"
includes="asf-logo.gif"/>
</cmp:cpio>
<assertResourceExists>
<cmp:cpioentry name="logo.gif">
<file file="${dest}"/>
</cmp:cpioentry>
</assertResourceExists>
<assertResourceDoesntExist>
<cmp:cpioentry name="/logo.gif">
<file file="${dest}"/>
</cmp:cpioentry>
</assertResourceDoesntExist>
</target>
<target name="testPreserveLeadingSlashes" depends="setUp">
<cmp:cpio destfile="${dest}" preserveleadingslashes="true">
<cmp:arfileset src="../resources/asf-logo.gif.ar"
fullpath="/logo.gif"
includes="asf-logo.gif"/>
</cmp:cpio>
<assertResourceExists>
<cmp:cpioentry name="/logo.gif">
<file file="${dest}"/>
</cmp:cpioentry>
</assertResourceExists>
<assertResourceDoesntExist>
<cmp:cpioentry name="logo.gif">
<file file="${dest}"/>
</cmp:cpioentry>
</assertResourceDoesntExist>
</target>
<!-- ACC 1.0 CPIO prevents duplicate entries -->
<target name="fail-testAddDuplicates" depends="setUp">
<cmp:cpio destfile="${dest}" duplicate="add">
<cmp:arfileset src="../resources/asf-logo.gif.ar"/>
<cmp:zipfileset src="../resources/asf-logo.gif.zip"/>
</cmp:cpio>
<au:assertLogContains text="duplicate entry asf-logo.gif found, adding."
level="verbose"/>
</target>
<target name="testPreserveDuplicates" depends="setUp">
<cmp:cpio destfile="${dest}" duplicate="preserve">
<cmp:arfileset src="../resources/asf-logo.gif.ar"/>
<cmp:zipfileset src="../resources/asf-logo.gif.zip"/>
</cmp:cpio>
<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:cpio destfile="${dest}">
<cmp:arfileset src="../resources/asf-logo.gif.ar"/>
<cmp:zipfileset src="../resources/asf-logo.gif.zip"/>
</cmp:cpio>
</au:expectfailure>
</target>
<target name="testFailEmpty" depends="setUp">
<au:expectfailure
message="No sources, nothing to do.">
<cmp:cpio destfile="${dest}">
<fileset dir="." includes="not-there"/>
</cmp:cpio>
</au:expectfailure>
</target>
<target name="testSkipEmpty" depends="setUp">
<cmp:cpio destfile="${dest}" whenEmpty="skip">
<fileset dir="." includes="not-there"/>
</cmp:cpio>
<au:assertLogContains text="No sources, nothing to do."
level="warn"/>
<au:assertFileDoesntExist file="${dest}"/>
</target>
<target name="testNonFileDest" depends="setUp">
<cmp:cpio>
<fileset dir="." includes="ar-test.xml"/>
<dest>
<gzipresource>
<file file="${dest}.gz"/>
</gzipresource>
</dest>
</cmp:cpio>
<au:assertFileExists file="${dest}.gz"/>
<au:assertFileDoesntExist file="${dest}"/>
<gunzip src="${dest}.gz" dest="${dest}"/>
<cmp:uncpio 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:cpio dest="${dest}">
<fileset dir="${input}"/>
</cmp:cpio>
<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:cpio dest="${dest}" mode="create">
<fileset dir="${input}" includes="ar-test.xml,zip-test.xml"/>
</cmp:cpio>
<au:assertLogContains
text="test.cpio is up-to-date, nothing to do."/>
<au:assertDestIsUptodate
src="${dest}" dest="${dest}.bak"/>
</target>
<target name="testForceCreateOfUpToDate"
depends="-prepareArchiveForModeTests">
<cmp:cpio dest="${dest}" mode="force-create">
<fileset dir="${input}" includes="ar-test.xml,zip-test.xml"/>
</cmp:cpio>
<au:assertLogDoesntContain
text="test.cpio is up-to-date, nothing to do."/>
<au:assertDestIsOutofdate
src="${dest}" dest="${dest}.bak"/>
<assertResourceDoesntExist>
<cmp:cpioentry name="tar-test.xml">
<file file="${dest}"/>
</cmp:cpioentry>
</assertResourceDoesntExist>
</target>
<target name="testCreateOfOutOfDate" depends="-prepareArchiveForModeTests">
<touch file="${input}/ar-test.xml"/>
<cmp:cpio dest="${dest}" mode="create">
<fileset dir="${input}" includes="ar-test.xml,zip-test.xml"/>
</cmp:cpio>
<au:assertLogDoesntContain
text="test.cpio is up-to-date, nothing to do."/>
<au:assertDestIsOutofdate
src="${dest}" dest="${dest}.bak"/>
<assertResourceDoesntExist>
<cmp:cpioentry name="tar-test.xml">
<file file="${dest}"/>
</cmp:cpioentry>
</assertResourceDoesntExist>
</target>
<target name="testReplaceOfUpToDate" depends="-prepareArchiveForModeTests">
<cmp:cpio dest="${dest}" mode="replace">
<fileset dir="${input}" includes="ar-test.xml,zip-test.xml"/>
</cmp:cpio>
<au:assertLogContains
text="test.cpio is up-to-date, nothing to do."/>
<au:assertDestIsUptodate
src="${dest}" dest="${dest}.bak"/>
</target>
<target name="testForceReplaceOfUpToDate"
depends="-prepareArchiveForModeTests">
<cmp:cpio dest="${dest}" mode="force-replace">
<fileset dir="${input}" includes="ar-test.xml,zip-test.xml"/>
</cmp:cpio>
<au:assertLogDoesntContain
text="test.cpio is up-to-date, nothing to do."/>
<au:assertDestIsOutofdate
src="${dest}" dest="${dest}.bak"/>
<assertResourceExists>
<cmp:cpioentry name="tar-test.xml">
<file file="${dest}"/>
</cmp:cpioentry>
</assertResourceExists>
<au:assertTrue>
<cond:islastmodified datetime="${timestamp}"
pattern="yyyy-MM-dd-HH:mm:ss Z">
<cmp:cpioentry name="zip-test.xml">
<file file="${dest}"/>
</cmp:cpioentry>
</cond:islastmodified>
</au:assertTrue>
</target>
<target name="testReplaceOfOutOfDate" depends="-prepareArchiveForModeTests">
<touch file="${input}/ar-test.xml"/>
<cmp:cpio dest="${dest}" mode="replace">
<fileset dir="${input}" includes="ar-test.xml,zip-test.xml"/>
</cmp:cpio>
<au:assertLogDoesntContain
text="test.cpio is up-to-date, nothing to do."/>
<au:assertDestIsOutofdate
src="${dest}" dest="${dest}.bak"/>
<assertResourceExists>
<cmp:cpioentry name="tar-test.xml">
<file file="${dest}"/>
</cmp:cpioentry>
</assertResourceExists>
<au:assertTrue>
<cond:islastmodified datetime="${timestamp}"
pattern="yyyy-MM-dd-HH:mm:ss Z">
<cmp:cpioentry name="zip-test.xml">
<file file="${dest}"/>
</cmp:cpioentry>
</cond:islastmodified>
</au:assertTrue>
</target>
<target name="testUpdateOfUpToDate" depends="-prepareArchiveForModeTests">
<cmp:cpio dest="${dest}" mode="update">
<fileset dir="${input}" includes="ar-test.xml,zip-test.xml"/>
</cmp:cpio>
<au:assertLogContains
text="test.cpio 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:cpio dest="${dest}" mode="update">
<fileset dir="${input}" includes="ar-test.xml,zip-test.xml"/>
</cmp:cpio>
<au:assertLogDoesntContain
text="test.cpio is up-to-date, nothing to do."/>
<au:assertDestIsOutofdate
src="${dest}" dest="${dest}.bak"/>
<assertResourceExists>
<cmp:cpioentry name="tar-test.xml">
<file file="${dest}"/>
</cmp:cpioentry>
</assertResourceExists>
<au:assertFalse>
<cond:islastmodified datetime="${timestamp}"
pattern="yyyy-MM-dd-HH:mm:ss Z">
<cmp:cpioentry name="zip-test.xml">
<file file="${dest}"/>
</cmp:cpioentry>
</cond:islastmodified>
</au:assertFalse>
</target>
</project>