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