diff --git a/src/main/org/apache/tools/ant/types/resources/FileResource.java b/src/main/org/apache/tools/ant/types/resources/FileResource.java index 3ed49b812..e9679075c 100644 --- a/src/main/org/apache/tools/ant/types/resources/FileResource.java +++ b/src/main/org/apache/tools/ant/types/resources/FileResource.java @@ -282,7 +282,9 @@ public class FileResource extends Resource implements Touchable, FileProvider, if (of == null) { return 1; } - return f.compareTo(of); + int compareFiles = f.compareTo(of); + return compareFiles != 0 ? compareFiles + : getName().compareTo(another.getName()); } return super.compareTo(another); } @@ -305,7 +307,7 @@ public class FileResource extends Resource implements Touchable, FileProvider, FileResource otherfr = (FileResource) another; return getFile() == null ? otherfr.getFile() == null - : getFile().equals(otherfr.getFile()); + : getFile().equals(otherfr.getFile()) && getName().equals(otherfr.getName()); } /** diff --git a/src/tests/junit/org/apache/tools/ant/types/resources/FileResourceTest.java b/src/tests/junit/org/apache/tools/ant/types/resources/FileResourceTest.java index ae592c8d9..c6413ea36 100644 --- a/src/tests/junit/org/apache/tools/ant/types/resources/FileResourceTest.java +++ b/src/tests/junit/org/apache/tools/ant/types/resources/FileResourceTest.java @@ -25,6 +25,7 @@ import org.junit.Before; import org.junit.Test; import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotEquals; /** * Test Java API of {@link FileResource}. @@ -119,4 +120,18 @@ public class FileResourceTest { assertEquals(root, parentSibling.getBaseDir()); assertEquals("bar", parentSibling.getName()); } + + @Test + public void testEqualsUsesFiles() { + FileResource f1 = new FileResource(new File(root, "foo/a")); + FileResource f2 = new FileResource(new File(root + "/foo"), "a"); + assertEquals(f1, f2); + } + + @Test + public void testEqualsUsesRelativeNames() { + FileResource f1 = new FileResource(root, "foo/a"); + FileResource f2 = new FileResource(new File(root + "/foo"), "a"); + assertNotEquals(f1, f2); + } }