aboutsummaryrefslogtreecommitdiffstats
path: root/framework/src/ant/apache-ant-1.9.6/src/etc/testcases/taskdefs/optional/unix/symlink.xml
diff options
context:
space:
mode:
Diffstat (limited to 'framework/src/ant/apache-ant-1.9.6/src/etc/testcases/taskdefs/optional/unix/symlink.xml')
-rw-r--r--framework/src/ant/apache-ant-1.9.6/src/etc/testcases/taskdefs/optional/unix/symlink.xml354
1 files changed, 354 insertions, 0 deletions
diff --git a/framework/src/ant/apache-ant-1.9.6/src/etc/testcases/taskdefs/optional/unix/symlink.xml b/framework/src/ant/apache-ant-1.9.6/src/etc/testcases/taskdefs/optional/unix/symlink.xml
new file mode 100644
index 00000000..f039a622
--- /dev/null
+++ b/framework/src/ant/apache-ant-1.9.6/src/etc/testcases/taskdefs/optional/unix/symlink.xml
@@ -0,0 +1,354 @@
+<?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.
+-->
+
+<!--
+
+/*
+ * Since the initial version of this file was deveolped on the clock on
+ * an NSF grant I should say the following boilerplate:
+ *
+ * This material is based upon work supported by the National Science
+ * Foundaton under Grant No. EIA-0196404. Any opinions, findings, and
+ * conclusions or recommendations expressed in this material are those
+ * of the author and do not necessarily reflect the views of the
+ * National Science Foundation.
+ */
+
+-->
+
+<project name="symlink-test" basedir="." default="all">
+
+ <!--
+ Since the symlink task and some of these targets rely on
+ calls to exec, it may be possible for the JVM to outrun the
+ execution of the command line system calls, so this value is
+ the number of seconds we give the operating system to
+ catch up before executing a task that depends on the
+ completion of previous tasks. This delay is also added to
+ the end of each target so junit doesn't go testing things
+ before they have finnished (hopefully). Tweak if needed.
+ -->
+
+ <property name="delay" value="0"/>
+
+ <import file="../../../buildfiletest-base.xml"/>
+
+ <target name="setUp">
+ <mkdir dir="${output}" />
+ </target>
+
+
+ <target name="all"
+ depends="setUp, test-single, test-delete, test-record, test-recreate, tearDown"/>
+
+ <!-- test for action = single -->
+ <!--
+ Creates:
+ File: ${output}/symlink.test
+ Link: ${output}/singletest
+ -->
+ <target name="test-single">
+ <touch file="${output}/symlink.test"/>
+ <symlink resource="${output}/symlink.test"
+ link="${output}/singletest"
+ failonerror="yes"/>
+ <sleep seconds="${delay}"/> <!-- make sure OS has time to catch up -->
+ <available file="${output}/symlink.test"
+ property="test.single.file.created"/>
+ <available file="${output}/singletest"
+ property="test.single.link.created"/>
+ </target>
+
+
+
+ <!-- test for action = delete (no calls to command line so no sleep) -->
+
+ <!--
+ Creates:
+ (none)
+ Deletes:
+ Link: ${output}/singletest
+ -->
+
+ <target name="test-delete">
+ <touch file="${output}/symlink.test"/>
+ <symlink resource="${output}/symlink.test"
+ link="${output}/singletest"
+ failonerror="yes"/>
+ <sleep seconds="${delay}"/> <!-- make sure OS has time to catch up -->
+
+ <symlink action="delete" link="${output}/singletest" failonerror="yes"/>
+ <symlink action="delete" link="${output}/symlink.test" failonerror="no"/>
+ <sleep seconds="${delay}"/> <!-- make sure OS has time to catch up -->
+
+ <available file="${output}/symlink.test"
+ property="test.delete.file.still.there"/>
+ <available file="${output}/singletest"
+ property="test.delete.link.still.there"
+ value="ERROR: link deletion failed"/>
+
+ </target>
+
+
+
+ <!-- test for action = record -->
+
+ <!--
+ Creates:
+ Dir: ${output}/symtest1
+ Dir: ${output}/symtest1/symtest2
+ Dir: ${output}/symtest1/symtest3
+ File: ${output}/symtest1/file1
+ File: ${output}/symtest1/symtest2/file2
+ File: ${output}/symtest1/symtest3/fileA
+ File: ${output}/symtest1/symtest3/fileB
+ File: ${output}/symtest1/symtest3/fileC
+ Link: ${output}/symtest1/link1==>${output}/symtest1/file1
+ Link: ${output}/symtest1/link2==>${output}/symtest1/symtest2/file2
+ Link: ${output}/symtest1/symtest2/link3==>
+ ${output}/symtest1/symtest2/file2
+ Link: ${output}/symtest1/dirlink==>${output}/symtest1/symtest3
+ Link: ${output}/symtest1/dirlink2==>${output}/symtest1/symtest3
+ Link: ${output}/symtest1/dirlink3==>${output}/symtest1/symtest3
+ File: ${output}/symtest1/recorded.links
+ File: ${output}/symtest1/symtest2/recorded.links
+ Deletes:
+ (none)
+ -->
+
+ <target name="test-record">
+
+ <mkdir dir="${output}/symtest1"/>
+ <mkdir dir="${output}/symtest1/symtest2"/>
+ <mkdir dir="${output}/symtest1/symtest3"/>
+ <touch file="${output}/symtest1/file1"/>
+ <touch file="${output}/symtest1/symtest2/file2"/>
+
+ <touch file="${output}/symtest1/symtest3/fileA"/>
+ <touch file="${output}/symtest1/symtest3/fileB"/>
+ <touch file="${output}/symtest1/symtest3/fileC"/>
+
+ <symlink resource="${output}/symtest1/file1"
+ link="${output}/symtest1/link1"
+ failonerror="no" />
+ <symlink resource="${output}/symtest1/symtest2/file2"
+ link="${output}/symtest1/link2"
+ failonerror="no" />
+ <symlink resource="${output}/symtest1/symtest2/file2"
+ link="${output}/symtest1/symtest2/link3"
+ failonerror="no" />
+ <symlink resource="${output}/symtest1/symtest3"
+ link="${output}/symtest1/dirlink"
+ failonerror="no" />
+ <symlink resource="${output}/symtest1/symtest3"
+ link="${output}/symtest1/dirlink2"
+ failonerror="no"/>
+ <symlink resource="${output}/symtest1/symtest3"
+ link="${output}/symtest1/dirlink3"
+ failonerror="no"/>
+
+ <sleep seconds="${delay}"/> <!-- make sure OS has time to catch up -->
+
+ <symlink action="record" linkfilename="recorded.links">
+ <fileset dir="${output}/symtest1" includes="**/**"/>
+ </symlink>
+
+ <sleep seconds="${delay}"/> <!-- make sure OS has time to catch up -->
+
+ <!-- Test to see if the directories were created -->
+
+ <available file="${output}/symtest1"
+ type="dir"
+ property="test.record.dir1.created"/>
+
+ <available file="${output}/symtest1/symtest2"
+ type="dir"
+ property="test.record.dir2.created"/>
+
+ <available file="${output}/symtest1/symtest3"
+ type="dir"
+ property="test.record.dir3.created"/>
+
+ <!-- Test to see if the Files were created -->
+
+ <available file="${output}/symtest1/file1"
+ property="test.record.file1.created"/>
+
+ <available file="${output}/symtest1/symtest2/file2"
+ property="test.record.file2.created"/>
+
+ <available file="${output}/symtest1/symtest3/fileA"
+ property="test.record.fileA.created"/>
+
+ <available file="${output}/symtest1/symtest3/fileB"
+ property="test.record.fileB.created"/>
+
+ <available file="${output}/symtest1/symtest3/fileC"
+ property="test.record.fileC.created"/>
+
+ <!-- Test to see if the links were created -->
+
+ <available file="${output}/symtest1/link1"
+ property="test.record.link1.created"/>
+
+ <available file="${output}/symtest1/link2"
+ property="test.record.link2.created"/>
+
+ <available file="${output}/symtest1/symtest2/link3"
+ property="test.record.link3.created"/>
+
+ <available file="${output}/symtest1/dirlink"
+ property="test.record.dirlink.created"/>
+
+ <!-- this is redundant for this test, but used in the recreate test -->
+
+ <available file="${output}/symtest1/dirlink2"
+ property="test.record.dirlink2.created"/>
+
+ <!-- Test to see if the linkfiles were created -->
+
+ <available file="${output}/symtest1/recorded.links"
+ property="test.record.dir1.recorded"/>
+
+ <available file="${output}/symtest1/symtest2/recorded.links"
+ property="test.record.dir2.recorded"/>
+
+ <!-- THIS should not be set -->
+
+ <available file="${output}/symtest1/symtest3/recorded.links"
+ property="test.record.dir3.recorded"
+ value="ERROR: symtest3/recorded.links should not exist"/>
+
+
+ </target>
+
+ <!-- test for action = recreate -->
+
+ <!--
+ Deletes:
+ Link: ${output}/symtest1/link1==>${output}/symtest1/file1
+ Link: ${output}/symtest1/link2==>${output}/symtest1/symtest2/file2
+ Link: ${output}/symtest1/symtest2/link3==>
+ ${output}/symtest1/symtest2/file2
+ Link: ${output}/symtest1/dirlink==>${output}/symtest1/symtest3
+ Link: ${output}/symtest1/dirlink3==>${output}/symtest1/symtest3
+
+ Creates
+ Link: ${output}/symtest1/dirlink3==>${output}/symtest1/symtest2
+
+ Recreates:
+ Link: ${output}/symtest1/link1==>${output}/symtest1/file1
+ Link: ${output}/symtest1/link2==>${output}/symtest1/symtest2/file2
+ Link: ${output}/symtest1/symtest2/link3==>
+ ${output}/symtest1/symtest2/file2
+ Link: ${output}/symtest1/dirlink==>${output}/symtest1/symtest3
+
+ Should Change:
+ Link: ${output}/symtest1/dirlink3==>${output}/symtest1/symtest2
+ to
+ ${output}/symtest1/dirlink3==>${output}/symtest1/symtest3
+
+ Should Not Create (bug 25181):
+ Link: ${output}/symtest1/symtest3/dirlink2==>${output}/symtest1/symtest3
+ -->
+
+ <target name="test-recreate" depends="test-record">
+
+ <symlink action="delete" link="${output}/symtest1/link1"/>
+ <symlink action="delete" link="${output}/symtest1/link2"/>
+ <symlink action="delete" link="${output}/symtest1/symtest2/link3"/>
+ <symlink action="delete" link="${output}/symtest1/dirlink"/>
+ <!-- dirlink2 intentionally not deleted to test bug 25181 -->
+ <symlink action="delete" link="${output}/symtest1/dirlink3"/>
+
+ <sleep seconds="${delay}"/> <!-- make sure OS has time to catch up -->
+
+ <symlink resource="${output}/symtest1/symtest2"
+ link="${output}/symtest1/dirlink3"
+ failonerror="no"/>
+
+ <sleep seconds="${delay}"/> <!-- make sure OS has time to catch up -->
+
+ <available file="${output}/symtest1/link1"
+ property="test.recreate.link1.not.removed"
+ value="ERROR: rm -f symtest1/link1 failed"/>
+
+ <available file="${output}/symtest1/link2"
+ property="test.recreate.link2.not.removed"
+ value="ERROR: rm -f symtest1/link2 failed"/>
+
+ <available file="${output}/symtest1/symtest2/link3"
+ property="test.recreate.link3.not.removed"
+ value="ERROR: rm -f symtest1/symtest2/link3 failed"/>
+
+ <available file="${output}/symtest1/zdirlink"
+ property="test.recreate.zdirlink.not.removed"
+ value="ERROR: rm -f symtest1/zdirlink failed"/>
+
+ <sleep seconds="${delay}"/> <!-- make sure OS has time to do the execs -->
+
+ <symlink action="recreate">
+ <fileset dir="${output}/symtest1" includes="**/recorded.links"/>
+ </symlink>
+
+ <sleep seconds="${delay}"/> <!-- make sure OS has time to catch up -->
+
+ <available file="${output}/symtest1/link1"
+ property="test.recreate.link1.recreated"/>
+
+ <available file="${output}/symtest1/link2"
+ property="test.recreate.link2.recreated"/>
+
+ <available file="${output}/symtest1/symtest2/link3"
+ property="test.recreate.link3.recreated"/>
+
+ <available file="${output}/symtest1/dirlink"
+ property="test.recreate.dirlink.recreated"/>
+
+ <!-- this should not get set -->
+ <available file="${output}/symtest1/symtest3/symtest3"
+ property="test.recreate.dirlink2.recreated.twice"
+ value="ERROR: dirlink2 was created a second time (bug 25181)"/>
+
+ <touch file="${output}/symtest1/dirlink3/WhereAmI"/>
+
+ <sleep seconds="${delay}"/> <!-- make sure OS has time to do the execs -->
+
+ <available file="${output}/symtest1/symtest3/WhereAmI"
+ property="test.recreate.dirlink3.was.altered"/>
+ </target>
+
+
+ <!-- actually tests the symlink methods in FileUtils, but this
+ testfixture already has all the necessary envirnment in place
+ -->
+ <target name="test-fileutils" depends="setUp">
+ <mkdir dir="${output}/dir1"/>
+ <mkdir dir="${output}/dir2"/>
+ <touch file="${output}/file1"/>
+ <touch file="${output}/file2"/>
+ <symlink link="${output}/dir.there" resource="${output}/dir1"/>
+ <symlink link="${output}/dir.notthere" resource="${output}/dir2"/>
+ <symlink link="${output}/file.there" resource="${output}/file1"/>
+ <symlink link="${output}/file.notthere" resource="${output}/file2"/>
+ <delete dir="${output}/dir2"/>
+ <delete file="${output}/file2"/>
+ </target>
+
+
+</project>