001    package org.apache.maven.profiles.manager;
002    
003    /*
004     * Licensed to the Apache Software Foundation (ASF) under one
005     * or more contributor license agreements.  See the NOTICE file
006     * distributed with this work for additional information
007     * regarding copyright ownership.  The ASF licenses this file
008     * to you under the Apache License, Version 2.0 (the
009     * "License"); you may not use this file except in compliance
010     * with the License.  You may obtain a copy of the License at
011     *
012     *  http://www.apache.org/licenses/LICENSE-2.0
013     *
014     * Unless required by applicable law or agreed to in writing,
015     * software distributed under the License is distributed on an
016     * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
017     * KIND, either express or implied.  See the License for the
018     * specific language governing permissions and limitations
019     * under the License.
020     */
021    
022    import java.util.List;
023    import java.util.Properties;
024    
025    import org.apache.maven.model.Activation;
026    import org.apache.maven.model.ActivationProperty;
027    import org.apache.maven.model.Profile;
028    import org.apache.maven.profiles.DefaultProfileManager;
029    import org.apache.maven.profiles.ProfileManager;
030    import org.codehaus.plexus.PlexusTestCase;
031    
032    public class DefaultProfileManagerTest
033        extends PlexusTestCase
034    {
035    
036        public void setUp()
037            throws Exception
038        {
039            super.setUp();
040        }
041    
042        public void testShouldActivateDefaultProfile()
043            throws Exception
044        {
045            Profile notActivated = new Profile();
046            notActivated.setId( "notActivated" );
047    
048            Activation nonActivation = new Activation();
049    
050            nonActivation.setJdk( "19.2" );
051    
052            notActivated.setActivation( nonActivation );
053    
054            Profile defaultActivated = new Profile();
055            defaultActivated.setId( "defaultActivated" );
056    
057            Activation defaultActivation = new Activation();
058    
059            defaultActivation.setActiveByDefault( true );
060    
061            defaultActivated.setActivation( defaultActivation );
062    
063            Properties props = System.getProperties();
064    
065            ProfileManager profileManager = new DefaultProfileManager( getContainer(), props );
066    
067            profileManager.addProfile( notActivated );
068            profileManager.addProfile( defaultActivated );
069    
070            List active = profileManager.getActiveProfiles();
071    
072            assertNotNull( active );
073            assertEquals( 1, active.size() );
074            assertEquals( "defaultActivated", ( (Profile) active.get( 0 ) ).getId() );
075        }
076    
077        public void testShouldNotActivateDefaultProfile()
078            throws Exception
079        {
080            Profile syspropActivated = new Profile();
081            syspropActivated.setId( "syspropActivated" );
082    
083            Activation syspropActivation = new Activation();
084    
085            ActivationProperty syspropProperty = new ActivationProperty();
086            syspropProperty.setName( "java.version" );
087    
088            syspropActivation.setProperty( syspropProperty );
089    
090            syspropActivated.setActivation( syspropActivation );
091    
092            Profile defaultActivated = new Profile();
093            defaultActivated.setId( "defaultActivated" );
094    
095            Activation defaultActivation = new Activation();
096    
097            defaultActivation.setActiveByDefault( true );
098    
099            defaultActivated.setActivation( defaultActivation );
100    
101            Properties props = System.getProperties();
102    
103            ProfileManager profileManager = new DefaultProfileManager( getContainer(), props );
104    
105            profileManager.addProfile( syspropActivated );
106            profileManager.addProfile( defaultActivated );
107    
108            List active = profileManager.getActiveProfiles();
109    
110            assertNotNull( active );
111            assertEquals( 1, active.size() );
112            assertEquals( "syspropActivated", ( (Profile) active.get( 0 ) ).getId() );
113        }
114        
115    
116        public void testShouldNotActivateReversalOfPresentSystemProperty()
117            throws Exception
118        {
119            Profile syspropActivated = new Profile();
120            syspropActivated.setId( "syspropActivated" );
121    
122            Activation syspropActivation = new Activation();
123    
124            ActivationProperty syspropProperty = new ActivationProperty();
125            syspropProperty.setName( "!java.version" );
126    
127            syspropActivation.setProperty( syspropProperty );
128    
129            syspropActivated.setActivation( syspropActivation );
130    
131            Properties props = System.getProperties();
132    
133            ProfileManager profileManager = new DefaultProfileManager( getContainer(), props );
134    
135            profileManager.addProfile( syspropActivated );
136    
137            List active = profileManager.getActiveProfiles();
138    
139            assertNotNull( active );
140            assertEquals( 0, active.size() );
141        }
142    
143        public void testShouldOverrideAndActivateInactiveProfile()
144            throws Exception
145        {
146            Profile syspropActivated = new Profile();
147            syspropActivated.setId( "syspropActivated" );
148    
149            Activation syspropActivation = new Activation();
150    
151            ActivationProperty syspropProperty = new ActivationProperty();
152            syspropProperty.setName( "!java.version" );
153    
154            syspropActivation.setProperty( syspropProperty );
155    
156            syspropActivated.setActivation( syspropActivation );
157    
158            Properties props = System.getProperties();
159    
160            ProfileManager profileManager = new DefaultProfileManager( getContainer(), props );
161    
162            profileManager.addProfile( syspropActivated );
163    
164            profileManager.explicitlyActivate( "syspropActivated" );
165    
166            List active = profileManager.getActiveProfiles();
167    
168            assertNotNull( active );
169            assertEquals( 1, active.size() );
170            assertEquals( "syspropActivated", ( (Profile) active.get( 0 ) ).getId() );
171        }
172    
173        public void testShouldOverrideAndDeactivateActiveProfile()
174            throws Exception
175        {
176            Profile syspropActivated = new Profile();
177            syspropActivated.setId( "syspropActivated" );
178    
179            Activation syspropActivation = new Activation();
180    
181            ActivationProperty syspropProperty = new ActivationProperty();
182            syspropProperty.setName( "java.version" );
183    
184            syspropActivation.setProperty( syspropProperty );
185    
186            syspropActivated.setActivation( syspropActivation );
187    
188            Properties props = System.getProperties();
189    
190            ProfileManager profileManager = new DefaultProfileManager( getContainer(), props );
191    
192            profileManager.addProfile( syspropActivated );
193    
194            profileManager.explicitlyDeactivate( "syspropActivated" );
195    
196            List active = profileManager.getActiveProfiles();
197    
198            assertNotNull( active );
199            assertEquals( 0, active.size() );
200        }
201    /*
202        public void testOsActivationProfile()
203            throws Exception
204        {
205            Profile osActivated = new Profile();
206            osActivated.setId( "os-profile" );
207    
208            Activation osActivation = new Activation();
209    
210            ActivationOS activationOS = new ActivationOS();
211    
212            activationOS.setName( "!dddd" );
213    
214            osActivation.setOs( activationOS );
215    
216            osActivated.setActivation( osActivation );
217    
218            Properties props = System.getProperties();
219            ProfileActivationContext ctx = new ProfileActivationContext( props, false );
220    
221            ProfileManager profileManager = new DefaultProfileManager( getContainer(), props );
222    
223            profileManager.addProfile( osActivated );
224    
225            List active = profileManager.getActiveProfiles( null );
226    
227            assertNotNull( active );
228            assertEquals( 1, active.size() );
229        }
230        */
231    
232    }