blob: dca39aad53c16e669bdcfac086a4823a2c686120 [file] [log] [blame]
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
package org.apache.maven.model.merge;
import java.util.Arrays;
import org.apache.maven.api.model.Contributor;
import org.apache.maven.api.model.Dependency;
import org.apache.maven.api.model.Model;
import org.apache.maven.model.v4.MavenMerger;
import org.junit.jupiter.api.Test;
import static org.hamcrest.MatcherAssert.assertThat;
import static org.hamcrest.Matchers.contains;
import static org.hamcrest.Matchers.is;
/**
* MavenMerger is based on same instances, subclasses should override KeyComputer per type
*
*
*/
class MavenMergerTest {
private MavenMerger mavenMerger = new MavenMerger();
@Test
void mergeArtifactId() {
Model target = Model.newBuilder().artifactId("TARGET").build();
Model source = Model.newBuilder().artifactId("SOURCE").build();
Model merged = mavenMerger.merge(target, source, true, null);
assertThat(merged.getArtifactId(), is("SOURCE"));
merged = mavenMerger.merge(target, source, false, null);
assertThat(merged.getArtifactId(), is("TARGET"));
}
@Test
void mergeSameContributors() {
Contributor contributor =
Contributor.newBuilder().email("contributor@maven.apache.org").build();
Model target =
Model.newBuilder().contributors(Arrays.asList(contributor)).build();
Model source =
Model.newBuilder().contributors(Arrays.asList(contributor)).build();
Model merged = mavenMerger.merge(target, source, true, null);
assertThat(merged.getContributors(), contains(contributor));
}
@Test
void mergeSameDependencies() {
Dependency dependency = Dependency.newBuilder()
.groupId("groupId")
.artifactId("artifactId")
.type("type")
.build();
Model target =
Model.newBuilder().dependencies(Arrays.asList(dependency)).build();
Model source =
Model.newBuilder().dependencies(Arrays.asList(dependency)).build();
Model merged = mavenMerger.merge(target, source, true, null);
assertThat(merged.getDependencies(), contains(dependency));
}
/*
@Test
public void mergeDescription()
{
Model target = new Model();
target.setDescription( "TARGET" );
Model source = new Model();
source.setDescription( "SOURCE" );
modelMerger.merge( target, source, true, null );
assertThat( target.getDescription(), is( "SOURCE" ) );
target.setDescription( "TARGET" );
modelMerger.merge( target, source, false, null );
assertThat( target.getDescription(), is( "TARGET" ) );
}
@Test
public void mergeSameDevelopers()
{
Developer developer = new Developer();
developer.setId( "devid" );
Model target = new Model();
target.setDevelopers( Arrays.asList( developer ) );
Model source = new Model();
source.setDevelopers( Arrays.asList( developer ) );
modelMerger.merge( target, source, true, null );
assertThat( target.getDevelopers(), contains( developer ) );
}
@Test
public void mergeSameExcludes()
{
PatternSet target = new PatternSet();
target.setExcludes( Arrays.asList( "first", "second", "third" ) );
PatternSet source = new PatternSet();
source.setExcludes( Arrays.asList( "first", "second", "third" ) );
modelMerger.mergePatternSet_Excludes( target, source, true, null );
assertThat( target.getExcludes(), contains( "first", "second", "third" ) );
}
@Test
public void mergeSameFilters()
{
Build target = new Build();
target.setFilters( Arrays.asList( "first", "second", "third" ) );
Build source = new Build();
source.setFilters( Arrays.asList( "first", "second", "third" ) );
modelMerger.mergeBuild( target, source, true, null );
assertThat( target.getFilters(), contains( "first", "second", "third" ) );
}
@Test
public void mergeSameGoals()
{
PluginExecution target = new PluginExecution();
target.setGoals( Arrays.asList( "first", "second", "third" ) );
PluginExecution source = new PluginExecution();
source.setGoals( Arrays.asList( "first", "second", "third" ) );
modelMerger.mergePluginExecution( target, source, true, null );
assertThat( target.getGoals(), contains( "first", "second", "third" ) );
}
@Test
public void mergeGroupId()
{
Model target = new Model();
target.setGroupId( "TARGET" );
Model source = new Model();
source.setGroupId( "SOURCE" );
modelMerger.merge( target, source, true, null );
assertThat( target.getGroupId(), is( "SOURCE" ) );
target.setGroupId( "TARGET" );
modelMerger.merge( target, source, false, null );
assertThat( target.getGroupId(), is( "TARGET" ) );
}
@Test
public void mergeInceptionYear()
{
Model target = new Model();
target.setInceptionYear( "TARGET" );
Model source = new Model();
source.setInceptionYear( "SOURCE" );
modelMerger.merge( target, source, true, null );
assertThat( target.getInceptionYear(), is( "SOURCE" ) );
target.setInceptionYear( "TARGET" );
modelMerger.merge( target, source, false, null );
assertThat( target.getInceptionYear(), is( "TARGET" ) );
}
@Test
public void mergeSameIncludes()
{
PatternSet target = new PatternSet();
target.setIncludes( Arrays.asList( "first", "second", "third" ) );
PatternSet source = new PatternSet();
source.setIncludes( Arrays.asList( "first", "second", "third" ) );
modelMerger.mergePatternSet_Includes( target, source, true, null );
assertThat( target.getIncludes(), contains( "first", "second", "third" ) );
}
@Test
public void mergeSameMailingLists()
{
MailingList mailingList = new MailingList();
mailingList.setName( "name" );
Model target = new Model();
target.setMailingLists( Arrays.asList( mailingList ) );
Model source = new Model();
source.setMailingLists( Arrays.asList( mailingList ) );
modelMerger.merge( target, source, true, null );
assertThat( target.getMailingLists(), contains( mailingList ) );
}
@Test
public void mergeModelVersion()
{
Model target = new Model();
target.setModelVersion( "TARGET" );
Model source = new Model();
source.setModelVersion( "SOURCE" );
modelMerger.merge( target, source, true, null );
assertThat( target.getModelVersion(), is( "SOURCE" ) );
target.setModelVersion( "TARGET" );;
modelMerger.merge( target, source, false, null );
assertThat( target.getModelVersion(), is( "TARGET" ) );
}
@Test
public void mergeSameModules()
{
Model target = new Model();
target.setModules( Arrays.asList( "first", "second", "third" ) );
Model source = new Model();
source.setModules( Arrays.asList( "first", "second", "third" ) );
modelMerger.merge( target, source, true, null );
assertThat( target.getModules(), contains( "first", "second", "third" ) );
}
@Test
public void mergeName()
{
Model target = new Model();
target.setName( "TARGET" );
Model source = new Model();
source.setName( "SOURCE" );
modelMerger.merge( target, source, true, null );
assertThat( target.getName(), is( "SOURCE" ) );
target.setName( "TARGET" );;
modelMerger.merge( target, source, false, null );
assertThat( target.getName(), is( "TARGET" ) );
}
@Test
public void mergeSameOtherArchives()
{
MailingList target = new MailingList();
target.setOtherArchives( Arrays.asList( "first", "second", "third" ) );
MailingList source = new MailingList();
source.setOtherArchives( Arrays.asList( "first", "second", "third" ) );
modelMerger.mergeMailingList( target, source, true, null );
assertThat( target.getOtherArchives(), contains( "first", "second", "third" ) );
}
@Test
public void mergePackaging()
{
Model target = new Model();
target.setPackaging( "TARGET" );
Model source = new Model();
source.setPackaging( "SOURCE" );
modelMerger.merge( target, source, true, null );
assertThat( target.getPackaging(), is( "SOURCE" ) );
target.setPackaging( "TARGET" );;
modelMerger.merge( target, source, false, null );
assertThat( target.getPackaging(), is( "TARGET" ) );
}
@Test
public void mergeSamePluginRepositories()
{
Repository repository = new Repository();
repository.setId( "repository" );
Model target = new Model();
target.setPluginRepositories( Arrays.asList( repository ) );
Model source = new Model();
source.setPluginRepositories( Arrays.asList( repository ) );
modelMerger.merge( target, source, true, null );
assertThat( target.getPluginRepositories(), contains( repository ) );
}
@Test
public void mergeSameProfiles()
{
Profile profile = new Profile();
profile.setId( "profile" );
Model target = new Model();
target.setProfiles( Arrays.asList( profile ) );
Model source = new Model();
source.setProfiles( Arrays.asList( profile ) );
modelMerger.merge( target, source, true, null );
assertThat( target.getProfiles(), contains( profile ) );
}
@Test
public void mergeSameReports()
{
ReportSet target = new ReportSet();
target.setReports( Arrays.asList( "first", "second", "third" ) );
ReportSet source = new ReportSet();
source.setReports( Arrays.asList( "first", "second", "third" ) );
modelMerger.mergeReportSet( target, source, true, null );
assertThat( target.getReports(), contains( "first", "second", "third" ) );
}
@Test
public void mergeSameRepositories()
{
Repository repository = new Repository();
repository.setId( "repository" );
Model target = new Model();
target.setRepositories( Arrays.asList( repository ) );
Model source = new Model();
source.setRepositories( Arrays.asList( repository ) );
modelMerger.merge( target, source, true, null );
assertThat( target.getRepositories(), contains( repository ) );
}
@Test
public void mergeSameRoles()
{
Contributor target = new Contributor();
target.setRoles( Arrays.asList( "first", "second", "third" ) );
Contributor source = new Contributor();
source.setRoles( Arrays.asList( "first", "second", "third" ) );
modelMerger.mergeContributor_Roles( target, source, true, null );
assertThat( target.getRoles(), contains( "first", "second", "third" ) );
}
@Test
public void mergeUrl()
{
Model target = new Model();
target.setUrl( "TARGET" );;
Model source = new Model();
source.setUrl( "SOURCE" );
modelMerger.merge( target, source, true, null );
assertThat( target.getUrl(), is( "SOURCE" ) );
target.setUrl( "TARGET" );;
modelMerger.merge( target, source, false, null );
assertThat( target.getUrl(), is( "TARGET" ) );
}
@Test
public void mergeVersion()
{
Model target = new Model();
target.setVersion( "TARGET" );;
Model source = new Model();
source.setVersion( "SOURCE" );
modelMerger.merge( target, source, true, null );
assertThat( target.getVersion(), is( "SOURCE" ) );
target.setVersion( "TARGET" );;
modelMerger.merge( target, source, false, null );
assertThat( target.getVersion(), is( "TARGET" ) );
}
@Test
public void testMergedModelSerialization() throws Exception {
Model target = new Model();
Model source = new Model();
target.setLicenses(new ArrayList<License>());
License lic1 = new License();
License lic2 = new License();
target.getLicenses().add(lic1);
source.setLicenses(new ArrayList<License>());
source.getLicenses().add(lic2);
new MavenMerger().mergeModel(target, source, false, null);
ByteArrayOutputStream baos = new ByteArrayOutputStream();
ObjectOutputStream oos = new ObjectOutputStream(baos);
oos.writeObject(target);
}
*/
}