View Javadoc
1   /*
2    * Licensed to the Apache Software Foundation (ASF) under one
3    * or more contributor license agreements.  See the NOTICE file
4    * distributed with this work for additional information
5    * regarding copyright ownership.  The ASF licenses this file
6    * to you under the Apache License, Version 2.0 (the
7    * "License"); you may not use this file except in compliance
8    * with the License.  You may obtain a copy of the License at
9    *
10   *   http://www.apache.org/licenses/LICENSE-2.0
11   *
12   * Unless required by applicable law or agreed to in writing,
13   * software distributed under the License is distributed on an
14   * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
15   * KIND, either express or implied.  See the License for the
16   * specific language governing permissions and limitations
17   * under the License.
18   */
19  package org.apache.maven.model.merge;
20  
21  import java.util.Collections;
22  
23  import org.apache.maven.api.model.Model;
24  import org.apache.maven.api.model.Prerequisites;
25  import org.apache.maven.api.model.Profile;
26  import org.junit.jupiter.api.Test;
27  
28  import static org.junit.jupiter.api.Assertions.assertEquals;
29  import static org.junit.jupiter.api.Assertions.assertNull;
30  
31  public class MavenModelMergerTest {
32      private MavenModelMerger modelMerger = new MavenModelMerger();
33  
34      // modelVersion is neither inherited nor injected
35      @Test
36      public void testMergeModel_ModelVersion() {
37          Model parent = Model.newBuilder().modelVersion("4.0.0").build();
38          Model model = Model.newInstance();
39          Model.Builder builder = Model.newBuilder(model);
40          modelMerger.mergeModel_ModelVersion(builder, model, parent, false, null);
41          assertNull(builder.build().getModelVersion());
42  
43          model = Model.newBuilder().modelVersion("5.0.0").build();
44          builder = Model.newBuilder(model);
45          modelMerger.mergeModel_ModelVersion(builder, model, parent, false, null);
46          assertEquals("5.0.0", builder.build().getModelVersion());
47      }
48  
49      // ArtifactId is neither inherited nor injected
50      @Test
51      public void testMergeModel_ArtifactId() {
52          Model parent = Model.newBuilder().artifactId("PARENT").build();
53          Model model = Model.newInstance();
54          Model.Builder builder = Model.newBuilder(model);
55          modelMerger.mergeModel_ArtifactId(builder, model, parent, false, null);
56          assertNull(model.getArtifactId());
57  
58          model = Model.newBuilder().artifactId("MODEL").build();
59          builder = Model.newBuilder(model);
60          modelMerger.mergeModel_ArtifactId(builder, model, parent, false, null);
61          assertEquals("MODEL", builder.build().getArtifactId());
62      }
63  
64      // Prerequisites are neither inherited nor injected
65      @Test
66      public void testMergeModel_Prerequisites() {
67          Model parent =
68                  Model.newBuilder().prerequisites(Prerequisites.newInstance()).build();
69          Model model = Model.newInstance();
70          Model.Builder builder = Model.newBuilder(model);
71          modelMerger.mergeModel_Prerequisites(builder, model, parent, false, null);
72          assertNull(builder.build().getPrerequisites());
73  
74          Prerequisites modelPrerequisites =
75                  Prerequisites.newBuilder().maven("3.0").build();
76          model = Model.newBuilder().prerequisites(modelPrerequisites).build();
77          builder = Model.newBuilder(model);
78          modelMerger.mergeModel_Prerequisites(builder, model, parent, false, null);
79          assertEquals(modelPrerequisites, builder.build().getPrerequisites());
80      }
81  
82      // Profiles are neither inherited nor injected
83      @Test
84      public void testMergeModel_Profiles() {
85          Model parent = Model.newBuilder()
86                  .profiles(Collections.singletonList(Profile.newInstance()))
87                  .build();
88          Model model = Model.newInstance();
89          Model.Builder builder = Model.newBuilder(model);
90          modelMerger.mergeModel_Profiles(builder, model, parent, false, null);
91          assertEquals(0, builder.build().getProfiles().size());
92  
93          Profile modelProfile = Profile.newBuilder().id("MODEL").build();
94          model = Model.newBuilder()
95                  .profiles(Collections.singletonList(modelProfile))
96                  .build();
97          builder = Model.newBuilder(model);
98          modelMerger.mergeModel_Prerequisites(builder, model, parent, false, null);
99          assertEquals(Collections.singletonList(modelProfile), builder.build().getProfiles());
100     }
101 }