View Javadoc

1   package org.apache.maven.plugins.shade.relocation;
2   
3   import junit.framework.TestCase;
4   
5   import java.util.Arrays;
6   
7   /**
8    * Test for {@link SimpleRelocator}.
9    *
10   * @author Benjamin Bentmann
11   * @version $Id: SimpleRelocatorTest.html 816646 2012-05-08 13:48:12Z hboutemy $
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 }