|
- <?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 xmlns:au="antlib:org.apache.ant.antunit" default="antunit">
-
- <import file="../antunit-base.xml"/>
-
- <target name="setUp">
- <property name="base" location="${input}/base"/>
- <mkdir dir="${base}"/>
- </target>
-
- <target name="checkOs">
- <condition property="unix"><os family="unix"/></condition>
- </target>
-
- <macrodef name="assertDirIsEmpty">
- <attribute name="dir" default="${output}"/>
- <sequential>
- <local name="resources"/>
- <resourcecount property="resources">
- <fileset dir="@{dir}"/>
- </resourcecount>
- <au:assertEquals expected="0" actual="${resources}"/>
- </sequential>
- </macrodef>
-
- <target name="testSymlinkToSiblingFollow"
- depends="checkOs, setUp, -sibling"
- if="unix">
- <copy todir="${output}">
- <fileset dir="${base}" followsymlinks="true"/>
- </copy>
- <au:assertFileExists file="${output}/B/file.txt"/>
- </target>
-
- <target name="testSymlinkToSiblingNoFollow"
- depends="checkOs, setUp, -sibling"
- if="unix">
- <copy todir="${output}">
- <fileset dir="${base}" followsymlinks="false"/>
- </copy>
- <au:assertFileDoesntExist file="${output}/B/file.txt"/>
- </target>
-
- <target name="testBasedirIsSymlinkFollow"
- depends="checkOs, setUp, -basedir-as-symlink"
- if="unix">
- <copy todir="${output}">
- <fileset dir="${base}" followsymlinks="true"/>
- </copy>
- <au:assertFileExists file="${output}/file.txt"/>
- </target>
-
- <target name="testBasedirIsSymlinkNoFollow"
- depends="checkOs, setUp, -basedir-as-symlink"
- if="unix">
- <copy todir="${output}">
- <fileset dir="${base}" followsymlinks="false"/>
- </copy>
- <au:assertFileDoesntExist file="${output}/file.txt"/>
- </target>
-
- <target name="INFINITEtestLinkToParentFollow"
- depends="checkOs, setUp, -link-to-parent"
- if="unix">
- <copy todir="${output}">
- <fileset dir="${base}" followsymlinks="true"/>
- </copy>
- <symlink action="delete" link="${base}/A"/>
- <au:assertFileExists file="${output}/A/B/file.txt"/>
- </target>
-
- <target name="testLinkToParentFollowWithInclude"
- depends="checkOs, setUp, -link-to-parent"
- if="unix">
- <copy todir="${output}">
- <fileset dir="${base}" followsymlinks="true">
- <include name="A/B/*"/>
- </fileset>
- </copy>
- <symlink action="delete" link="${base}/A"/>
- <au:assertFileExists file="${output}/A/B/file.txt"/>
- </target>
-
- <!-- supposed to fail? -->
- <target name="testLinkToParentFollowWithIncludeMultiFollow"
- depends="checkOs, setUp, -link-to-parent"
- if="unix">
- <copy todir="${output}">
- <fileset dir="${base}" followsymlinks="true">
- <include name="A/base/A/B/*"/>
- </fileset>
- </copy>
- <symlink action="delete" link="${base}/A"/>
- <au:assertFileExists file="${output}/A/base/A/B/file.txt"/>
- </target>
-
- <target name="testLinkToParentNoFollow"
- depends="checkOs, setUp, -link-to-parent"
- if="unix">
- <copy todir="${output}">
- <fileset dir="${base}" followsymlinks="false"/>
- </copy>
- <symlink action="delete" link="${base}/A"/>
- <au:assertFileDoesntExist file="${output}/A/B/file.txt"/>
- </target>
-
- <target name="INFINITE testSillyLoopFollow"
- depends="checkOs, setUp, -silly-loop"
- if="unix">
- <copy todir="${output}">
- <fileset dir="${base}" followsymlinks="true"/>
- </copy>
- <symlink action="delete" link="${base}"/>
- <assertDirIsEmpty/>
- </target>
-
- <target name="testSillyLoopNoFollow"
- depends="checkOs, setUp, -silly-loop"
- if="unix">
- <copy todir="${output}">
- <fileset dir="${base}" followsymlinks="false"/>
- </copy>
- <symlink action="delete" link="${base}"/>
- <au:assertFileDoesntExist file="${output}"/>
- </target>
-
- <target name="-sibling" if="unix">
- <mkdir dir="${base}/A"/>
- <touch file="${base}/A/file.txt"/>
- <symlink link="${base}/B" resource="${base}/A"/>
- </target>
-
- <target name="-basedir-as-symlink" if="unix">
- <delete dir="${base}"/>
- <mkdir dir="${input}/realdir"/>
- <touch file="${input}/realdir/file.txt"/>
- <symlink link="${base}" resource="${input}/realdir"/>
- </target>
-
- <target name="-link-to-parent" if="unix">
- <mkdir dir="${input}/B"/>
- <touch file="${input}/B/file.txt"/>
- <symlink link="${base}/A" resource="${input}"/>
- </target>
-
- <target name="-silly-loop" if="unix">
- <delete dir="${base}"/>
- <symlink link="${base}" resource="${input}"/>
- </target>
- </project>
|