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.repository.metadata;
20  
21  import javax.inject.Inject;
22  
23  import org.apache.maven.artifact.ArtifactScopeEnum;
24  import org.codehaus.plexus.testing.PlexusTest;
25  import org.junit.jupiter.api.BeforeEach;
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.assertNotNull;
30  
31  /**
32   *
33   *
34   */
35  @PlexusTest
36  @Deprecated
37  class DefaultGraphConflictResolverTest {
38      @Inject
39      GraphConflictResolver resolver;
40  
41      MetadataGraph graph;
42  
43      MetadataGraphVertex v1;
44      MetadataGraphVertex v2;
45      MetadataGraphVertex v3;
46      MetadataGraphVertex v4;
47  
48      // ------------------------------------------------------------------------------------------
49      @BeforeEach
50      void setUp() throws Exception {
51          /*
52           *       v2
53           *   v1<
54           *      v3-v4
55           *
56           */
57          graph = new MetadataGraph(4, 3);
58          v1 = graph.addVertex(new ArtifactMetadata("g", "a1", "1.0"));
59          graph.setEntry(v1);
60          v2 = graph.addVertex(new ArtifactMetadata("g", "a2", "1.0"));
61          v3 = graph.addVertex(new ArtifactMetadata("g", "a3", "1.0"));
62          v4 = graph.addVertex(new ArtifactMetadata("g", "a4", "1.0"));
63  
64          // v1-->v2
65          graph.addEdge(v1, v2, new MetadataGraphEdge("1.1", true, null, null, 2, 1));
66          graph.addEdge(v1, v2, new MetadataGraphEdge("1.2", true, null, null, 2, 2));
67  
68          // v1-->v3
69          graph.addEdge(v1, v3, new MetadataGraphEdge("1.1", true, null, null, 2, 1));
70          graph.addEdge(v1, v3, new MetadataGraphEdge("1.2", true, null, null, 4, 2));
71  
72          // v3-->v4
73          graph.addEdge(v3, v4, new MetadataGraphEdge("1.1", true, ArtifactScopeEnum.runtime, null, 2, 1));
74          graph.addEdge(v3, v4, new MetadataGraphEdge("1.2", true, ArtifactScopeEnum.provided, null, 2, 2));
75      }
76  
77      // ------------------------------------------------------------------------------------------
78      @Test
79      void testCompileResolution() throws Exception {
80          MetadataGraph res;
81  
82          res = resolver.resolveConflicts(graph, ArtifactScopeEnum.compile);
83  
84          assertNotNull(res, "null graph after resolver");
85          assertNotNull(res.getVertices(), "no vertices in the resulting graph after resolver");
86  
87          assertNotNull(res.getExcidentEdges(v1), "no edges in the resulting graph after resolver");
88  
89          assertEquals(4, res.getVertices().size(), "wrong # of vertices in the resulting graph after resolver");
90          assertEquals(
91                  2,
92                  res.getExcidentEdges(v1).size(),
93                  "wrong # of excident edges in the resulting graph entry after resolver");
94  
95          assertEquals(
96                  1,
97                  res.getIncidentEdges(v2).size(),
98                  "wrong # of v2 incident edges in the resulting graph after resolver");
99          assertEquals(
100                 "1.2",
101                 res.getIncidentEdges(v2).get(0).getVersion(),
102                 "wrong edge v1-v2 in the resulting graph after resolver");
103 
104         assertEquals(
105                 1, res.getIncidentEdges(v3).size(), "wrong # of edges v1-v3 in the resulting graph after resolver");
106         assertEquals(
107                 "1.1",
108                 res.getIncidentEdges(v3).get(0).getVersion(),
109                 "wrong edge v1-v3 in the resulting graph after resolver");
110 
111         assertEquals(
112                 1, res.getIncidentEdges(v4).size(), "wrong # of edges v3-v4 in the resulting graph after resolver");
113         assertEquals(
114                 "1.2",
115                 res.getIncidentEdges(v4).get(0).getVersion(),
116                 "wrong edge v3-v4 in the resulting graph after resolver");
117     }
118 
119     // ------------------------------------------------------------------------------------------
120     @Test
121     void testRuntimeResolution() throws Exception {
122         MetadataGraph res;
123 
124         res = resolver.resolveConflicts(graph, ArtifactScopeEnum.runtime);
125 
126         assertNotNull(res, "null graph after resolver");
127         assertNotNull(res.getVertices(), "no vertices in the resulting graph after resolver");
128         assertNotNull(res.getExcidentEdges(v1), "no edges in the resulting graph after resolver");
129 
130         assertEquals(4, res.getVertices().size(), "wrong # of vertices in the resulting graph after resolver");
131         assertEquals(
132                 2,
133                 res.getExcidentEdges(v1).size(),
134                 "wrong # of excident edges in the resulting graph entry after resolver");
135 
136         assertEquals(
137                 1,
138                 res.getIncidentEdges(v2).size(),
139                 "wrong # of v2 incident edges in the resulting graph after resolver");
140         assertEquals(
141                 "1.2",
142                 res.getIncidentEdges(v2).get(0).getVersion(),
143                 "wrong edge v1-v2 in the resulting graph after resolver");
144 
145         assertEquals(
146                 1, res.getIncidentEdges(v3).size(), "wrong # of edges v1-v3 in the resulting graph after resolver");
147         assertEquals(
148                 "1.1",
149                 res.getIncidentEdges(v3).get(0).getVersion(),
150                 "wrong edge v1-v3 in the resulting graph after resolver");
151 
152         assertEquals(
153                 1, res.getIncidentEdges(v4).size(), "wrong # of edges v3-v4 in the resulting graph after resolver");
154         assertEquals(
155                 "1.1",
156                 res.getIncidentEdges(v4).get(0).getVersion(),
157                 "wrong edge v3-v4 in the resulting graph after resolver");
158     }
159 
160     // ------------------------------------------------------------------------------------------
161     @Test
162     void testTestResolution() throws Exception {
163         MetadataGraph res;
164 
165         res = resolver.resolveConflicts(graph, ArtifactScopeEnum.test);
166 
167         assertNotNull(res, "null graph after resolver");
168         assertNotNull(res.getVertices(), "no vertices in the resulting graph after resolver");
169         assertNotNull(res.getExcidentEdges(v1), "no edges in the resulting graph after resolver");
170 
171         assertEquals(4, res.getVertices().size(), "wrong # of vertices in the resulting graph after resolver");
172         assertEquals(
173                 2,
174                 res.getExcidentEdges(v1).size(),
175                 "wrong # of excident edges in the resulting graph entry after resolver");
176 
177         assertEquals(
178                 1,
179                 res.getIncidentEdges(v2).size(),
180                 "wrong # of v2 incident edges in the resulting graph after resolver");
181         assertEquals(
182                 "1.2",
183                 res.getIncidentEdges(v2).get(0).getVersion(),
184                 "wrong edge v1-v2 in the resulting graph after resolver");
185 
186         assertEquals(
187                 1, res.getIncidentEdges(v3).size(), "wrong # of edges v1-v3 in the resulting graph after resolver");
188         assertEquals(
189                 "1.1",
190                 res.getIncidentEdges(v3).get(0).getVersion(),
191                 "wrong edge v1-v3 in the resulting graph after resolver");
192 
193         assertEquals(
194                 1, res.getIncidentEdges(v4).size(), "wrong # of edges v3-v4 in the resulting graph after resolver");
195         assertEquals(
196                 "1.2",
197                 res.getIncidentEdges(v4).get(0).getVersion(),
198                 "wrong edge v3-v4 in the resulting graph after resolver");
199     }
200     // ------------------------------------------------------------------------------------------
201     // ------------------------------------------------------------------------------------------
202 }