1 package org.apache.maven.plugin.war.overlay;
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 import org.apache.maven.plugin.testing.stubs.ArtifactStub;
23 import org.apache.maven.plugin.war.Overlay;
24 import org.apache.maven.plugin.war.stub.MavenProjectArtifactsStub;
25 import org.apache.maven.plugin.war.stub.WarArtifactStub;
26 import org.codehaus.plexus.PlexusTestCase;
27
28 import java.util.ArrayList;
29 import java.util.List;
30
31
32
33
34
35 public class OverlayManagerTest
36 extends PlexusTestCase
37 {
38
39 public static final String DEFAULT_INCLUDES = "**/**";
40
41 public static final String DEFAULT_EXCLUDES = "META-INF/MANIFEST.MF";
42
43
44 public void testEmptyProject()
45 throws Exception
46 {
47 final MavenProjectArtifactsStub project = new MavenProjectArtifactsStub();
48 final List overlays = new ArrayList();
49 try
50 {
51 final Overlay currentProjectOVerlay = Overlay.createInstance();
52 OverlayManager manager = new OverlayManager( overlays, project, DEFAULT_INCLUDES, DEFAULT_EXCLUDES,
53 currentProjectOVerlay );
54 assertNotNull( manager.getOverlays() );
55 assertEquals( 1, manager.getOverlays().size() );
56 assertEquals( currentProjectOVerlay, manager.getOverlays().get( 0 ) );
57 }
58 catch ( InvalidOverlayConfigurationException e )
59 {
60 e.printStackTrace();
61 fail( "Should not have failed to validate a valid overly config " + e.getMessage() );
62 }
63 }
64
65 public void testAutodetectSimpleOverlay( Overlay currentProjectOverlay )
66 throws Exception
67 {
68
69 final MavenProjectArtifactsStub project = new MavenProjectArtifactsStub();
70 final ArtifactStub first = newWarArtifact( "test", "test-webapp" );
71 project.addArtifact( first );
72
73 final List overlays = new ArrayList();
74
75 try
76 {
77 final Overlay overlay = currentProjectOverlay;
78 OverlayManager manager = new OverlayManager( overlays, project, DEFAULT_INCLUDES, DEFAULT_EXCLUDES,
79 overlay );
80 assertNotNull( manager.getOverlays() );
81 assertEquals( 2, manager.getOverlays().size() );
82 assertEquals( overlay, manager.getOverlays().get( 0 ) );
83 assertEquals( new DefaultOverlay( first ), manager.getOverlays().get( 1 ) );
84 }
85 catch ( InvalidOverlayConfigurationException e )
86 {
87 e.printStackTrace();
88 fail( "Should not have failed to validate a valid overlay config " + e.getMessage() );
89 }
90 }
91
92 public void testSimpleOverlay()
93 throws Exception
94 {
95
96 final MavenProjectArtifactsStub project = new MavenProjectArtifactsStub();
97 final ArtifactStub first = newWarArtifact( "test", "test-webapp" );
98 project.addArtifact( first );
99
100 final List overlays = new ArrayList();
101 overlays.add( new DefaultOverlay( first ) );
102
103 try
104 {
105 final Overlay currentProjectOverlay = Overlay.createInstance();
106 OverlayManager manager = new OverlayManager( overlays, project, DEFAULT_INCLUDES, DEFAULT_EXCLUDES,
107 currentProjectOverlay );
108 assertNotNull( manager.getOverlays() );
109 assertEquals( 2, manager.getOverlays().size() );
110 assertEquals( Overlay.createInstance(), manager.getOverlays().get( 0 ) );
111 assertEquals( overlays.get( 0 ), manager.getOverlays().get( 1 ) );
112 }
113 catch ( InvalidOverlayConfigurationException e )
114 {
115 e.printStackTrace();
116 fail( "Should not have failed to validate a valid overlay config " + e.getMessage() );
117 }
118 }
119
120 public void testUnknonwnOverlay()
121 throws Exception
122 {
123
124 final MavenProjectArtifactsStub project = new MavenProjectArtifactsStub();
125 final ArtifactStub first = newWarArtifact( "test", "test-webapp" );
126 project.addArtifact( first );
127
128 final List overlays = new ArrayList();
129 overlays.add( new Overlay( "test", "test-webapp-2" ) );
130
131 try
132 {
133 final Overlay currentProjectOVerlay = Overlay.createInstance();
134 new OverlayManager( overlays, project, DEFAULT_INCLUDES, DEFAULT_EXCLUDES, currentProjectOVerlay );
135 fail( "Should have failed to validate an unknown overlay" );
136 }
137 catch ( InvalidOverlayConfigurationException e )
138 {
139
140 }
141 }
142
143 public void testCustomCurrentProject()
144 throws Exception
145 {
146
147 final MavenProjectArtifactsStub project = new MavenProjectArtifactsStub();
148 final ArtifactStub first = newWarArtifact( "test", "test-webapp" );
149 final ArtifactStub second = newWarArtifact( "test", "test-webapp-2" );
150 project.addArtifact( first );
151 project.addArtifact( second );
152
153 final List overlays = new ArrayList();
154 overlays.add( new DefaultOverlay( first ) );
155 final Overlay currentProjectOverlay = Overlay.createInstance();
156 overlays.add( currentProjectOverlay );
157
158 try
159 {
160 OverlayManager manager = new OverlayManager( overlays, project, DEFAULT_INCLUDES, DEFAULT_EXCLUDES,
161 currentProjectOverlay );
162 assertNotNull( manager.getOverlays() );
163 assertEquals( 3, manager.getOverlays().size() );
164 assertEquals( overlays.get( 0 ), manager.getOverlays().get( 0 ) );
165 assertEquals( currentProjectOverlay, manager.getOverlays().get( 1 ) );
166 assertEquals( new DefaultOverlay( second ), manager.getOverlays().get( 2 ) );
167
168 }
169 catch ( InvalidOverlayConfigurationException e )
170 {
171 e.printStackTrace();
172 fail( "Should not have failed to validate a valid overlay config " + e.getMessage() );
173 }
174 }
175
176 public void testOverlaysWithSameArtifactAndGroupId()
177 throws Exception
178 {
179
180 final MavenProjectArtifactsStub project = new MavenProjectArtifactsStub();
181 final ArtifactStub first = newWarArtifact( "test", "test-webapp" );
182 final ArtifactStub second = newWarArtifact( "test", "test-webapp", "my-classifier" );
183
184 project.addArtifact( first );
185 project.addArtifact( second );
186
187 final List overlays = new ArrayList();
188 overlays.add( new DefaultOverlay( first ) );
189 overlays.add( new DefaultOverlay( second ) );
190
191 try
192 {
193 final Overlay currentProjectOverlay = Overlay.createInstance();
194 OverlayManager manager = new OverlayManager( overlays, project, DEFAULT_INCLUDES, DEFAULT_EXCLUDES,
195 currentProjectOverlay );
196 assertNotNull( manager.getOverlays() );
197 assertEquals( 3, manager.getOverlays().size() );
198 assertEquals( currentProjectOverlay, manager.getOverlays().get( 0 ) );
199 assertEquals( overlays.get( 0 ), manager.getOverlays().get( 1 ) );
200 assertEquals( overlays.get( 1 ), manager.getOverlays().get( 2 ) );
201
202 }
203 catch ( InvalidOverlayConfigurationException e )
204 {
205 e.printStackTrace();
206 fail( "Should not have failed to validate a valid overlay config " + e.getMessage() );
207 }
208 }
209
210
211 protected ArtifactStub newWarArtifact( String groupId, String artifactId, String classifier )
212 {
213 final WarArtifactStub a = new WarArtifactStub( getBasedir() );
214 a.setGroupId( groupId );
215 a.setArtifactId( artifactId );
216 if ( classifier != null )
217 {
218 a.setClassifier( classifier );
219 }
220 return a;
221 }
222
223 protected ArtifactStub newWarArtifact( String groupId, String artifactId )
224 {
225 return newWarArtifact( groupId, artifactId, null );
226
227 }
228 }