@@ -3,6 +3,7 @@ package com.github.jengelman.gradle.plugins.shadow.relocation
33import assertk.assertThat
44import assertk.assertions.isEqualTo
55import com.github.jengelman.gradle.plugins.shadow.internal.mapName
6+ import org.junit.jupiter.api.Test
67import org.junit.jupiter.params.ParameterizedTest
78import org.junit.jupiter.params.provider.Arguments
89import org.junit.jupiter.params.provider.MethodSource
@@ -11,12 +12,34 @@ class RelocatorsTest {
1112 @ParameterizedTest
1213 @MethodSource(" signaturePatternsProvider" )
1314 fun relocateSignaturePatterns (input : String , expected : String ) {
14- val actual =
15- setOf (SimpleRelocator (" org.package" , " shadow.org.package" ))
16- .mapName(name = input, onModified = {})
15+ val actual = setOf (SimpleRelocator (" org.package" , " shadow.org.package" )).mapName(name = input)
1716 assertThat(actual).isEqualTo(expected)
1817 }
1918
19+ /* *
20+ * Verifies that a relocator with [Relocator.skipStringConstants] = true is skipped individually
21+ * when mapping literals, rather than short-circuiting the entire set of relocators.
22+ */
23+ @Test
24+ fun skipStringConstantsIsPerRelocator () {
25+ val skippingRelocator =
26+ SimpleRelocator (" org.package" , " shadow.org.package" , skipStringConstants = true )
27+ val normalRelocator = SimpleRelocator (" com.example" , " shadow.com.example" )
28+ val relocators = linkedSetOf(skippingRelocator, normalRelocator)
29+
30+ // The skipping relocator cannot match "com.example.Foo", but the normal one can.
31+ // Ensure the normal relocator is still applied even though the first one has
32+ // skipStringConstants.
33+ assertThat(relocators.mapName(" com.example.Foo" , mapLiterals = true ))
34+ .isEqualTo(" shadow.com.example.Foo" )
35+ // When mapLiterals=true, the skipping relocator should not apply to its own pattern.
36+ assertThat(relocators.mapName(" org.package.Bar" , mapLiterals = true ))
37+ .isEqualTo(" org.package.Bar" )
38+ // When mapLiterals=false, the skipping relocator applies normally.
39+ assertThat(relocators.mapName(" org.package.Bar" , mapLiterals = false ))
40+ .isEqualTo(" shadow.org.package.Bar" )
41+ }
42+
2043 private companion object {
2144 val primitiveTypes = setOf (' B' , ' C' , ' D' , ' F' , ' I' , ' J' , ' S' , ' Z' )
2245
0 commit comments