1 package org.apache.maven.plugins.shade.relocation;
2
3 import junit.framework.TestCase;
4
5 import java.util.Arrays;
6
7
8
9
10
11
12
13 public class SimpleRelocatorTest
14 extends TestCase
15 {
16
17 public void testCanRelocatePath()
18 {
19 SimpleRelocator relocator;
20
21 relocator = new SimpleRelocator( "org.foo", null, null, null );
22 assertEquals( true, relocator.canRelocatePath( "org/foo/Class" ) );
23 assertEquals( true, relocator.canRelocatePath( "org/foo/Class.class" ) );
24 assertEquals( true, relocator.canRelocatePath( "org/foo/bar/Class" ) );
25 assertEquals( true, relocator.canRelocatePath( "org/foo/bar/Class.class" ) );
26 assertEquals( false, relocator.canRelocatePath( "com/foo/bar/Class" ) );
27 assertEquals( false, relocator.canRelocatePath( "com/foo/bar/Class.class" ) );
28 assertEquals( false, relocator.canRelocatePath( "org/Foo/Class" ) );
29 assertEquals( false, relocator.canRelocatePath( "org/Foo/Class.class" ) );
30
31 relocator = new SimpleRelocator( "org.foo", null, null, Arrays.asList(
32 new String[]{ "org.foo.Excluded", "org.foo.public.*", "org.foo.Public*Stuff" } ) );
33 assertEquals( true, relocator.canRelocatePath( "org/foo/Class" ) );
34 assertEquals( true, relocator.canRelocatePath( "org/foo/Class.class" ) );
35 assertEquals( true, relocator.canRelocatePath( "org/foo/excluded" ) );
36 assertEquals( false, relocator.canRelocatePath( "org/foo/Excluded" ) );
37 assertEquals( false, relocator.canRelocatePath( "org/foo/Excluded.class" ) );
38 assertEquals( false, relocator.canRelocatePath( "org/foo/public" ) );
39 assertEquals( false, relocator.canRelocatePath( "org/foo/public/Class" ) );
40 assertEquals( false, relocator.canRelocatePath( "org/foo/public/Class.class" ) );
41 assertEquals( true, relocator.canRelocatePath( "org/foo/publicRELOC/Class" ) );
42 assertEquals( true, relocator.canRelocatePath( "org/foo/PrivateStuff" ) );
43 assertEquals( true, relocator.canRelocatePath( "org/foo/PrivateStuff.class" ) );
44 assertEquals( false, relocator.canRelocatePath( "org/foo/PublicStuff" ) );
45 assertEquals( false, relocator.canRelocatePath( "org/foo/PublicStuff.class" ) );
46 assertEquals( false, relocator.canRelocatePath( "org/foo/PublicUtilStuff" ) );
47 assertEquals( false, relocator.canRelocatePath( "org/foo/PublicUtilStuff.class" ) );
48 }
49
50 public void testCanRelocateClass()
51 {
52 SimpleRelocator relocator;
53
54 relocator = new SimpleRelocator( "org.foo", null, null, null );
55 assertEquals( true, relocator.canRelocateClass( "org.foo.Class" ) );
56 assertEquals( true, relocator.canRelocateClass( "org.foo.bar.Class" ) );
57 assertEquals( false, relocator.canRelocateClass( "com.foo.bar.Class" ) );
58 assertEquals( false, relocator.canRelocateClass( "org.Foo.Class" ) );
59
60 relocator = new SimpleRelocator( "org.foo", null, null, Arrays.asList(
61 new String[]{ "org.foo.Excluded", "org.foo.public.*", "org.foo.Public*Stuff" } ) );
62 assertEquals( true, relocator.canRelocateClass( "org.foo.Class" ) );
63 assertEquals( true, relocator.canRelocateClass( "org.foo.excluded" ) );
64 assertEquals( false, relocator.canRelocateClass( "org.foo.Excluded" ) );
65 assertEquals( false, relocator.canRelocateClass( "org.foo.public" ) );
66 assertEquals( false, relocator.canRelocateClass( "org.foo.public.Class" ) );
67 assertEquals( true, relocator.canRelocateClass( "org.foo.publicRELOC.Class" ) );
68 assertEquals( true, relocator.canRelocateClass( "org.foo.PrivateStuff" ) );
69 assertEquals( false, relocator.canRelocateClass( "org.foo.PublicStuff" ) );
70 assertEquals( false, relocator.canRelocateClass( "org.foo.PublicUtilStuff" ) );
71 }
72
73 public void testCanRelocateRawString()
74 {
75 SimpleRelocator relocator;
76
77 relocator = new SimpleRelocator( "org/foo", null, null, null, true );
78 assertEquals( true, relocator.canRelocatePath( "(I)org/foo/bar/Class;" ) );
79
80 relocator = new SimpleRelocator( "^META-INF/org.foo.xml$", null, null, null, true );
81 assertEquals( true, relocator.canRelocatePath( "META-INF/org.foo.xml" ) );
82 }
83
84 public void testRelocatePath()
85 {
86 SimpleRelocator relocator;
87
88 relocator = new SimpleRelocator( "org.foo", null, null, null );
89 assertEquals( "hidden/org/foo/bar/Class.class", relocator.relocatePath( "org/foo/bar/Class.class" ) );
90
91 relocator = new SimpleRelocator( "org.foo", "private.stuff", null, null );
92 assertEquals( "private/stuff/bar/Class.class", relocator.relocatePath( "org/foo/bar/Class.class" ) );
93 }
94
95 public void testRelocateClass()
96 {
97 SimpleRelocator relocator;
98
99 relocator = new SimpleRelocator( "org.foo", null, null, null );
100 assertEquals( "hidden.org.foo.bar.Class", relocator.relocateClass( "org.foo.bar.Class" ) );
101
102 relocator = new SimpleRelocator( "org.foo", "private.stuff", null, null );
103 assertEquals( "private.stuff.bar.Class", relocator.relocateClass( "org.foo.bar.Class" ) );
104 }
105
106 public void testRelocateRawString()
107 {
108 SimpleRelocator relocator;
109
110 relocator = new SimpleRelocator( "Lorg/foo", "Lhidden/org/foo", null, null, true );
111 assertEquals( "(I)Lhidden/org/foo/bar/Class;", relocator.relocatePath( "(I)Lorg/foo/bar/Class;" ) );
112
113 relocator = new SimpleRelocator( "^META-INF/org.foo.xml$", "META-INF/hidden.org.foo.xml", null, null, true );
114 assertEquals( "META-INF/hidden.org.foo.xml", relocator.relocatePath( "META-INF/org.foo.xml" ) );
115 }
116 }