aboutsummaryrefslogtreecommitdiffstats
path: root/framework/src/ant/apache-ant-1.9.6/src/tests/antunit/core/dirscanner-symlinks-test.xml
diff options
context:
space:
mode:
Diffstat (limited to 'framework/src/ant/apache-ant-1.9.6/src/tests/antunit/core/dirscanner-symlinks-test.xml')
-rw-r--r--framework/src/ant/apache-ant-1.9.6/src/tests/antunit/core/dirscanner-symlinks-test.xml200
1 files changed, 200 insertions, 0 deletions
diff --git a/framework/src/ant/apache-ant-1.9.6/src/tests/antunit/core/dirscanner-symlinks-test.xml b/framework/src/ant/apache-ant-1.9.6/src/tests/antunit/core/dirscanner-symlinks-test.xml
new file mode 100644
index 00000000..0645946a
--- /dev/null
+++ b/framework/src/ant/apache-ant-1.9.6/src/tests/antunit/core/dirscanner-symlinks-test.xml
@@ -0,0 +1,200 @@
+<?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="testLinkToParentFollow"
+ depends="checkOs, setUp, -link-to-parent"
+ if="unix">
+ <copy todir="${output}">
+ <fileset dir="${base}" followsymlinks="true" maxLevelsOfSymlinks="1"/>
+ </copy>
+ <symlink action="delete" link="${base}/A"/>
+ <au:assertFileExists file="${output}/A/B/file.txt"/>
+ <au:assertFileDoesntExist file="${output}/A/base/A/B/file.txt"/>
+ </target>
+
+ <target name="testLinkToParentFollowMax2"
+ depends="checkOs, setUp, -link-to-parent"
+ if="unix">
+ <copy todir="${output}">
+ <fileset dir="${base}" followsymlinks="true" maxLevelsOfSymlinks="2"/>
+ </copy>
+ <symlink action="delete" link="${base}/A"/>
+ <au:assertFileExists file="${output}/A/B/file.txt"/>
+ <au:assertFileExists file="${output}/A/base/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="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="testRepeatedName"
+ depends="setUp">
+ <mkdir dir="${base}/A/A/A/A"/>
+ <touch file="${base}/A/A/A/A/file.txt"/>
+ <copy todir="${output}">
+ <fileset dir="${base}" followsymlinks="true" maxLevelsOfSymlinks="1"/>
+ </copy>
+ <au:assertFileExists file="${output}/A/A/A/A/file.txt"/>
+ </target>
+
+ <target name="testRepeatedNameWithLinkButNoLoop"
+ depends="checkOs, setUp"
+ if="unix">
+ <mkdir dir="${base}/A/A/A/B"/>
+ <touch file="${base}/A/A/A/B/file.txt"/>
+ <symlink link="${base}/A/A/A/A" resource="${base}/A/A/A/B"/>
+ <copy todir="${output}">
+ <fileset dir="${base}" followsymlinks="true" maxLevelsOfSymlinks="1"/>
+ </copy>
+ <au:assertFileExists file="${output}/A/A/A/A/file.txt"/>
+ </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>