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