mirror of https://github.com/apache/ant-ivy
Merge pull request #127 from raboof/fix-deterministic-extra-dependency-attributes
fix: make module attribute string encoding deterministic
This commit is contained in:
commit
9bba2ae9ee
|
|
@ -20,6 +20,7 @@ package org.apache.ivy.core.module.id;
|
|||
import java.lang.ref.WeakReference;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
import java.util.TreeMap;
|
||||
import java.util.WeakHashMap;
|
||||
import java.util.regex.Matcher;
|
||||
import java.util.regex.Pattern;
|
||||
|
|
@ -259,7 +260,7 @@ public class ModuleRevisionId extends UnmodifiableExtendableItem {
|
|||
|
||||
public String encodeToString() {
|
||||
StringBuilder buf = new StringBuilder();
|
||||
Map<String, String> attributes = new HashMap<>(getAttributes());
|
||||
Map<String, String> attributes = new TreeMap<>(getAttributes());
|
||||
attributes.keySet().removeAll(getExtraAttributes().keySet());
|
||||
attributes.putAll(getQualifiedExtraAttributes());
|
||||
|
||||
|
|
|
|||
|
|
@ -85,6 +85,12 @@ public class ModuleRevisionIdTest {
|
|||
extraAttributes.put("nullatt", null);
|
||||
testEncodeDecodeToString(
|
||||
ModuleRevisionId.newInstance("org/apache", "pre/name", "1.0-dev8/2", extraAttributes));
|
||||
|
||||
String encoded = ModuleRevisionId.newInstance("org/apache", "pre/name", "1.0-dev8/2", extraAttributes).encodeToString();
|
||||
// We expect the encoding/ordering to be stable for reproducibility.
|
||||
// If necessary this may vary across Ivy versions,
|
||||
// but ideally only intentionally.
|
||||
assertEquals("+att.name:#@#:+att.value:#@#:+att/name:#@#:+att/value:#@#:+att<name:#@#:+att<value:#@#:+branch:#@#:+@#:NULL:#@:#@#:+extra:#@#:+extravalue:#@#:+module:#@#:+pre/name:#@#:+nullatt:#@#:+@#:NULL:#@:#@#:+organisation:#@#:+org/apache:#@#:+revision:#@#:+1.0-dev8/2:#@#:", encoded);
|
||||
}
|
||||
|
||||
private void testEncodeDecodeToString(ModuleRevisionId mrid) {
|
||||
|
|
|
|||
Loading…
Reference in New Issue