001 package org.apache.maven.settings;
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 junit.framework.TestCase;
023
024 import java.util.ArrayList;
025 import java.util.List;
026 import java.util.Properties;
027 import java.util.Random;
028
029 public class SettingsUtilsTest
030 extends TestCase
031 {
032
033 public void testShouldAppendRecessivePluginGroupIds()
034 {
035 Settings dominant = new Settings();
036 dominant.addPluginGroup( "org.apache.maven.plugins" );
037 dominant.addPluginGroup( "org.codehaus.modello" );
038
039 Settings recessive = new Settings();
040 recessive.addPluginGroup( "org.codehaus.plexus" );
041
042 SettingsUtils.merge( dominant, recessive, Settings.GLOBAL_LEVEL );
043
044 List<String> pluginGroups = dominant.getPluginGroups();
045
046 assertNotNull( pluginGroups );
047 assertEquals( 3, pluginGroups.size() );
048 assertEquals( "org.apache.maven.plugins", pluginGroups.get( 0 ) );
049 assertEquals( "org.codehaus.modello", pluginGroups.get( 1 ) );
050 assertEquals( "org.codehaus.plexus", pluginGroups.get( 2 ) );
051 }
052
053 public void testRoundTripProfiles()
054 {
055 Random entropy = new Random();
056 Profile p = new Profile();
057 p.setId( "id" + Long.toHexString( entropy.nextLong() ) );
058 Activation a = new Activation();
059 a.setActiveByDefault( entropy.nextBoolean() );
060 a.setJdk( "jdk" + Long.toHexString( entropy.nextLong() ) );
061 ActivationFile af = new ActivationFile();
062 af.setExists( "exists" + Long.toHexString( entropy.nextLong() ) );
063 af.setMissing( "missing" + Long.toHexString( entropy.nextLong() ) );
064 a.setFile( af );
065 ActivationProperty ap = new ActivationProperty();
066 ap.setName( "name" + Long.toHexString( entropy.nextLong() ) );
067 ap.setValue( "value" + Long.toHexString( entropy.nextLong() ) );
068 a.setProperty( ap );
069 ActivationOS ao = new ActivationOS();
070 ao.setArch( "arch" + Long.toHexString( entropy.nextLong() ) );
071 ao.setFamily( "family" + Long.toHexString( entropy.nextLong() ) );
072 ao.setName( "name" + Long.toHexString( entropy.nextLong() ) );
073 ao.setVersion( "version" + Long.toHexString( entropy.nextLong() ) );
074 a.setOs( ao );
075 p.setActivation( a );
076 Properties props = new Properties();
077 int count = entropy.nextInt( 10 );
078 for ( int i = 0; i < count; i++ )
079 {
080 props.setProperty( "name" + Long.toHexString( entropy.nextLong() ),
081 "value" + Long.toHexString( entropy.nextLong() ) );
082 }
083 p.setProperties( props );
084 count = entropy.nextInt( 3 );
085 List<Repository> repos = new ArrayList<Repository>();
086 for ( int i = 0; i < count; i++ )
087 {
088 Repository r = new Repository();
089 r.setId( "id" + Long.toHexString( entropy.nextLong() ) );
090 r.setName( "name" + Long.toHexString( entropy.nextLong() ) );
091 r.setUrl( "url" + Long.toHexString( entropy.nextLong() ) );
092 repos.add( r );
093 }
094 p.setRepositories( repos );
095 count = entropy.nextInt( 3 );
096 repos = new ArrayList<Repository>();
097 for ( int i = 0; i < count; i++ )
098 {
099 Repository r = new Repository();
100 r.setId( "id" + Long.toHexString( entropy.nextLong() ) );
101 r.setName( "name" + Long.toHexString( entropy.nextLong() ) );
102 r.setUrl( "url" + Long.toHexString( entropy.nextLong() ) );
103 repos.add( r );
104 }
105 p.setPluginRepositories( repos );
106
107 Profile clone = SettingsUtils.convertToSettingsProfile( SettingsUtils.convertFromSettingsProfile( p ) );
108
109 assertEquals( p.getId(), clone.getId() );
110 assertEquals( p.getActivation().getJdk(), clone.getActivation().getJdk() );
111 assertEquals( p.getActivation().getFile().getExists(), clone.getActivation().getFile().getExists() );
112 assertEquals( p.getActivation().getFile().getMissing(), clone.getActivation().getFile().getMissing() );
113 assertEquals( p.getActivation().getProperty().getName(), clone.getActivation().getProperty().getName() );
114 assertEquals( p.getActivation().getProperty().getValue(), clone.getActivation().getProperty().getValue() );
115 assertEquals( p.getActivation().getOs().getArch(), clone.getActivation().getOs().getArch() );
116 assertEquals( p.getActivation().getOs().getFamily(), clone.getActivation().getOs().getFamily() );
117 assertEquals( p.getActivation().getOs().getName(), clone.getActivation().getOs().getName() );
118 assertEquals( p.getActivation().getOs().getVersion(), clone.getActivation().getOs().getVersion() );
119 assertEquals( p.getProperties(), clone.getProperties() );
120 assertEquals( p.getRepositories().size(), clone.getRepositories().size() );
121 // TODO deep compare the lists
122 assertEquals( p.getPluginRepositories().size(), clone.getPluginRepositories().size() );
123 // TODO deep compare the lists
124 }
125
126 }