Author: niallp
Date: Wed Sep 29 11:28:11 2010
New Revision: 1002582
URL: http://svn.apache.org/viewvc?rev=1002582&view=rev
Log:
IO-246 FilenameUtils - wildcardMatch gives incorrect results - thanks to wa
Modified:
commons/proper/io/trunk/src/java/org/apache/commons/io/FilenameUtils.java
commons/proper/io/trunk/src/test/org/apache/commons/io/FilenameUtilsWildcardTestCase.java
Modified:
commons/proper/io/trunk/src/java/org/apache/commons/io/FilenameUtils.java
URL:
http://svn.apache.org/viewvc/commons/proper/io/trunk/src/java/org/apache/commons/io/FilenameUtils.java?rev=1002582&r1=1002581&r2=1002582&view=diff
==============================================================================
--- commons/proper/io/trunk/src/java/org/apache/commons/io/FilenameUtils.java
(original)
+++ commons/proper/io/trunk/src/java/org/apache/commons/io/FilenameUtils.java
Wed Sep 29 11:28:11 2010
@@ -1264,6 +1264,9 @@ public class FilenameUtils {
if (wcs[wcsIdx].equals("?")) {
// ? so move to next text char
textIdx++;
+ if (textIdx > filename.length()) {
+ break;
+ }
anyChars = false;
} else if (wcs[wcsIdx].equals("*")) {
Modified:
commons/proper/io/trunk/src/test/org/apache/commons/io/FilenameUtilsWildcardTestCase.java
URL:
http://svn.apache.org/viewvc/commons/proper/io/trunk/src/test/org/apache/commons/io/FilenameUtilsWildcardTestCase.java?rev=1002582&r1=1002581&r2=1002582&view=diff
==============================================================================
---
commons/proper/io/trunk/src/test/org/apache/commons/io/FilenameUtilsWildcardTestCase.java
(original)
+++
commons/proper/io/trunk/src/test/org/apache/commons/io/FilenameUtilsWildcardTestCase.java
Wed Sep 29 11:28:11 2010
@@ -182,6 +182,30 @@ public class FilenameUtilsWildcardTestCa
assertMatch("log.log.abc.log.abc.d", "*log?abc?d", true);
}
+ /**
+ * See https://issues.apache.org/jira/browse/IO-246
+ */
+ public void test_IO_246() {
+
+ // Tests for "*?"
+ assertMatch("aaa", "*?", false);
+
+ // Tests for "?*"
+ assertMatch("", "?*", false);
+ assertMatch("a", "a?*", false);
+ assertMatch("aa", "aa?*", false);
+ assertMatch("a", "?*", true);
+ assertMatch("aa", "?*", true);
+ assertMatch("aaa", "?*", true);
+
+ // Test ending on "?"
+ assertMatch("", "?", false);
+ assertMatch("a", "a?", false);
+ assertMatch("aa", "aa?", false);
+ assertMatch("aab", "aa?", true);
+ assertMatch("aaa", "*a", true);
+ }
+
public void testLocaleIndependence() {
Locale orig = Locale.getDefault();