bodewig     2004/06/07 05:03:56

  Modified:    src/etc/testcases/taskdefs/optional/unix Tag: ANT_16_BRANCH
                        symlink.xml
               src/main/org/apache/tools/ant/taskdefs/optional/unix Tag:
                        ANT_16_BRANCH Symlink.java
               src/testcases/org/apache/tools/ant/taskdefs/optional/unix
                        Tag: ANT_16_BRANCH SymlinkTest.java
  Log:
  merge
  
  Revision  Changes    Path
  No                   revision
  No                   revision
  1.1.2.1   +49 -2     ant/src/etc/testcases/taskdefs/optional/unix/symlink.xml
  
  Index: symlink.xml
  ===================================================================
  RCS file: /home/cvs/ant/src/etc/testcases/taskdefs/optional/unix/symlink.xml,v
  retrieving revision 1.1
  retrieving revision 1.1.2.1
  diff -u -r1.1 -r1.1.2.1
  --- symlink.xml       7 Nov 2002 16:52:07 -0000       1.1
  +++ symlink.xml       7 Jun 2004 12:03:55 -0000       1.1.2.1
  @@ -104,6 +104,8 @@
            Link: ${tdir}/symtest1/symtest2/link3==>
                                              ${tdir}/symtest1/symtest2/file2
            Link: ${tdir}/symtest1/dirlink==>${tdir}/symtest1/symtest3
  +         Link: ${tdir}/symtest1/dirlink2==>${tdir}/symtest1/symtest3
  +         Link: ${tdir}/symtest1/dirlink3==>${tdir}/symtest1/symtest3
            File: ${tdir}/symtest1/recorded.links
            File: ${tdir}/symtest1/symtest2/recorded.links
       Deletes:
  @@ -134,6 +136,12 @@
       <symlink resource="${tdir}/symtest1/symtest3"
                link="${tdir}/symtest1/dirlink"
                failonerror="no" />
  +    <symlink resource="${tdir}/symtest1/symtest3" 
  +             link="${tdir}/symtest1/dirlink2"
  +             failonerror="no"/>
  +    <symlink resource="${tdir}/symtest1/symtest3" 
  +             link="${tdir}/symtest1/dirlink3"
  +             failonerror="no"/>
   
       <sleep seconds="${delay}"/> <!-- make sure OS has time to catch up -->
   
  @@ -188,6 +196,11 @@
       <available file="${tdir}/symtest1/dirlink"
                  property="test.record.dirlink.created"/>
   
  +    <!-- this is redundant for this test, but used in the recreate test -->
  +
  +    <available file="${tdir}/symtest1/dirlink2" 
  +               property="test.record.dirlink2.created"/>
  +
       <!-- Test to see if the linkfiles were created -->
   
       <available file="${tdir}/symtest1/recorded.links"
  @@ -213,14 +226,26 @@
            Link: ${tdir}/symtest1/link2==>${tdir}/symtest1/symtest2/file2
            Link: ${tdir}/symtest1/symtest2/link3==>
                                              ${tdir}/symtest1/symtest2/file2
  -         Link: ${tdir}/sumtest1/dirlink==>${tdir}/symtest1/symtest3
  +         Link: ${tdir}/symtest1/dirlink==>${tdir}/symtest1/symtest3
  +         Link: ${tdir}/symtest1/dirlink3==>${tdir}/symtest1/symtest3
  +
  +    Creates
  +         Link: ${tdir}/symtest1/dirlink3==>${tdir}/symtest1/symtest2
   
       Recreates:
            Link: ${tdir}/symtest1/link1==>${tdir}/symtest1/file1
            Link: ${tdir}/symtest1/link2==>${tdir}/symtest1/symtest2/file2
            Link: ${tdir}/symtest1/symtest2/link3==>
                                              ${tdir}/symtest1/symtest2/file2
  -         Link: ${tdir}/sumtest1/dirlink==>${tdir}/symtest1/symtest3
  +         Link: ${tdir}/symtest1/dirlink==>${tdir}/symtest1/symtest3
  +
  +    Should Change:
  +         Link: ${tdir}/symtest1/dirlink3==>${tdir}/symtest1/symtest2
  +               to
  +               ${tdir}/symtest1/dirlink3==>${tdir}/symtest1/symtest3
  +
  +    Should Not Create (bug 25181):
  +         Link: ${tdir}/symtest1/symtest3/dirlink2==>${tdir}/symtest1/symtest3
     -->
   
     <target name="test-recreate" depends="test-record">
  @@ -229,6 +254,16 @@
       <symlink action="delete" link="${tdir}/symtest1/link2"/>
       <symlink action="delete" link="${tdir}/symtest1/symtest2/link3"/>
       <symlink action="delete" link="${tdir}/symtest1/dirlink"/>
  +    <!-- dirlink2 intentionally not deleted to test bug 25181 -->
  +    <symlink action="delete" link="${tdir}/symtest1/dirlink3"/>
  +
  +    <sleep seconds="${delay}"/>  <!-- make sure OS has time to catch up -->
  +
  +    <symlink resource="${tdir}/symtest1/symtest2" 
  +             link="${tdir}/symtest1/dirlink3"
  +             failonerror="no"/>
  +
  +    <sleep seconds="${delay}"/>  <!-- make sure OS has time to catch up -->
   
       <available file="${tdir}/symtest1/link1"
                  property="test.recreate.link1.not.removed"
  @@ -265,6 +300,18 @@
   
       <available file="${tdir}/symtest1/dirlink"
                  property="test.recreate.dirlink.recreated"/>
  +
  +    <!-- this should not get set -->
  +    <available file="${tdir}/symtest1/symtest3/symtest3" 
  +               property="test.recreate.dirlink2.recreated.twice"
  +               value="ERROR: dirlink2 was created a second time (bug 
