<?xml version="1.0" encoding="utf-8"?>
<!--
   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:cmp="antlib:org.apache.ant.compress">

  <import file="antunit-base.xml"/>

  <target name="-findAntHomeLib" depends="-useAntHome, -searchAntHomeLib"/>

  <target name="-useAntHome" if="ant.home">
    <property name="ant.home.lib" value="${ant.home}/lib"/>
  </target>

  <target name="-searchAntHomeLib" unless="ant.home">
    <first id="ant-jar">
      <restrict>
        <path path="${java.class.path}"/>
        <name name="**/ant.jar"/>
      </restrict>
    </first>
    <dirname property="ant.home.lib" file="${toString:ant-jar}"/>
  </target>

  <target name="testExtractJars" depends="-findAntHomeLib">
    <mkdir dir="${output}"/>
    <copy todir="${output}">
      <cmp:archives>
        <zips>
          <fileset dir="${ant.home.lib}"
                   includes="ant-*.jar"/>
        </zips>
      </cmp:archives>
    </copy>
    <au:assertFileExists
       file="${output}/org/apache/tools/ant/launch/Launcher.class"/>
    <au:assertFileExists
       file="${output}/org/apache/tools/ant/BuildFileTest.class"/>
  </target>

  <target name="testMixingFormats" depends="-findAntHomeLib">
    <mkdir dir="${output}"/>
    <tar destfile="${output}/test.tar.gz" compression="gzip">
      <fileset file="${ant.file}"/>
    </tar>
    <cmp:cpio destfile="${output}/test.cpio">
      <cmp:arfileset file="${ant.file}" prefix="cpio/"/>
    </cmp:cpio>
    <copy todir="${output}">
      <cmp:archives>
        <zips>
          <fileset dir="${ant.home.lib}"
                   includes="ant-launcher.jar"/>
        </zips>
        <tars>
          <gzipresource>
            <file file="${output}/test.tar.gz"/>
          </gzipresource>
        </tars>
        <ars>
          <file file="../resources/asf-logo.gif.ar"/>
        </ars>
        <cpios>
          <fileset file="${output}/test.cpio"/>
        </cpios>
      </cmp:archives>
    </copy>
    <au:assertFileExists
       file="${output}/org/apache/tools/ant/launch/Launcher.class"/>
    <basename property="filename" file="${ant.file}"/>
    <au:assertFileExists file="${output}/${filename}"/>
    <au:assertFilesMatch
       actual="${output}/asf-logo.gif"
       expected="../resources/asf-logo.gif"
       />
    <au:assertFileExists file="${output}/cpio/${filename}"/>
  </target>

  <target name="testReference" depends="-findAntHomeLib">
    <mkdir dir="${output}"/>
    <cmp:archives id="ref">
      <zips>
        <fileset dir="${ant.home.lib}"
                 includes="ant-launcher.jar"/>
      </zips>
    </cmp:archives>
    <copy todir="${output}">
      <cmp:archives refid="ref"/>
    </copy>
    <au:assertFileExists
       file="${output}/org/apache/tools/ant/launch/Launcher.class"/>
  </target>

  <target name="testCircularReference">
    <au:expectfailure
       message="This data type contains a circular reference.">
      <copy todir="${output}">
        <cmp:archives id="ref">
          <zips>
            <cmp:archives refid="ref"/>
          </zips>
        </cmp:archives>
      </copy>
    </au:expectfailure>
    <au:expectfailure
       message="This data type contains a circular reference.">
      <copy todir="${output}">
        <cmp:archives refid="ref"/>
      </copy>
    </au:expectfailure>
  </target>    

  <!-- works but takes a veeeeeery long time -->
  <target name="skip-testResourcesManualExample">
    <mkdir dir="${output}"/>
    <copy todir="${output}">
      <cmp:archives>
        <zips>
          <restrict>
            <path path="${java.class.path}"/>
            <name name="*.jar"/>
          </restrict>
        </zips>
      </cmp:archives>
    </copy>
    <au:assertFileExists
       file="${output}/org/apache/tools/ant/launch/Launcher.class"/>
  </target>

  <target name="testZipManualExample">
    <mkdir dir="${output}/control"/>
    <mkdir dir="${input}/htdocs/manual"/>
    <touch file="${input}/htdocs/manual/foo.txt"/>
    <cmp:zip destfile="${input}/examples-a.zip">
      <fileset dir="." includes="*.xml"/>
    </cmp:zip>
    <cmp:zip destfile="${output}/manual.zip">
      <mappedresources>
        <fileset dir="${input}/htdocs/manual"/>
        <globmapper from="*" to="docs/user-guide/*"/>
      </mappedresources>
      <cmp:archives>
        <zips>
          <fileset dir="${input}" includes="examples*.zip"/>
        </zips>
      </cmp:archives>
    </cmp:zip>
    <cmp:unzip src="${output}/manual.zip" dest="${output}/control"/>
    <au:assertFileExists file="${output}/control/archives-test.xml"/>
    <au:assertFileExists file="${output}/control/docs/user-guide/foo.txt"/>
  </target>

</project>
