<?xml version="1.0"?>
<project name="sync-test" default="not-me">
  <property name="scratch" location="synctest"/>

  <target name="not-me">
    <fail>This file must be used from a test case</fail>
  </target>

  <target name="cleanup">
    <delete dir="${scratch}"/>
  </target>

  <target name="setup">
    <property name="src" location="${scratch}/source"/>
    <property name="dest" location="${scratch}/target"/>
    <mkdir dir="${src}"/>
    <mkdir dir="${dest}"/>
  </target>

  <target name="simplecopy" depends="setup">
    <mkdir dir="${src}/a/b/c"/>
    <touch file="${src}/a/b/c/d"/>
    <sync todir="${dest}">
      <fileset dir="${src}"/>
    </sync>
  </target>

  <target name="copyandremove" depends="setup">
    <mkdir dir="${src}/a/b/c"/>
    <touch file="${src}/a/b/c/d"/>
    <mkdir dir="${dest}/e"/>
    <touch file="${dest}/e/f"/>
    <sync todir="${dest}">
      <fileset dir="${src}"/>
    </sync>
  </target>

  <target name="copyandremove-with-filelist" depends="setup">
    <mkdir dir="${src}/a/b/c"/>
    <touch file="${src}/a/b/c/d"/>
    <mkdir dir="${dest}/e"/>
    <touch file="${dest}/e/f"/>
    <sync todir="${dest}">
      <filelist dir="${src}">
        <file name="a/b/c/d"/>
        <file name="not-there"/>
      </filelist>
    </sync>
  </target>

  <target name="copyandremove-with-zipfileset" depends="setup">
    <mkdir dir="${src}/a/b/c"/>
    <touch file="${src}/a/b/c/d"/>
    <mkdir dir="${dest}/e"/>
    <touch file="${dest}/e/f"/>
    <zip destfile="${src}/test.zip">
      <fileset dir="${src}" excludes="*.zip"/>
    </zip>
    <sync todir="${dest}">
      <zipfileset src="${src}/test.zip"/>
    </sync>
  </target>

  <target name="copyandremove-emptypreserve" depends="setup">
    <mkdir dir="${src}/a/b/c"/>
    <touch file="${src}/a/b/c/d"/>
    <mkdir dir="${dest}/e"/>
    <touch file="${dest}/e/f"/>
    <sync todir="${dest}">
      <fileset dir="${src}"/>
      <preserveintarget/>
    </sync>
  </target>

  <target name="emptycopy" depends="setup">
    <mkdir dir="${src}/a/b/c"/>
    <touch file="${src}/a/b/c/d"/>
    <sync todir="${dest}">
      <fileset dir="${src}" excludes="**/d"/>
    </sync>
  </target>

  <target name="emptydircopy" depends="setup">
    <mkdir dir="${src}/a/b/c"/>
    <touch file="${src}/a/b/c/d"/>
    <sync todir="${dest}"
         includeemptydirs="true">
      <fileset dir="${src}" excludes="**/d"/>
    </sync>
  </target>

  <target name="emptydircopyandremove" depends="setup">
    <mkdir dir="${src}/a/b/c"/>
    <touch file="${src}/a/b/c/d"/>
    <mkdir dir="${dest}/e/f"/>
    <sync todir="${dest}"
         includeemptydirs="true">
      <fileset dir="${src}" excludes="**/d"/>
    </sync>
  </target>

  <target name="copynoremove" depends="setup">
    <mkdir dir="${src}/a/b/c"/>
    <touch file="${src}/a/b/c/d"/>
    <mkdir dir="${dest}/e"/>
    <touch file="${dest}/e/f"/>
    <sync todir="${dest}">
      <fileset dir="${src}"/>
      <preserveintarget>
        <include name="e/f"/>
      </preserveintarget>
    </sync>
  </target>

  <target name="copynoremove-selectors" depends="setup">
    <mkdir dir="${src}/a/b/c"/>
    <touch file="${src}/a/b/c/d"/>
    <mkdir dir="${dest}/e"/>
    <touch file="${dest}/e/f"/>
    <sync todir="${dest}">
      <fileset dir="${src}"/>
      <preserveintarget>
        <filename name="e/f"/>
      </preserveintarget>
    </sync>
  </target>

</project>