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