Skip to content

Commit 57d78de

Browse files
committed
[MSHADE-322][MSHADE-306] fixing Tibor's review comments and ensure master tests are deterministic
1 parent fbefa16 commit 57d78de

File tree

2 files changed

+12
-10
lines changed

2 files changed

+12
-10
lines changed

src/main/java/org/apache/maven/plugins/shade/resource/properties/SortedProperties.java

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -23,16 +23,19 @@
2323
import java.util.Collections;
2424
import java.util.Comparator;
2525
import java.util.Enumeration;
26-
import java.util.HashSet;
2726
import java.util.Iterator;
27+
import java.util.LinkedHashSet;
2828
import java.util.LinkedList;
2929
import java.util.List;
3030
import java.util.Map;
3131
import java.util.Properties;
3232
import java.util.Set;
3333

3434
/**
35-
* Properties instance sorting its keys on iterations.
35+
* Internal Properties instance sorting its keys on iterations for store() usages.
36+
* It ensures properties persistence is deterministic.
37+
*
38+
* IMPORTANT: this only overrides methods used accross JVM in store() so ordering is not guaranteed for other cases.
3639
*/
3740
public class SortedProperties extends Properties
3841
{
@@ -48,7 +51,7 @@ public int compare( Map.Entry<Object, Object> o1, Map.Entry<Object, Object> o2 )
4851
return String.valueOf( o1.getKey() ).compareTo( String.valueOf( o2.getKey() ) );
4952
}
5053
} );
51-
return new HashSet<>( entries );
54+
return new LinkedHashSet<>( entries );
5255
}
5356

5457
@Override

src/test/java/org/apache/maven/plugins/shade/DefaultShaderTest.java

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,7 @@ public void testOverlappingResourcesAreLogged() throws IOException, MojoExecutio
6565
@Override
6666
public void debug( final String s, final Throwable throwable )
6767
{
68-
debugMessages.add(s);
68+
debugMessages.add( s.replace( '\\', '/' ).trim() );
6969
}
7070

7171
@Override
@@ -77,7 +77,7 @@ public void info( final String s, final Throwable throwable )
7777
@Override
7878
public void warn( final String s, final Throwable throwable )
7979
{
80-
warnMessages.add(s);
80+
warnMessages.add( s.replace( '\\', '/' ).trim() );
8181
}
8282

8383
@Override
@@ -101,7 +101,7 @@ public Logger getChildLogger( final String s )
101101

102102
// we will shade two jars and expect to see META-INF/MANIFEST.MF overlaps, this will always be true
103103
// but this can lead to a broken deployment if intended for OSGi or so, so even this should be logged
104-
final Set<File> set = new LinkedHashSet<File>();
104+
final Set<File> set = new LinkedHashSet<>();
105105
set.add( new File( "src/test/jars/test-project-1.0-SNAPSHOT.jar" ) );
106106
set.add( new File( "src/test/jars/plexus-utils-1.4.1.jar" ) );
107107

@@ -115,13 +115,12 @@ public Logger getChildLogger( final String s )
115115

116116
final String failureWarnMessage = warnMessages.toString();
117117
assertTrue(failureWarnMessage, warnMessages.contains(
118-
"plexus-utils-1.4.1.jar, test-project-1.0-SNAPSHOT.jar define 1 overlapping resources: "));
119-
assertTrue(failureWarnMessage, warnMessages.contains(" - META-INF/MANIFEST.MF"));
118+
"plexus-utils-1.4.1.jar, test-project-1.0-SNAPSHOT.jar define 1 overlapping resources:"));
119+
assertTrue(failureWarnMessage, warnMessages.contains("- META-INF/MANIFEST.MF"));
120120

121121
final String failureDebugMessage = debugMessages.toString();
122122
assertTrue(failureDebugMessage, debugMessages.contains(
123-
"We have a duplicate META-INF/MANIFEST.MF in src/test/jars/plexus-utils-1.4.1.jar"
124-
.replace('/', File.separatorChar)));
123+
"We have a duplicate META-INF/MANIFEST.MF in src/test/jars/plexus-utils-1.4.1.jar" ));
125124
}
126125

127126
public void testShaderWithDefaultShadedPattern()

0 commit comments

Comments
 (0)