bodewig 2003/05/19 08:55:23
Modified: src/main/org/apache/tools/ant/util FileUtils.java src/testcases/org/apache/tools/ant/util FileUtilsTest.java Log: removeLeadingPath didn't work as expected when trying to remove a path from itself. PR: 19979 Revision Changes Path 1.42 +8 -4 ant/src/main/org/apache/tools/ant/util/FileUtils.java Index: FileUtils.java =================================================================== RCS file: /home/cvs/ant/src/main/org/apache/tools/ant/util/FileUtils.java,v retrieving revision 1.41 retrieving revision 1.42 diff -u -r1.41 -r1.42 --- FileUtils.java 22 Apr 2003 18:23:55 -0000 1.41 +++ FileUtils.java 19 May 2003 15:55:22 -0000 1.42 @@ -988,12 +988,16 @@ * @since Ant 1.5 */ public String removeLeadingPath(File leading, File path) { + String l = normalize(leading.getAbsolutePath()).getAbsolutePath(); + String p = normalize(path.getAbsolutePath()).getAbsolutePath(); + if (l.equals(p)) { + return ""; + } + // if leading's path ends with a slash, it will be stripped by // normalize - we always add one so we never think /foo was a // parent directory of /foobar - String l = normalize(leading.getAbsolutePath()).getAbsolutePath() - + File.separator; - String p = normalize(path.getAbsolutePath()).getAbsolutePath(); + l += File.separator; if (p.startsWith(l)) { return p.substring(l.length()); } else { 1.16 +10 -1 ant/src/testcases/org/apache/tools/ant/util/FileUtilsTest.java Index: FileUtilsTest.java =================================================================== RCS file: /home/cvs/ant/src/testcases/org/apache/tools/ant/util/FileUtilsTest.java,v retrieving revision 1.15 retrieving revision 1.16 diff -u -r1.15 -r1.16 --- FileUtilsTest.java 7 Mar 2003 11:23:14 -0000 1.15 +++ FileUtilsTest.java 19 May 2003 15:55:23 -0000 1.16 @@ -1,7 +1,7 @@ /* * The Apache Software License, Version 1.1 * - * Copyright (c) 2001-2002 The Apache Software Foundation. All rights + * Copyright (c) 2001-2003 The Apache Software Foundation. All rights * reserved. * * Redistribution and use in source and binary forms, with or without @@ -406,6 +406,15 @@ fu.removeLeadingPath(new File("/foo"), new File("/bar"))); assertEquals(fu.normalize("/foobar").getAbsolutePath(), fu.removeLeadingPath(new File("/foo"), new File("/foobar"))); + // bugzilla report 19979 + assertEquals("", fu.removeLeadingPath(new File("/foo/bar"), + new File("/foo/bar"))); + assertEquals("", fu.removeLeadingPath(new File("/foo/bar"), + new File("/foo/bar/"))); + assertEquals("", fu.removeLeadingPath(new File("/foo/bar/"), + new File("/foo/bar/"))); + assertEquals("", fu.removeLeadingPath(new File("/foo/bar/"), + new File("/foo/bar"))); } /**