25181)"/>
  +
  +    <touch file="${tdir}/symtest1/dirlink3/WhereAmI"/>
  +
  +    <sleep seconds="${delay}"/>  <!-- make sure OS has time to do the execs 
-->
  +
  +    <available file="${tdir}/symtest1/symtest3/WhereAmI" 
  +               property="test.recreate.dirlink3.was.altered"/>
     </target>
   
   
  
  
  
  No                   revision
  No                   revision
  1.12.2.6  +21 -3     
ant/src/main/org/apache/tools/ant/taskdefs/optional/unix/Symlink.java
  
  Index: Symlink.java
  ===================================================================
  RCS file: 
/home/cvs/ant/src/main/org/apache/tools/ant/taskdefs/optional/unix/Symlink.java,v
  retrieving revision 1.12.2.5
  retrieving revision 1.12.2.6
  diff -u -r1.12.2.5 -r1.12.2.6
  --- Symlink.java      9 Mar 2004 17:01:53 -0000       1.12.2.5
  +++ Symlink.java      7 Jun 2004 12:03:55 -0000       1.12.2.6
  @@ -160,7 +160,26 @@
                   while (keys.hasMoreElements()) {
                       link = (String) keys.nextElement();
                       resource = listOfLinks.getProperty(link);
  -                    doLink(resource, link);
  +                 // handle the case where the link exists 
  +                 // and points to a directory (bug 25181)
  +                 try {
  +                     FileUtils fu = FileUtils.newFileUtils();
  +                     File test = new File(link);
  +                     File testRes = new File(resource);
  +                     if (!fu.isSymbolicLink(test.getParentFile(), 
  +                                            test.getName())) {
  +                         doLink(resource, link);
  +                     } else {
  +                         if (!test.getCanonicalPath().
  +                             equals(testRes.getCanonicalPath())) {
  +                             Symlink.deleteSymlink(link);
  +                             doLink(resource,link);
  +                         } // else the link exists, do nothing
  +                     }
  +                 } catch (IOException ioe) {
  +                     handleError("IO exception while creating "
  +                                 + "link");
  +                 }
                   }
               } else if (action.equals("record")) {
                   Vector vectOfLinks;
  @@ -735,7 +754,6 @@
                   keys = propTemp.keys();
                   propTemp.list(System.out);
                   // Write the contents to our master list of links
  -
                   // This method assumes that all links are defined in
                   // terms of absolute paths, or paths relative to the
                   // working directory
  
  
  
  No                   revision
  No                   revision
  1.3.2.5   +14 -1     
ant/src/testcases/org/apache/tools/ant/taskdefs/optional/unix/SymlinkTest.java
  
  Index: SymlinkTest.java
  ===================================================================
  RCS file: 
/home/cvs/ant/src/testcases/org/apache/tools/ant/taskdefs/optional/unix/SymlinkTest.java,v
  retrieving revision 1.3.2.4
  retrieving revision 1.3.2.5
  diff -u -r1.3.2.4 -r1.3.2.5
  --- SymlinkTest.java  9 Mar 2004 17:02:07 -0000       1.3.2.4
  +++ SymlinkTest.java  7 Jun 2004 12:03:55 -0000       1.3.2.5
  @@ -128,6 +128,9 @@
               assertNotNull("Failed to create dirlink",
                             p.getProperty("test.record.dirlink.created"));
   
  +            assertNotNull("Failed to create dirlink2",
  +                          p.getProperty("test.record.dirlink2.created"));
  +
               assertNotNull("Couldn't record links in dir1",
                             p.getProperty("test.record.dir1.recorded"));
   
  @@ -173,6 +176,16 @@
                             p.getProperty("test.recreate.link3.recreated"));
               assertNotNull("Failed to recreate dirlink",
                             p.getProperty("test.recreate.dirlink.recreated"));
  +         
  +         String doubleRecreate = 
p.getProperty("test.recreate.dirlink2.recreated.twice");
  +
  +         if (doubleRecreate != null) {
  +             fail(doubleRecreate);
  +         }
  +
  +            assertNotNull("Failed to alter dirlink3",
  +                          
p.getProperty("test.recreate.dirlink3.was.altered"));
  +
           }
           testfail = false;
       }
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to