View Javadoc

1   package org.apache.maven.plugin.invoker;
2   
3   /*
4    * Licensed to the Apache Software Foundation (ASF) under one
5    * or more contributor license agreements.  See the NOTICE file
6    * distributed with this work for additional information
7    * regarding copyright ownership.  The ASF licenses this file
8    * to you under the Apache License, Version 2.0 (the
9    * "License"); you may not use this file except in compliance
10   * with the License.  You may obtain a copy of the License at
11   *
12   *  http://www.apache.org/licenses/LICENSE-2.0
13   *
14   * Unless required by applicable law or agreed to in writing,
15   * software distributed under the License is distributed on an
16   * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
17   * KIND, either express or implied.  See the License for the
18   * specific language governing permissions and limitations
19   * under the License.
20   */
21  
22  import java.io.File;
23  import java.util.Arrays;
24  import java.util.Collections;
25  import java.util.Properties;
26  
27  import org.apache.maven.shared.invoker.DefaultInvocationRequest;
28  import org.apache.maven.shared.invoker.InvocationRequest;
29  
30  import junit.framework.TestCase;
31  
32  /**
33   * Tests the invoker properties facade.
34   * 
35   * @author Benjamin Bentmann
36   * @version $Id: InvokerPropertiesTest.java 735456 2009-01-18 13:40:12Z bentmann $
37   */
38  public class InvokerPropertiesTest
39      extends TestCase
40  {
41  
42      public void testConstructorNullSafe()
43          throws Exception
44      {
45          InvokerProperties facade = new InvokerProperties( null );
46          assertNotNull( facade.getProperties() );
47      }
48  
49      public void testGetInvokerProperty()
50          throws Exception
51      {
52          Properties props = new Properties();
53          InvokerProperties facade = new InvokerProperties( props );
54  
55          assertNull( facade.get( "undefined-key", 0 ) );
56  
57          props.setProperty( "key", "value" );
58          assertEquals( "value", facade.get( "key", 1 ) );
59  
60          props.setProperty( "key.1", "another-value" );
61          assertEquals( "another-value", facade.get( "key", 1 ) );
62          assertEquals( "value", facade.get( "key", 2 ) );
63      }
64  
65      public void testIsExpectedResult()
66          throws Exception
67      {
68          Properties props = new Properties();
69          InvokerProperties facade = new InvokerProperties( props );
70  
71          assertTrue( facade.isExpectedResult( 0, 0 ) );
72          assertFalse( facade.isExpectedResult( 1, 0 ) );
73  
74          props.setProperty( "invoker.buildResult", "success" );
75          assertTrue( facade.isExpectedResult( 0, 0 ) );
76          assertFalse( facade.isExpectedResult( 1, 0 ) );
77  
78          props.setProperty( "invoker.buildResult", "failure" );
79          assertFalse( facade.isExpectedResult( 0, 0 ) );
80          assertTrue( facade.isExpectedResult( 1, 0 ) );
81      }
82  
83      public void testConfigureRequestGoals()
84          throws Exception
85      {
86          Properties props = new Properties();
87          InvokerProperties facade = new InvokerProperties( props );
88  
89          InvocationRequest request = new DefaultInvocationRequest();
90  
91          request.setGoals( Collections.singletonList( "test" ) );
92          facade.configureInvocation( request, 0 );
93          assertEquals( Collections.singletonList( "test" ), request.getGoals() );
94  
95          props.setProperty( "invoker.goals", "verify" );
96          facade.configureInvocation( request, 0 );
97          assertEquals( Collections.singletonList( "verify" ), request.getGoals() );
98  
99          props.setProperty( "invoker.goals", "   " );
100         facade.configureInvocation( request, 0 );
101         assertEquals( Arrays.asList( new String[0] ), request.getGoals() );
102 
103         props.setProperty( "invoker.goals", "  clean , test   verify  " );
104         facade.configureInvocation( request, 0 );
105         assertEquals( Arrays.asList( new String[] { "clean", "test", "verify" } ), request.getGoals() );
106 
107         props.setProperty( "invoker.goals", "" );
108         facade.configureInvocation( request, 0 );
109         assertEquals( Arrays.asList( new String[0] ), request.getGoals() );
110     }
111 
112     public void testConfigureRequestProfiles()
113         throws Exception
114     {
115         Properties props = new Properties();
116         InvokerProperties facade = new InvokerProperties( props );
117 
118         InvocationRequest request = new DefaultInvocationRequest();
119 
120         request.setProfiles( Collections.singletonList( "test" ) );
121         facade.configureInvocation( request, 0 );
122         assertEquals( Collections.singletonList( "test" ), request.getProfiles() );
123 
124         props.setProperty( "invoker.profiles", "verify" );
125         facade.configureInvocation( request, 0 );
126         assertEquals( Collections.singletonList( "verify" ), request.getProfiles() );
127 
128         props.setProperty( "invoker.profiles", "   " );
129         facade.configureInvocation( request, 0 );
130         assertEquals( Arrays.asList( new String[0] ), request.getProfiles() );
131 
132         props.setProperty( "invoker.profiles", "  clean , test   verify  ," );
133         facade.configureInvocation( request, 0 );
134         assertEquals( Arrays.asList( new String[] { "clean", "test", "verify" } ), request.getProfiles() );
135 
136         props.setProperty( "invoker.profiles", "" );
137         facade.configureInvocation( request, 0 );
138         assertEquals( Arrays.asList( new String[0] ), request.getProfiles() );
139     }
140 
141     public void testConfigureRequestProject()
142         throws Exception
143     {
144         Properties props = new Properties();
145         InvokerProperties facade = new InvokerProperties( props );
146 
147         InvocationRequest request = new DefaultInvocationRequest();
148 
149         File tempPom = File.createTempFile( "maven-invoker-plugin-test", ".pom" );
150         File tempDir = tempPom.getParentFile();
151 
152         request.setBaseDirectory( tempDir );
153         facade.configureInvocation( request, 0 );
154         assertEquals( tempDir, request.getBaseDirectory() );
155         assertEquals( null, request.getPomFile() );
156 
157         props.setProperty( "invoker.project", tempPom.getName() );
158         request.setBaseDirectory( tempDir );
159         facade.configureInvocation( request, 0 );
160         assertEquals( tempDir, request.getBaseDirectory() );
161         assertEquals( tempPom, request.getPomFile() );
162 
163         props.setProperty( "invoker.project", "" );
164         request.setBaseDirectory( tempDir );
165         facade.configureInvocation( request, 0 );
166         assertEquals( tempDir, request.getBaseDirectory() );
167         assertEquals( null, request.getPomFile() );
168 
169         tempPom.delete();
170     }
171 
172     public void testConfigureRequestMavenOpts()
173         throws Exception
174     {
175         Properties props = new Properties();
176         InvokerProperties facade = new InvokerProperties( props );
177 
178         InvocationRequest request = new DefaultInvocationRequest();
179 
180         request.setMavenOpts( "default" );
181         facade.configureInvocation( request, 0 );
182         assertEquals( "default", request.getMavenOpts() );
183 
184         props.setProperty( "invoker.mavenOpts", "-Xmx512m" );
185         facade.configureInvocation( request, 0 );
186         assertEquals( "-Xmx512m", request.getMavenOpts() );
187     }
188 
189     public void testConfigureRequestFailureBehavior()
190         throws Exception
191     {
192         Properties props = new Properties();
193         InvokerProperties facade = new InvokerProperties( props );
194 
195         InvocationRequest request = new DefaultInvocationRequest();
196 
197         request.setFailureBehavior( "fail-at-end" );
198         facade.configureInvocation( request, 0 );
199         assertEquals( "fail-at-end", request.getFailureBehavior() );
200 
201         props.setProperty( "invoker.failureBehavior", "fail-never" );
202         facade.configureInvocation( request, 0 );
203         assertEquals( "fail-never", request.getFailureBehavior() );
204     }
205 
206     public void testConfigureRequestRecursion()
207         throws Exception
208     {
209         Properties props = new Properties();
210         InvokerProperties facade = new InvokerProperties( props );
211 
212         InvocationRequest request = new DefaultInvocationRequest();
213 
214         request.setRecursive( true );
215         facade.configureInvocation( request, 0 );
216         assertTrue( request.isRecursive() );
217         request.setRecursive( false );
218         facade.configureInvocation( request, 0 );
219         assertFalse( request.isRecursive() );
220 
221         props.setProperty( "invoker.nonRecursive", "true" );
222         facade.configureInvocation( request, 0 );
223         assertFalse( request.isRecursive() );
224 
225         props.setProperty( "invoker.nonRecursive", "false" );
226         facade.configureInvocation( request, 0 );
227         assertTrue( request.isRecursive() );
228     }
229 
230     public void testConfigureRequestOffline()
231         throws Exception
232     {
233         Properties props = new Properties();
234         InvokerProperties facade = new InvokerProperties( props );
235 
236         InvocationRequest request = new DefaultInvocationRequest();
237 
238         request.setOffline( true );
239         facade.configureInvocation( request, 0 );
240         assertTrue( request.isOffline() );
241         request.setOffline( false );
242         facade.configureInvocation( request, 0 );
243         assertFalse( request.isOffline() );
244 
245         props.setProperty( "invoker.offline", "true" );
246         facade.configureInvocation( request, 0 );
247         assertTrue( request.isOffline() );
248 
249         props.setProperty( "invoker.offline", "false" );
250         facade.configureInvocation( request, 0 );
251         assertFalse( request.isOffline() );
252     }
253 
254 }