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