blob: b23e587c5748e84ffbddcf7c26d789c73ff557af [file] [log] [blame]
Bob Badour9ee7d032021-10-25 16:51:48 -07001// Copyright 2021 Google LLC
2//
3// Licensed under the Apache License, Version 2.0 (the "License");
4// you may not use this file except in compliance with the License.
5// You may obtain a copy of the License at
6//
7// http://www.apache.org/licenses/LICENSE-2.0
8//
9// Unless required by applicable law or agreed to in writing, software
10// distributed under the License is distributed on an "AS IS" BASIS,
11// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12// See the License for the specific language governing permissions and
13// limitations under the License.
14
15package compliance
16
17import (
18 "bytes"
19 "testing"
20)
21
22func TestResolveNotices(t *testing.T) {
23 tests := []struct {
24 name string
25 roots []string
26 edges []annotated
27 expectedResolutions []res
28 }{
29 {
30 name: "firstparty",
31 roots: []string{"apacheBin.meta_lic"},
32 edges: []annotated{
33 {"apacheBin.meta_lic", "apacheLib.meta_lic", []string{"static"}},
34 },
35 expectedResolutions: []res{
Bob Badoura6ee6d52022-12-16 13:50:41 -080036 {"apacheBin.meta_lic", "apacheBin.meta_lic", "notice"},
37 {"apacheBin.meta_lic", "apacheLib.meta_lic", "notice"},
Bob Badour9ee7d032021-10-25 16:51:48 -070038 },
39 },
40 {
41 name: "firstpartydynamic",
42 roots: []string{"apacheBin.meta_lic"},
43 edges: []annotated{
44 {"apacheBin.meta_lic", "apacheLib.meta_lic", []string{"dynamic"}},
45 },
46 expectedResolutions: []res{
Bob Badoura6ee6d52022-12-16 13:50:41 -080047 {"apacheBin.meta_lic", "apacheBin.meta_lic", "notice"},
Bob Badour9ee7d032021-10-25 16:51:48 -070048 },
49 },
50 {
51 name: "firstpartydynamicshipped",
52 roots: []string{"apacheBin.meta_lic", "apacheLib.meta_lic"},
53 edges: []annotated{
54 {"apacheBin.meta_lic", "apacheLib.meta_lic", []string{"dynamic"}},
55 },
56 expectedResolutions: []res{
Bob Badoura6ee6d52022-12-16 13:50:41 -080057 {"apacheBin.meta_lic", "apacheBin.meta_lic", "notice"},
58 {"apacheLib.meta_lic", "apacheLib.meta_lic", "notice"},
Bob Badour9ee7d032021-10-25 16:51:48 -070059 },
60 },
61 {
62 name: "restricted",
63 roots: []string{"apacheBin.meta_lic"},
64 edges: []annotated{
65 {"apacheBin.meta_lic", "gplLib.meta_lic", []string{"static"}},
66 {"apacheBin.meta_lic", "mitLib.meta_lic", []string{"static"}},
67 },
68 expectedResolutions: []res{
Bob Badoura6ee6d52022-12-16 13:50:41 -080069 {"apacheBin.meta_lic", "apacheBin.meta_lic", "notice|restricted"},
70 {"apacheBin.meta_lic", "gplLib.meta_lic", "restricted"},
71 {"apacheBin.meta_lic", "mitLib.meta_lic", "notice|restricted"},
Bob Badour9ee7d032021-10-25 16:51:48 -070072 },
73 },
74 {
75 name: "restrictedtool",
76 roots: []string{"apacheBin.meta_lic"},
77 edges: []annotated{
78 {"apacheBin.meta_lic", "gplBin.meta_lic", []string{"toolchain"}},
79 {"apacheBin.meta_lic", "mitLib.meta_lic", []string{"static"}},
80 },
81 expectedResolutions: []res{
Bob Badoura6ee6d52022-12-16 13:50:41 -080082 {"apacheBin.meta_lic", "apacheBin.meta_lic", "notice"},
83 {"apacheBin.meta_lic", "mitLib.meta_lic", "notice"},
Bob Badour9ee7d032021-10-25 16:51:48 -070084 },
85 },
86 {
87 name: "restricteddeep",
88 roots: []string{"apacheContainer.meta_lic"},
89 edges: []annotated{
90 {"apacheContainer.meta_lic", "apacheBin.meta_lic", []string{"static"}},
91 {"apacheContainer.meta_lic", "mitBin.meta_lic", []string{"static"}},
92 {"apacheBin.meta_lic", "gplLib.meta_lic", []string{"static"}},
93 {"apacheBin.meta_lic", "mplLib.meta_lic", []string{"static"}},
94 {"mitBin.meta_lic", "mitLib.meta_lic", []string{"static"}},
95 },
96 expectedResolutions: []res{
Bob Badoura6ee6d52022-12-16 13:50:41 -080097 {"apacheContainer.meta_lic", "apacheContainer.meta_lic", "notice|restricted"},
98 {"apacheContainer.meta_lic", "apacheBin.meta_lic", "notice|restricted"},
99 {"apacheContainer.meta_lic", "gplLib.meta_lic", "restricted"},
100 {"apacheContainer.meta_lic", "mitBin.meta_lic", "notice"},
101 {"apacheContainer.meta_lic", "mitLib.meta_lic", "notice"},
102 {"apacheContainer.meta_lic", "mplLib.meta_lic", "reciprocal|restricted"},
103 {"apacheBin.meta_lic", "apacheBin.meta_lic", "notice|restricted"},
104 {"apacheBin.meta_lic", "gplLib.meta_lic", "restricted"},
105 {"apacheBin.meta_lic", "mplLib.meta_lic", "reciprocal|restricted"},
106 {"mitBin.meta_lic", "mitBin.meta_lic", "notice"},
107 {"mitBin.meta_lic", "mitLib.meta_lic", "notice"},
Bob Badour9ee7d032021-10-25 16:51:48 -0700108 },
109 },
110 {
111 name: "restrictedwide",
112 roots: []string{"apacheContainer.meta_lic"},
113 edges: []annotated{
114 {"apacheContainer.meta_lic", "apacheBin.meta_lic", []string{"static"}},
115 {"apacheContainer.meta_lic", "gplLib.meta_lic", []string{"static"}},
116 },
117 expectedResolutions: []res{
Bob Badoura6ee6d52022-12-16 13:50:41 -0800118 {"apacheContainer.meta_lic", "apacheContainer.meta_lic", "notice|restricted"},
119 {"apacheContainer.meta_lic", "apacheBin.meta_lic", "notice"},
120 {"apacheContainer.meta_lic", "gplLib.meta_lic", "restricted"},
121 {"apacheBin.meta_lic", "apacheBin.meta_lic", "notice"},
122 {"gplLib.meta_lic", "gplLib.meta_lic", "restricted"},
Bob Badour9ee7d032021-10-25 16:51:48 -0700123 },
124 },
125 {
126 name: "restricteddynamic",
127 roots: []string{"apacheBin.meta_lic"},
128 edges: []annotated{
129 {"apacheBin.meta_lic", "gplLib.meta_lic", []string{"dynamic"}},
130 {"apacheBin.meta_lic", "mitLib.meta_lic", []string{"dynamic"}},
131 },
132 expectedResolutions: []res{
Bob Badoura6ee6d52022-12-16 13:50:41 -0800133 {"apacheBin.meta_lic", "apacheBin.meta_lic", "notice"},
134 {"apacheBin.meta_lic", "apacheBin.meta_lic", "restricted"},
Bob Badour9ee7d032021-10-25 16:51:48 -0700135 },
136 },
137 {
138 name: "restricteddynamicshipped",
139 roots: []string{"apacheBin.meta_lic", "mitLib.meta_lic"},
140 edges: []annotated{
141 {"apacheBin.meta_lic", "gplLib.meta_lic", []string{"dynamic"}},
142 {"apacheBin.meta_lic", "mitLib.meta_lic", []string{"dynamic"}},
143 },
144 expectedResolutions: []res{
Bob Badoura6ee6d52022-12-16 13:50:41 -0800145 {"apacheBin.meta_lic", "apacheBin.meta_lic", "notice|restricted"},
146 {"apacheBin.meta_lic", "mitLib.meta_lic", "restricted"},
147 {"mitLib.meta_lic", "mitLib.meta_lic", "notice|restricted"},
Bob Badour9ee7d032021-10-25 16:51:48 -0700148 },
149 },
150 {
151 name: "restricteddynamicdeep",
152 roots: []string{"apacheContainer.meta_lic"},
153 edges: []annotated{
154 {"apacheContainer.meta_lic", "apacheBin.meta_lic", []string{"static"}},
155 {"apacheContainer.meta_lic", "mitBin.meta_lic", []string{"static"}},
156 {"apacheBin.meta_lic", "gplLib.meta_lic", []string{"dynamic"}},
157 {"apacheBin.meta_lic", "mplLib.meta_lic", []string{"dynamic"}},
158 {"mitBin.meta_lic", "mitLib.meta_lic", []string{"dynamic"}},
159 },
160 expectedResolutions: []res{
Bob Badoura6ee6d52022-12-16 13:50:41 -0800161 {"apacheContainer.meta_lic", "apacheContainer.meta_lic", "notice|restricted"},
162 {"apacheContainer.meta_lic", "apacheBin.meta_lic", "notice|restricted"},
163 {"apacheContainer.meta_lic", "mitBin.meta_lic", "notice"},
164 {"apacheBin.meta_lic", "apacheBin.meta_lic", "notice|restricted"},
165 {"mitBin.meta_lic", "mitBin.meta_lic", "notice"},
Bob Badour9ee7d032021-10-25 16:51:48 -0700166 },
167 },
168 {
169 name: "restricteddynamicwide",
170 roots: []string{"apacheContainer.meta_lic"},
171 edges: []annotated{
172 {"apacheContainer.meta_lic", "apacheBin.meta_lic", []string{"static"}},
173 {"apacheContainer.meta_lic", "gplLib.meta_lic", []string{"dynamic"}},
174 },
175 expectedResolutions: []res{
Bob Badoura6ee6d52022-12-16 13:50:41 -0800176 {"apacheContainer.meta_lic", "apacheContainer.meta_lic", "notice|restricted"},
177 {"apacheContainer.meta_lic", "apacheBin.meta_lic", "notice"},
178 {"apacheBin.meta_lic", "apacheBin.meta_lic", "notice"},
Bob Badour9ee7d032021-10-25 16:51:48 -0700179 },
180 },
181 {
182 name: "restricteddynamicwideshipped",
183 roots: []string{"apacheContainer.meta_lic", "gplLib.meta_lic"},
184 edges: []annotated{
185 {"apacheContainer.meta_lic", "apacheBin.meta_lic", []string{"static"}},
186 {"apacheContainer.meta_lic", "gplLib.meta_lic", []string{"dynamic"}},
187 },
188 expectedResolutions: []res{
Bob Badoura6ee6d52022-12-16 13:50:41 -0800189 {"apacheContainer.meta_lic", "apacheContainer.meta_lic", "notice|restricted"},
190 {"apacheContainer.meta_lic", "apacheBin.meta_lic", "notice"},
191 {"apacheContainer.meta_lic", "gplLib.meta_lic", "restricted"},
192 {"apacheBin.meta_lic", "apacheBin.meta_lic", "notice"},
193 {"gplLib.meta_lic", "gplLib.meta_lic", "restricted"},
Bob Badour9ee7d032021-10-25 16:51:48 -0700194 },
195 },
196 {
197 name: "weakrestricted",
198 roots: []string{"apacheBin.meta_lic"},
199 edges: []annotated{
200 {"apacheBin.meta_lic", "lgplLib.meta_lic", []string{"static"}},
201 {"apacheBin.meta_lic", "mitLib.meta_lic", []string{"static"}},
202 },
203 expectedResolutions: []res{
Bob Badoura6ee6d52022-12-16 13:50:41 -0800204 {"apacheBin.meta_lic", "apacheBin.meta_lic", "notice|restricted_if_statically_linked"},
205 {"apacheBin.meta_lic", "lgplLib.meta_lic", "restricted_if_statically_linked"},
206 {"apacheBin.meta_lic", "mitLib.meta_lic", "notice|restricted_if_statically_linked"},
Bob Badour9ee7d032021-10-25 16:51:48 -0700207 },
208 },
209 {
210 name: "weakrestrictedtool",
211 roots: []string{"apacheBin.meta_lic"},
212 edges: []annotated{
213 {"apacheBin.meta_lic", "lgplBin.meta_lic", []string{"toolchain"}},
214 {"apacheBin.meta_lic", "mitLib.meta_lic", []string{"static"}},
215 },
216 expectedResolutions: []res{
Bob Badoura6ee6d52022-12-16 13:50:41 -0800217 {"apacheBin.meta_lic", "apacheBin.meta_lic", "notice"},
218 {"apacheBin.meta_lic", "mitLib.meta_lic", "notice"},
Bob Badour9ee7d032021-10-25 16:51:48 -0700219 },
220 },
221 {
222 name: "weakrestrictedtoolshipped",
223 roots: []string{"apacheBin.meta_lic", "lgplBin.meta_lic"},
224 edges: []annotated{
225 {"apacheBin.meta_lic", "lgplBin.meta_lic", []string{"toolchain"}},
226 {"apacheBin.meta_lic", "mitLib.meta_lic", []string{"static"}},
227 },
228 expectedResolutions: []res{
Bob Badoura6ee6d52022-12-16 13:50:41 -0800229 {"apacheBin.meta_lic", "apacheBin.meta_lic", "notice"},
230 {"apacheBin.meta_lic", "mitLib.meta_lic", "notice"},
231 {"lgplBin.meta_lic", "lgplBin.meta_lic", "restricted_if_statically_linked"},
Bob Badour9ee7d032021-10-25 16:51:48 -0700232 },
233 },
234 {
235 name: "weakrestricteddeep",
236 roots: []string{"apacheContainer.meta_lic"},
237 edges: []annotated{
238 {"apacheContainer.meta_lic", "apacheBin.meta_lic", []string{"static"}},
239 {"apacheBin.meta_lic", "lgplLib.meta_lic", []string{"static"}},
240 {"apacheBin.meta_lic", "mitLib.meta_lic", []string{"static"}},
241 },
242 expectedResolutions: []res{
Bob Badoura6ee6d52022-12-16 13:50:41 -0800243 {"apacheContainer.meta_lic", "apacheContainer.meta_lic", "notice|restricted_if_statically_linked"},
244 {"apacheContainer.meta_lic", "apacheBin.meta_lic", "notice|restricted_if_statically_linked"},
245 {"apacheContainer.meta_lic", "lgplLib.meta_lic", "restricted_if_statically_linked"},
246 {"apacheContainer.meta_lic", "mitLib.meta_lic", "notice|restricted_if_statically_linked"},
247 {"apacheBin.meta_lic", "apacheBin.meta_lic", "notice|restricted_if_statically_linked"},
248 {"apacheBin.meta_lic", "lgplLib.meta_lic", "restricted_if_statically_linked"},
249 {"apacheBin.meta_lic", "mitLib.meta_lic", "notice|restricted_if_statically_linked"},
Bob Badour9ee7d032021-10-25 16:51:48 -0700250 },
251 },
252 {
253 name: "weakrestrictedwide",
254 roots: []string{"apacheContainer.meta_lic"},
255 edges: []annotated{
256 {"apacheContainer.meta_lic", "apacheBin.meta_lic", []string{"static"}},
257 {"apacheContainer.meta_lic", "lgplLib.meta_lic", []string{"static"}},
258 },
259 expectedResolutions: []res{
Bob Badoura6ee6d52022-12-16 13:50:41 -0800260 {"apacheContainer.meta_lic", "apacheContainer.meta_lic", "notice|restricted_if_statically_linked"},
261 {"apacheContainer.meta_lic", "apacheBin.meta_lic", "notice"},
262 {"apacheContainer.meta_lic", "lgplLib.meta_lic", "restricted_if_statically_linked"},
263 {"apacheBin.meta_lic", "apacheBin.meta_lic", "notice"},
264 {"lgplLib.meta_lic", "lgplLib.meta_lic", "restricted_if_statically_linked"},
Bob Badour9ee7d032021-10-25 16:51:48 -0700265 },
266 },
267 {
268 name: "weakrestricteddynamic",
269 roots: []string{"apacheBin.meta_lic"},
270 edges: []annotated{
271 {"apacheBin.meta_lic", "lgplLib.meta_lic", []string{"dynamic"}},
272 {"apacheBin.meta_lic", "mitLib.meta_lic", []string{"static"}},
273 },
274 expectedResolutions: []res{
Bob Badoura6ee6d52022-12-16 13:50:41 -0800275 {"apacheBin.meta_lic", "apacheBin.meta_lic", "notice"},
276 {"apacheBin.meta_lic", "mitLib.meta_lic", "notice"},
Bob Badour9ee7d032021-10-25 16:51:48 -0700277 },
278 },
279 {
280 name: "weakrestricteddynamicshipped",
281 roots: []string{"apacheBin.meta_lic", "lgplLib.meta_lic"},
282 edges: []annotated{
283 {"apacheBin.meta_lic", "lgplLib.meta_lic", []string{"dynamic"}},
284 {"apacheBin.meta_lic", "mitLib.meta_lic", []string{"static"}},
285 },
286 expectedResolutions: []res{
Bob Badoura6ee6d52022-12-16 13:50:41 -0800287 {"apacheBin.meta_lic", "apacheBin.meta_lic", "notice"},
288 {"apacheBin.meta_lic", "mitLib.meta_lic", "notice"},
289 {"lgplLib.meta_lic", "lgplLib.meta_lic", "restricted_if_statically_linked"},
Bob Badour9ee7d032021-10-25 16:51:48 -0700290 },
291 },
292 {
293 name: "weakrestricteddynamicdeep",
294 roots: []string{"apacheContainer.meta_lic"},
295 edges: []annotated{
296 {"apacheContainer.meta_lic", "apacheBin.meta_lic", []string{"static"}},
297 {"apacheBin.meta_lic", "lgplLib.meta_lic", []string{"dynamic"}},
298 },
299 expectedResolutions: []res{
Bob Badoura6ee6d52022-12-16 13:50:41 -0800300 {"apacheContainer.meta_lic", "apacheContainer.meta_lic", "notice"},
301 {"apacheContainer.meta_lic", "apacheBin.meta_lic", "notice"},
302 {"apacheBin.meta_lic", "apacheBin.meta_lic", "notice"},
Bob Badour9ee7d032021-10-25 16:51:48 -0700303 },
304 },
305 {
306 name: "weakrestricteddynamicdeepshipped",
307 roots: []string{"apacheContainer.meta_lic", "lgplLib.meta_lic"},
308 edges: []annotated{
309 {"apacheContainer.meta_lic", "apacheBin.meta_lic", []string{"static"}},
310 {"apacheBin.meta_lic", "lgplLib.meta_lic", []string{"dynamic"}},
311 },
312 expectedResolutions: []res{
Bob Badoura6ee6d52022-12-16 13:50:41 -0800313 {"apacheContainer.meta_lic", "apacheContainer.meta_lic", "notice"},
314 {"apacheContainer.meta_lic", "apacheBin.meta_lic", "notice"},
315 {"apacheBin.meta_lic", "apacheBin.meta_lic", "notice"},
316 {"lgplLib.meta_lic", "lgplLib.meta_lic", "restricted_if_statically_linked"},
Bob Badour9ee7d032021-10-25 16:51:48 -0700317 },
318 },
319 {
320 name: "weakrestricteddynamicwide",
321 roots: []string{"apacheContainer.meta_lic"},
322 edges: []annotated{
323 {"apacheContainer.meta_lic", "apacheBin.meta_lic", []string{"static"}},
324 {"apacheContainer.meta_lic", "lgplLib.meta_lic", []string{"dynamic"}},
325 },
326 expectedResolutions: []res{
Bob Badoura6ee6d52022-12-16 13:50:41 -0800327 {"apacheContainer.meta_lic", "apacheContainer.meta_lic", "notice"},
328 {"apacheContainer.meta_lic", "apacheBin.meta_lic", "notice"},
329 {"apacheBin.meta_lic", "apacheBin.meta_lic", "notice"},
Bob Badour9ee7d032021-10-25 16:51:48 -0700330 },
331 },
332 {
333 name: "weakrestricteddynamicwideshipped",
334 roots: []string{"apacheContainer.meta_lic", "lgplLib.meta_lic"},
335 edges: []annotated{
336 {"apacheContainer.meta_lic", "apacheBin.meta_lic", []string{"static"}},
337 {"apacheContainer.meta_lic", "lgplLib.meta_lic", []string{"dynamic"}},
338 },
339 expectedResolutions: []res{
Bob Badoura6ee6d52022-12-16 13:50:41 -0800340 {"apacheContainer.meta_lic", "apacheContainer.meta_lic", "notice"},
341 {"apacheContainer.meta_lic", "apacheBin.meta_lic", "notice"},
342 {"apacheBin.meta_lic", "apacheBin.meta_lic", "notice"},
343 {"lgplLib.meta_lic", "lgplLib.meta_lic", "restricted_if_statically_linked"},
Bob Badour9ee7d032021-10-25 16:51:48 -0700344 },
345 },
346 {
347 name: "classpath",
348 roots: []string{"apacheBin.meta_lic"},
349 edges: []annotated{
350 {"apacheBin.meta_lic", "gplWithClasspathException.meta_lic", []string{"static"}},
351 {"apacheBin.meta_lic", "mitLib.meta_lic", []string{"static"}},
352 },
353 expectedResolutions: []res{
Bob Badoura6ee6d52022-12-16 13:50:41 -0800354 {"apacheBin.meta_lic", "apacheBin.meta_lic", "notice"},
355 {"apacheBin.meta_lic", "gplWithClasspathException.meta_lic", "permissive"},
356 {"apacheBin.meta_lic", "mitLib.meta_lic", "notice"},
Bob Badour9ee7d032021-10-25 16:51:48 -0700357 },
358 },
359 {
360 name: "classpathdependent",
361 roots: []string{"dependentModule.meta_lic"},
362 edges: []annotated{
363 {"dependentModule.meta_lic", "gplWithClasspathException.meta_lic", []string{"static"}},
364 {"dependentModule.meta_lic", "mitLib.meta_lic", []string{"static"}},
365 },
366 expectedResolutions: []res{
Bob Badoura6ee6d52022-12-16 13:50:41 -0800367 {"dependentModule.meta_lic", "dependentModule.meta_lic", "notice"},
368 {"dependentModule.meta_lic", "gplWithClasspathException.meta_lic", "permissive"},
369 {"dependentModule.meta_lic", "mitLib.meta_lic", "notice"},
Bob Badour9ee7d032021-10-25 16:51:48 -0700370 },
371 },
372 {
373 name: "classpathdynamic",
374 roots: []string{"apacheBin.meta_lic"},
375 edges: []annotated{
376 {"apacheBin.meta_lic", "gplWithClasspathException.meta_lic", []string{"dynamic"}},
377 {"apacheBin.meta_lic", "mitLib.meta_lic", []string{"static"}},
378 },
379 expectedResolutions: []res{
Bob Badoura6ee6d52022-12-16 13:50:41 -0800380 {"apacheBin.meta_lic", "apacheBin.meta_lic", "notice"},
381 {"apacheBin.meta_lic", "mitLib.meta_lic", "notice"},
Bob Badour9ee7d032021-10-25 16:51:48 -0700382 },
383 },
384 {
385 name: "classpathdynamicshipped",
386 roots: []string{"apacheBin.meta_lic", "gplWithClasspathException.meta_lic"},
387 edges: []annotated{
388 {"apacheBin.meta_lic", "gplWithClasspathException.meta_lic", []string{"dynamic"}},
389 {"apacheBin.meta_lic", "mitLib.meta_lic", []string{"static"}},
390 },
391 expectedResolutions: []res{
Bob Badoura6ee6d52022-12-16 13:50:41 -0800392 {"apacheBin.meta_lic", "apacheBin.meta_lic", "notice"},
393 {"apacheBin.meta_lic", "mitLib.meta_lic", "notice"},
394 {"gplWithClasspathException.meta_lic", "gplWithClasspathException.meta_lic", "permissive"},
Bob Badour9ee7d032021-10-25 16:51:48 -0700395 },
396 },
397 {
398 name: "classpathdependentdynamic",
399 roots: []string{"dependentModule.meta_lic"},
400 edges: []annotated{
401 {"dependentModule.meta_lic", "gplWithClasspathException.meta_lic", []string{"dynamic"}},
402 {"dependentModule.meta_lic", "mitLib.meta_lic", []string{"static"}},
403 },
404 expectedResolutions: []res{
Bob Badoura6ee6d52022-12-16 13:50:41 -0800405 {"dependentModule.meta_lic", "dependentModule.meta_lic", "notice"},
406 {"dependentModule.meta_lic", "mitLib.meta_lic", "notice"},
Bob Badour9ee7d032021-10-25 16:51:48 -0700407 },
408 },
409 {
410 name: "classpathdependentdynamicshipped",
411 roots: []string{"dependentModule.meta_lic", "gplWithClasspathException.meta_lic"},
412 edges: []annotated{
413 {"dependentModule.meta_lic", "gplWithClasspathException.meta_lic", []string{"dynamic"}},
414 {"dependentModule.meta_lic", "mitLib.meta_lic", []string{"static"}},
415 },
416 expectedResolutions: []res{
Bob Badoura6ee6d52022-12-16 13:50:41 -0800417 {"dependentModule.meta_lic", "dependentModule.meta_lic", "notice"},
418 {"dependentModule.meta_lic", "mitLib.meta_lic", "notice"},
419 {"gplWithClasspathException.meta_lic", "gplWithClasspathException.meta_lic", "permissive"},
Bob Badour9ee7d032021-10-25 16:51:48 -0700420 },
421 },
422 }
423 for _, tt := range tests {
424 t.Run(tt.name, func(t *testing.T) {
425 stderr := &bytes.Buffer{}
426 lg, err := toGraph(stderr, tt.roots, tt.edges)
427 if err != nil {
Colin Cross179ec3e2022-01-27 15:47:09 -0800428 t.Errorf("unexpected test data error: got %s, want no error", err)
Bob Badour9ee7d032021-10-25 16:51:48 -0700429 return
430 }
431 expectedRs := toResolutionSet(lg, tt.expectedResolutions)
432 actualRs := ResolveNotices(lg)
433 checkSame(actualRs, expectedRs, t)
434 })
435 }
436}