<?xml version="1.0"?>

<project name="zip-test" basedir="." default="test1">

  <target name="test1">
    <zip/>
  </target>

  <target name="test2">
    <zip destFile="zip.tmp"/>
  </target>

  <!-- Test when the zip file includes itself
  when target file exists before the zip task is run -->
  <target name="test3">
    <touch file="test3.zip"/>
    <zip destFile="test3.zip"
         basedir="."/>
  </target>

  <!-- Test when the zip file includes itself
  when target file does not exist before the zip task is run
  <target name="test4">
     <zip destFile="test4.zip"
         basedir="."/>
  </target>
  -->

  <target name="test5">
    <zip zipfile="test5.zip" basedir="." >
      <exclude name="test5.zip" />
    </zip>
  </target>

  <target name="test6">
    <zip destFile="test6.zip" basedir=".">
      <include name="*.xml" />
      <exclude name="zip.*" />
    </zip>
  </target>

  <target name="test7">
    <zip destFile="inner7.zip" basedir="." >
      <exclude name="inner7.zip" />
    </zip>
    <zip destFile="test7.zip" basedir=".">
      <exclude name="**/*.*" />
      <zipfileset src="inner7.zip" />
    </zip>
  </target>

  <target name="feather">
    <zip destFile="asf-logo.gif.zip"
         basedir=".."
         includes="asf-logo.gif" />
  </target>

  <target name="uncompressed-feather">
    <zip destFile="asf-logo.gif.zip"
         basedir=".."
         includes="asf-logo.gif" compress="false"/>
  </target>

  <!-- legacy attribute support -->
  <target name="test8">
    <zip zipfile="test8.zip" basedir="." >
      <exclude name="test8.zip" />
    </zip>
  </target>

  <target name="testZipgroupfileset">

    <zip zipfile="zipgroupfileset.zip" basedir=".">
      <zipgroupfileset dir="zip" 
        includes="zipgroupfileset*.zip" 
        excludes="zipgroupfileset3.zip" />
      <include name="zip/zipgroupfileset3.zip" />
    </zip>
  </target>

  <target name="testDuplicateFail">

    <zip zipfile="duplicateFail.zip" basedir="." duplicate="fail">
      <zipgroupfileset dir="duplicate" includes="duplicate*.zip" />
    </zip>
  </target>

  <target name="testUpdateNotNecessary" depends="feather">
    <zip destFile="asf-logo.gif.zip"
         basedir=".."
         includes="asf-logo.gif"
         update="true" />
  </target>

  <target name="testUpdateIsNecessary" depends="feather">
    <sleep seconds="5" />
    <touch file="../dummyfile" />
    <zip destFile="asf-logo.gif.zip"
         basedir=".."
         includes="asf-logo.gif,dummyfile"
         update="true" />
  </target>

  <!-- Bugzilla Report 18403 -->
  <target name="testPrefixAddsDir">
    <zip destfile="test3.zip" filesonly="false">
      <zipfileset dir="." prefix="test" includes="zip.xml"/>
    </zip>
  </target>

  <!-- Bugzilla Report 19449 -->
  <target name="testFilesOnlyDoesntCauseRecreateSetup">
    <mkdir dir="ziptest"/>
    <touch file="ziptest/ziptest"/>
    <zip destfile="test3.zip" basedir="."
         includes="ziptest/**" filesonly="true"/>
  </target>

  <!-- Bugzilla Report 19449 -->
  <target name="testFilesOnlyDoesntCauseRecreate">
    <zip destfile="test3.zip" basedir="."
         includes="ziptest/**" filesonly="true"/>
  </target>

  <!-- Bugzilla Report 22865 -->
  <target name="testEmptySkip">
    <mkdir dir="ziptest"/>
    <zip destfile="test3.zip" basedir="ziptest" whenempty="skip"/>
  </target>

  <!-- Bugzilla Report 30365 -->
  <target name="zipEmptyDir">
        <mkdir dir="empty/empty2"/>
		<zip destfile="test3.zip" basedir="empty" update="true"/>
  </target>

  <target name="zipEmptyCreate">
      <mkdir dir="empty"/>
      <zip destfile="test3.zip" basedir="empty" whenempty="create" includes="*.xyz"/>
  </target>

  <target name="testCompressionLevel" depends="test6">
    <length property="test6.length" file="test6.zip" />
    <zip destFile="testLevel.zip" basedir="." level="9">
      <include name="*.xml" />
      <exclude name="zip.*" />
    </zip>
    <fail>
      <condition>
        <not>
          <isfileselected file="testLevel.zip">
            <size when="less" value="${test6.length}" />
          </isfileselected>
        </not>
      </condition>
    </fail>
  </target>

  <!-- Bugzilla Report 33412 -->
  <target name="testDefaultExcludesAndUpdate">
    <mkdir dir="ziptest"/>
    <touch file="ziptest/ziptest~"/>
    <zip destfile="test3.zip" basedir="ziptest" defaultexcludes="false"/>
    <touch file="ziptest/ziptest2"/>
    <zip destfile="test3.zip" basedir="ziptest"
      defaultexcludes="false"
      update="true"/>
  </target>

  <target name="cleanup">
    <delete file="test3.zip"/>
    <delete file="test4.zip"/>
    <delete file="test5.zip"/>
    <delete file="test6.zip"/>
    <delete file="inner7.zip"/>
    <delete file="test7.zip"/>
    <delete file="test8.zip"/>
    <delete file="asf-logo.gif.zip"/>
    <delete file="zipgroupfileset.zip"/>
    <delete file="../dummyfile" />
    <delete dir="ziptest"/>
    <delete dir="empty"/>
  </target>
</project>
