<?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

       https://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="testArj">
    <mkdir dir="${output}"/>
    <copy todir="${output}">
      <cmp:archives>
        <arjs>
          <file file="../resources/asf-logo.gif.arj"/>
        </arjs>
      </cmp:archives>
    </copy>
    <au:assertFilesMatch
       actual="${output}/asf-logo.gif"
       expected="../resources/asf-logo.gif"
       />
  </target>

  <target name="testDump">
    <mkdir dir="${output}"/>
    <copy todir="${output}">
      <cmp:archives>
        <dumps>
          <file file="../resources/asf-logo.gif.dump"/>
        </dumps>
      </cmp:archives>
    </copy>
    <au:assertFilesMatch
       actual="${output}/asf-logo.gif"
       expected="../resources/asf-logo.gif"
       />
  </target>

  <target name="test7z">
    <mkdir dir="${output}"/>
    <copy todir="${output}">
      <cmp:archives>
        <sevenzs>
          <file file="../resources/asf-logo.gif.7z"/>
        </sevenzs>
      </cmp:archives>
    </copy>
    <au:assertFilesMatch
       actual="${output}/asf-logo.gif"
       expected="../resources/asf-logo.gif"
       />
  </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>
