View Javadoc

1   package org.apache.maven.it;
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  
24  import org.apache.maven.it.Verifier;
25  import org.apache.maven.it.util.ResourceExtractor;
26  
27  /**
28   * This is a test set for <a href="http://jira.codehaus.org/browse/MNG-3545">MNG-3545</a>:
29   * it tests activation and deactivation of profiles.
30   * 
31   */
32  public class MavenITmng3545ProfileDeactivationTest
33      extends AbstractMavenIntegrationTestCase
34  {
35  
36      public MavenITmng3545ProfileDeactivationTest()
37      {
38          super( "(2.0.9,)" );
39      }
40  
41      /**
42       * Test build with two active by default profiles
43       * 
44       */
45      public void testBasicBuildWithDefaultProfiles()
46          throws Exception
47      {
48          File testDir = ResourceExtractor.simpleExtractResources( getClass(), "/mng-3545" );
49  
50          Verifier verifier = newVerifier( testDir.getAbsolutePath() );
51          verifier.setAutoclean( false );
52          verifier.deleteDirectory( "target" );
53          verifier.setLogFileName( "log1.txt" );
54  
55          verifier.executeGoal( "validate" );
56  
57          verifier.verifyErrorFreeLog();
58          // profile 1 and 2 are active by default
59          verifier.assertFilePresent( "target/profile1/touch.txt" );
60          verifier.assertFilePresent( "target/profile2/touch.txt" );
61          verifier.assertFileNotPresent( "target/profile3/touch.txt" );
62          verifier.assertFileNotPresent( "target/profile4/touch.txt" );
63          verifier.assertFileNotPresent( "target/profile5/touch.txt" );
64          verifier.resetStreams();
65      }
66  
67      /**
68       * Test command line deactivation of active by default profiles.
69       * 
70       */
71      public void testDeactivateDefaultProfilesDash()
72          throws Exception
73      {
74          File testDir = ResourceExtractor.simpleExtractResources( getClass(), "/mng-3545" );
75  
76          Verifier verifier = newVerifier( testDir.getAbsolutePath() );
77          verifier.setAutoclean( false );
78          verifier.deleteDirectory( "target" );
79          verifier.setLogFileName( "log2.txt" );
80  
81          // Deactivate active by default profiles
82          verifier.getCliOptions().add( "-P-profile1" );
83          verifier.getCliOptions().add( "-P -profile2" );
84  
85          verifier.executeGoal( "validate" );
86  
87          verifier.verifyErrorFreeLog();
88          verifier.assertFileNotPresent( "target/profile1/touch.txt" );
89          verifier.assertFileNotPresent( "target/profile2/touch.txt" );
90          verifier.resetStreams();
91      }
92  
93      public void testDeactivateDefaultProfilesExclamation()
94          throws Exception
95      {
96          File testDir = ResourceExtractor.simpleExtractResources( getClass(), "/mng-3545" );
97  
98          Verifier verifier = newVerifier( testDir.getAbsolutePath() );
99          verifier.setAutoclean( false );
100         verifier.deleteDirectory( "target" );
101         verifier.setLogFileName( "log3.txt" );
102 
103         // Deactivate active by default profiles
104         verifier.getCliOptions().add( "-P!profile1" );
105         verifier.getCliOptions().add( "-P !profile2" );
106 
107         verifier.executeGoal( "validate" );
108 
109         verifier.verifyErrorFreeLog();
110         verifier.assertFileNotPresent( "target/profile1/touch.txt" );
111         verifier.assertFileNotPresent( "target/profile2/touch.txt" );
112         verifier.resetStreams();
113     }
114 
115     /**
116      * Test command line deactivation of a profile that was activated
117      * by a property
118      * 
119      */
120     public void testDeactivateActivatedByProp()
121         throws Exception
122     {
123         File testDir = ResourceExtractor.simpleExtractResources( getClass(), "/mng-3545" );
124 
125         Verifier verifier = newVerifier( testDir.getAbsolutePath() );
126         verifier.setAutoclean( false );
127         verifier.deleteDirectory( "target" );
128         verifier.setLogFileName( "log4.txt" );
129 
130         // Activate with a prop, then deactivate
131         verifier.getCliOptions().add( "-Dprofile3-active-by-property=true" );
132         verifier.getCliOptions().add( "-P-profile3" );
133 
134         verifier.executeGoal( "validate" );
135 
136         verifier.verifyErrorFreeLog();
137         verifier.assertFilePresent( "target/profile1/touch.txt" );
138         verifier.assertFilePresent( "target/profile2/touch.txt" );
139         verifier.assertFileNotPresent( "target/profile3/touch.txt" );
140         verifier.assertFileNotPresent( "target/profile4/touch.txt" );
141         verifier.assertFileNotPresent( "target/profile5/touch.txt" );
142         verifier.resetStreams();
143     }
144 
145     /**
146      * Test that deactivating from the command line takes priority over
147      * activating from the command line.
148      * 
149      */
150     public void testActivateThenDeactivate()
151         throws Exception
152     {
153         File testDir = ResourceExtractor.simpleExtractResources( getClass(), "/mng-3545" );
154 
155         Verifier verifier = newVerifier( testDir.getAbsolutePath() );
156         verifier.setAutoclean( false );
157         verifier.deleteDirectory( "target" );
158         verifier.setLogFileName( "log5.txt" );
159 
160         // Activate then deactivate
161         verifier.getCliOptions().add( "-Pprofile4" );
162         verifier.getCliOptions().add( "-P-profile4" );
163 
164         verifier.executeGoal( "validate" );
165 
166         verifier.verifyErrorFreeLog();
167         verifier.assertFilePresent( "target/profile1/touch.txt" );
168         verifier.assertFilePresent( "target/profile2/touch.txt" );
169         verifier.assertFileNotPresent( "target/profile3/touch.txt" );
170         verifier.assertFileNotPresent( "target/profile4/touch.txt" );
171         verifier.assertFileNotPresent( "target/profile5/touch.txt" );
172         verifier.resetStreams();
173     }
174 
175     /**
176      * Test that default profiles are deactivated when another profile is
177      * activated.
178      * 
179      */
180     public void testDefaultProfileAutoDeactivation()
181         throws Exception
182     {
183         File testDir = ResourceExtractor.simpleExtractResources( getClass(), "/mng-3545" );
184 
185         Verifier verifier = newVerifier( testDir.getAbsolutePath() );
186         verifier.setAutoclean( false );
187         verifier.deleteDirectory( "target" );
188         verifier.setLogFileName( "log6.txt" );
189 
190         // Activate
191         verifier.getCliOptions().add( "-Pprofile4" );
192 
193         verifier.executeGoal( "validate" );
194 
195         verifier.verifyErrorFreeLog();
196         verifier.assertFileNotPresent( "target/profile1/touch.txt" );
197         verifier.assertFileNotPresent( "target/profile2/touch.txt" );
198         verifier.assertFileNotPresent( "target/profile3/touch.txt" );
199         verifier.assertFilePresent( "target/profile4/touch.txt" );
200         verifier.assertFileNotPresent( "target/profile5/touch.txt" );
201         verifier.resetStreams();
202     }
203 
204 }