Browse Source

Really fix Bugzilla Issue 58997

master
Stefan Bodewig 9 years ago
parent
commit
5a6fda5890
2 changed files with 82 additions and 4 deletions
  1. +4
    -4
      src/main/org/apache/tools/ant/taskdefs/Replace.java
  2. +78
    -0
      src/tests/antunit/taskdefs/replace-test.xml

+ 4
- 4
src/main/org/apache/tools/ant/taskdefs/Replace.java View File

@@ -31,11 +31,11 @@ import java.io.OutputStreamWriter;
import java.io.Reader;
import java.io.Writer;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.Iterator;
import java.util.List;
import java.util.Properties;
import java.util.Set;
import java.util.TreeSet;

import org.apache.tools.ant.BuildException;
import org.apache.tools.ant.DirectoryScanner;
@@ -960,7 +960,8 @@ public class Replace extends MatchingTask {
* strings are tried later.
*/
private Iterator<Object> getOrderedIterator(Properties props) {
Set<Object> keys = new TreeSet(new Comparator<Object>() {
List<Object> keys = new ArrayList<Object>(props.keySet());
Collections.sort(keys, new Comparator<Object>() {
@Override
public int compare(Object key1, Object key2) {
return compare(key1.toString(), key2.toString());
@@ -970,7 +971,6 @@ public class Replace extends MatchingTask {
return key2.length() - key1.length();
}
});
keys.addAll(props.keySet());
return keys.iterator();
}
}

+ 78
- 0
src/tests/antunit/taskdefs/replace-test.xml View File

@@ -129,6 +129,32 @@ abcdefghijklmnopqrstuvw=23
abcdefghijklmnopqrstuvwx=24
abcdefghijklmnopqrstuvwxy=25
abcdefghijklmnopqrstuvwxyz=26
A=27
AB=28
ABC=29
ABCD=30
ABCDE=31
ABCDEF=32
ABCDEFG=33
ABCDEFGH=34
ABCDEFGHI=35
ABCDEFGHIJ=36
ABCDEFGHIJK=37
ABCDEFGHIJKL=38
ABCDEFGHIJKLM=39
ABCDEFGHIJKLMN=40
ABCDEFGHIJKLMNO=41
ABCDEFGHIJKLMNOP=42
ABCDEFGHIJKLMNOPQ=43
ABCDEFGHIJKLMNOPQR=44
ABCDEFGHIJKLMNOPQRS=45
ABCDEFGHIJKLMNOPQRST=46
ABCDEFGHIJKLMNOPQRSTU=47
ABCDEFGHIJKLMNOPQRSTUV=48
ABCDEFGHIJKLMNOPQRSTUVW=49
ABCDEFGHIJKLMNOPQRSTUVWX=50
ABCDEFGHIJKLMNOPQRSTUVWXY=51
ABCDEFGHIJKLMNOPQRSTUVWXYZ=52
]]></echo>
<echo file="${output}/text.txt"><![CDATA[
a
@@ -157,6 +183,32 @@ abcdefghijklmnopqrstuvw
abcdefghijklmnopqrstuvwx
abcdefghijklmnopqrstuvwxy
abcdefghijklmnopqrstuvwxyz
A
AB
ABC
ABCD
ABCDE
ABCDEF
ABCDEFG
ABCDEFGH
ABCDEFGHI
ABCDEFGHIJ
ABCDEFGHIJK
ABCDEFGHIJKL
ABCDEFGHIJKLM
ABCDEFGHIJKLMN
ABCDEFGHIJKLMNO
ABCDEFGHIJKLMNOP
ABCDEFGHIJKLMNOPQ
ABCDEFGHIJKLMNOPQR
ABCDEFGHIJKLMNOPQRS
ABCDEFGHIJKLMNOPQRST
ABCDEFGHIJKLMNOPQRSTU
ABCDEFGHIJKLMNOPQRSTUV
ABCDEFGHIJKLMNOPQRSTUVW
ABCDEFGHIJKLMNOPQRSTUVWX
ABCDEFGHIJKLMNOPQRSTUVWXY
ABCDEFGHIJKLMNOPQRSTUVWXYZ
]]></echo>
<echo file="${output}/expected.txt"><![CDATA[
1
@@ -185,6 +237,32 @@ abcdefghijklmnopqrstuvwxyz
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
]]></echo>
<replace replacefilterresource="${input}/filter.properties">
<file file="${output}/text.txt"/>


Loading…
Cancel
Save