blob: 1328a364c16b2d49b59298ba9caf85a977d1a758 [file] [log] [blame]
Bob Badour1ded0a12021-12-03 17:16:14 -08001// 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 main
16
17import (
18 "bytes"
19 "fmt"
20 "strings"
21 "testing"
22)
23
24func Test_plaintext(t *testing.T) {
25 tests := []struct {
26 condition string
27 name string
28 roots []string
29 ctx context
30 expectedOut []string
31 }{
32 {
33 condition: "firstparty",
34 name: "apex",
35 roots: []string{"highest.apex.meta_lic"},
36 expectedOut: []string{
37 "testdata/firstparty/bin/bin1.meta_lic testdata/firstparty/bin/bin1.meta_lic testdata/firstparty/bin/bin1.meta_lic notice",
38 "testdata/firstparty/bin/bin1.meta_lic testdata/firstparty/lib/liba.so.meta_lic testdata/firstparty/lib/liba.so.meta_lic notice",
39 "testdata/firstparty/bin/bin1.meta_lic testdata/firstparty/lib/libc.a.meta_lic testdata/firstparty/lib/libc.a.meta_lic notice",
40 "testdata/firstparty/bin/bin2.meta_lic testdata/firstparty/bin/bin2.meta_lic testdata/firstparty/bin/bin2.meta_lic notice",
41 "testdata/firstparty/highest.apex.meta_lic testdata/firstparty/bin/bin1.meta_lic testdata/firstparty/bin/bin1.meta_lic notice",
42 "testdata/firstparty/highest.apex.meta_lic testdata/firstparty/bin/bin2.meta_lic testdata/firstparty/bin/bin2.meta_lic notice",
43 "testdata/firstparty/highest.apex.meta_lic testdata/firstparty/highest.apex.meta_lic testdata/firstparty/highest.apex.meta_lic notice",
44 "testdata/firstparty/highest.apex.meta_lic testdata/firstparty/lib/liba.so.meta_lic testdata/firstparty/lib/liba.so.meta_lic notice",
45 "testdata/firstparty/highest.apex.meta_lic testdata/firstparty/lib/libb.so.meta_lic testdata/firstparty/lib/libb.so.meta_lic notice",
46 "testdata/firstparty/highest.apex.meta_lic testdata/firstparty/lib/libc.a.meta_lic testdata/firstparty/lib/libc.a.meta_lic notice",
47 "testdata/firstparty/lib/liba.so.meta_lic testdata/firstparty/lib/liba.so.meta_lic testdata/firstparty/lib/liba.so.meta_lic notice",
48 "testdata/firstparty/lib/libb.so.meta_lic testdata/firstparty/lib/libb.so.meta_lic testdata/firstparty/lib/libb.so.meta_lic notice",
49 "testdata/firstparty/lib/libc.a.meta_lic testdata/firstparty/lib/libc.a.meta_lic testdata/firstparty/lib/libc.a.meta_lic notice",
50 "testdata/firstparty/lib/libd.so.meta_lic testdata/firstparty/lib/libd.so.meta_lic testdata/firstparty/lib/libd.so.meta_lic notice",
51 },
52 },
53 {
54 condition: "firstparty",
55 name: "apex_trimmed",
56 roots: []string{"highest.apex.meta_lic"},
57 ctx: context{stripPrefix: "testdata/firstparty/"},
58 expectedOut: []string{
59 "bin/bin1.meta_lic bin/bin1.meta_lic bin/bin1.meta_lic notice",
60 "bin/bin1.meta_lic lib/liba.so.meta_lic lib/liba.so.meta_lic notice",
61 "bin/bin1.meta_lic lib/libc.a.meta_lic lib/libc.a.meta_lic notice",
62 "bin/bin2.meta_lic bin/bin2.meta_lic bin/bin2.meta_lic notice",
63 "highest.apex.meta_lic bin/bin1.meta_lic bin/bin1.meta_lic notice",
64 "highest.apex.meta_lic bin/bin2.meta_lic bin/bin2.meta_lic notice",
65 "highest.apex.meta_lic highest.apex.meta_lic highest.apex.meta_lic notice",
66 "highest.apex.meta_lic lib/liba.so.meta_lic lib/liba.so.meta_lic notice",
67 "highest.apex.meta_lic lib/libb.so.meta_lic lib/libb.so.meta_lic notice",
68 "highest.apex.meta_lic lib/libc.a.meta_lic lib/libc.a.meta_lic notice",
69 "lib/liba.so.meta_lic lib/liba.so.meta_lic lib/liba.so.meta_lic notice",
70 "lib/libb.so.meta_lic lib/libb.so.meta_lic lib/libb.so.meta_lic notice",
71 "lib/libc.a.meta_lic lib/libc.a.meta_lic lib/libc.a.meta_lic notice",
72 "lib/libd.so.meta_lic lib/libd.so.meta_lic lib/libd.so.meta_lic notice",
73 },
74 },
75 {
76 condition: "firstparty",
77 name: "apex_trimmed_notice",
78 roots: []string{"highest.apex.meta_lic"},
79 ctx: context{
80 conditions: []string{"notice"},
81 stripPrefix: "testdata/firstparty/",
82 },
83 expectedOut: []string{
84 "bin/bin1.meta_lic bin/bin1.meta_lic bin/bin1.meta_lic notice",
85 "bin/bin1.meta_lic lib/liba.so.meta_lic lib/liba.so.meta_lic notice",
86 "bin/bin1.meta_lic lib/libc.a.meta_lic lib/libc.a.meta_lic notice",
87 "bin/bin2.meta_lic bin/bin2.meta_lic bin/bin2.meta_lic notice",
88 "highest.apex.meta_lic bin/bin1.meta_lic bin/bin1.meta_lic notice",
89 "highest.apex.meta_lic bin/bin2.meta_lic bin/bin2.meta_lic notice",
90 "highest.apex.meta_lic highest.apex.meta_lic highest.apex.meta_lic notice",
91 "highest.apex.meta_lic lib/liba.so.meta_lic lib/liba.so.meta_lic notice",
92 "highest.apex.meta_lic lib/libb.so.meta_lic lib/libb.so.meta_lic notice",
93 "highest.apex.meta_lic lib/libc.a.meta_lic lib/libc.a.meta_lic notice",
94 "lib/liba.so.meta_lic lib/liba.so.meta_lic lib/liba.so.meta_lic notice",
95 "lib/libb.so.meta_lic lib/libb.so.meta_lic lib/libb.so.meta_lic notice",
96 },
97 },
98 {
99 condition: "firstparty",
100 name: "apex_trimmed_share",
101 roots: []string{"highest.apex.meta_lic"},
102 ctx: context{
103 conditions: []string{"reciprocal", "restricted"},
104 stripPrefix: "testdata/firstparty/",
105 },
106 expectedOut: []string{},
107 },
108 {
109 condition: "firstparty",
110 name: "apex_trimmed_private",
111 roots: []string{"highest.apex.meta_lic"},
112 ctx: context{
113 conditions: []string{"proprietary"},
114 stripPrefix: "testdata/firstparty/",
115 },
116 expectedOut: []string{},
117 },
118 {
119 condition: "firstparty",
120 name: "apex_trimmed_share_private",
121 roots: []string{"highest.apex.meta_lic"},
122 ctx: context{
123 conditions: []string{"reciprocal", "restricted", "proprietary"},
124 stripPrefix: "testdata/firstparty/",
125 },
126 expectedOut: []string{},
127 },
128 {
129 condition: "firstparty",
130 name: "apex_trimmed_labelled",
131 roots: []string{"highest.apex.meta_lic"},
132 ctx: context{stripPrefix: "testdata/firstparty/", labelConditions: true},
133 expectedOut: []string{
134 "bin/bin1.meta_lic:notice bin/bin1.meta_lic:notice bin/bin1.meta_lic:notice notice",
135 "bin/bin1.meta_lic:notice lib/liba.so.meta_lic:notice lib/liba.so.meta_lic:notice notice",
136 "bin/bin1.meta_lic:notice lib/libc.a.meta_lic:notice lib/libc.a.meta_lic:notice notice",
137 "bin/bin2.meta_lic:notice bin/bin2.meta_lic:notice bin/bin2.meta_lic:notice notice",
138 "highest.apex.meta_lic:notice bin/bin1.meta_lic:notice bin/bin1.meta_lic:notice notice",
139 "highest.apex.meta_lic:notice bin/bin2.meta_lic:notice bin/bin2.meta_lic:notice notice",
140 "highest.apex.meta_lic:notice highest.apex.meta_lic:notice highest.apex.meta_lic:notice notice",
141 "highest.apex.meta_lic:notice lib/liba.so.meta_lic:notice lib/liba.so.meta_lic:notice notice",
142 "highest.apex.meta_lic:notice lib/libb.so.meta_lic:notice lib/libb.so.meta_lic:notice notice",
143 "highest.apex.meta_lic:notice lib/libc.a.meta_lic:notice lib/libc.a.meta_lic:notice notice",
144 "lib/liba.so.meta_lic:notice lib/liba.so.meta_lic:notice lib/liba.so.meta_lic:notice notice",
145 "lib/libb.so.meta_lic:notice lib/libb.so.meta_lic:notice lib/libb.so.meta_lic:notice notice",
146 "lib/libc.a.meta_lic:notice lib/libc.a.meta_lic:notice lib/libc.a.meta_lic:notice notice",
147 "lib/libd.so.meta_lic:notice lib/libd.so.meta_lic:notice lib/libd.so.meta_lic:notice notice",
148 },
149 },
150 {
151 condition: "firstparty",
152 name: "container",
153 roots: []string{"container.zip.meta_lic"},
154 expectedOut: []string{
155 "testdata/firstparty/bin/bin1.meta_lic testdata/firstparty/bin/bin1.meta_lic testdata/firstparty/bin/bin1.meta_lic notice",
156 "testdata/firstparty/bin/bin1.meta_lic testdata/firstparty/lib/liba.so.meta_lic testdata/firstparty/lib/liba.so.meta_lic notice",
157 "testdata/firstparty/bin/bin1.meta_lic testdata/firstparty/lib/libc.a.meta_lic testdata/firstparty/lib/libc.a.meta_lic notice",
158 "testdata/firstparty/bin/bin2.meta_lic testdata/firstparty/bin/bin2.meta_lic testdata/firstparty/bin/bin2.meta_lic notice",
159 "testdata/firstparty/container.zip.meta_lic testdata/firstparty/bin/bin1.meta_lic testdata/firstparty/bin/bin1.meta_lic notice",
160 "testdata/firstparty/container.zip.meta_lic testdata/firstparty/bin/bin2.meta_lic testdata/firstparty/bin/bin2.meta_lic notice",
161 "testdata/firstparty/container.zip.meta_lic testdata/firstparty/container.zip.meta_lic testdata/firstparty/container.zip.meta_lic notice",
162 "testdata/firstparty/container.zip.meta_lic testdata/firstparty/lib/liba.so.meta_lic testdata/firstparty/lib/liba.so.meta_lic notice",
163 "testdata/firstparty/container.zip.meta_lic testdata/firstparty/lib/libb.so.meta_lic testdata/firstparty/lib/libb.so.meta_lic notice",
164 "testdata/firstparty/container.zip.meta_lic testdata/firstparty/lib/libc.a.meta_lic testdata/firstparty/lib/libc.a.meta_lic notice",
165 "testdata/firstparty/lib/liba.so.meta_lic testdata/firstparty/lib/liba.so.meta_lic testdata/firstparty/lib/liba.so.meta_lic notice",
166 "testdata/firstparty/lib/libb.so.meta_lic testdata/firstparty/lib/libb.so.meta_lic testdata/firstparty/lib/libb.so.meta_lic notice",
167 "testdata/firstparty/lib/libc.a.meta_lic testdata/firstparty/lib/libc.a.meta_lic testdata/firstparty/lib/libc.a.meta_lic notice",
168 "testdata/firstparty/lib/libd.so.meta_lic testdata/firstparty/lib/libd.so.meta_lic testdata/firstparty/lib/libd.so.meta_lic notice",
169 },
170 },
171 {
172 condition: "firstparty",
173 name: "application",
174 roots: []string{"application.meta_lic"},
175 expectedOut: []string{
176 "testdata/firstparty/application.meta_lic testdata/firstparty/application.meta_lic testdata/firstparty/application.meta_lic notice",
177 "testdata/firstparty/application.meta_lic testdata/firstparty/lib/liba.so.meta_lic testdata/firstparty/lib/liba.so.meta_lic notice",
178 "testdata/firstparty/bin/bin3.meta_lic testdata/firstparty/bin/bin3.meta_lic testdata/firstparty/bin/bin3.meta_lic notice",
179 "testdata/firstparty/lib/liba.so.meta_lic testdata/firstparty/lib/liba.so.meta_lic testdata/firstparty/lib/liba.so.meta_lic notice",
180 "testdata/firstparty/lib/libb.so.meta_lic testdata/firstparty/lib/libb.so.meta_lic testdata/firstparty/lib/libb.so.meta_lic notice",
181 },
182 },
183 {
184 condition: "firstparty",
185 name: "binary",
186 roots: []string{"bin/bin1.meta_lic"},
187 expectedOut: []string{
188 "testdata/firstparty/bin/bin1.meta_lic testdata/firstparty/bin/bin1.meta_lic testdata/firstparty/bin/bin1.meta_lic notice",
189 "testdata/firstparty/bin/bin1.meta_lic testdata/firstparty/lib/liba.so.meta_lic testdata/firstparty/lib/liba.so.meta_lic notice",
190 "testdata/firstparty/bin/bin1.meta_lic testdata/firstparty/lib/libc.a.meta_lic testdata/firstparty/lib/libc.a.meta_lic notice",
191 "testdata/firstparty/lib/liba.so.meta_lic testdata/firstparty/lib/liba.so.meta_lic testdata/firstparty/lib/liba.so.meta_lic notice",
192 "testdata/firstparty/lib/libc.a.meta_lic testdata/firstparty/lib/libc.a.meta_lic testdata/firstparty/lib/libc.a.meta_lic notice",
193 },
194 },
195 {
196 condition: "firstparty",
197 name: "library",
198 roots: []string{"lib/libd.so.meta_lic"},
199 expectedOut: []string{
200 "testdata/firstparty/lib/libd.so.meta_lic testdata/firstparty/lib/libd.so.meta_lic testdata/firstparty/lib/libd.so.meta_lic notice",
201 },
202 },
203 {
204 condition: "notice",
205 name: "apex",
206 roots: []string{"highest.apex.meta_lic"},
207 expectedOut: []string{
208 "testdata/notice/bin/bin1.meta_lic testdata/notice/bin/bin1.meta_lic testdata/notice/bin/bin1.meta_lic notice",
209 "testdata/notice/bin/bin1.meta_lic testdata/notice/lib/liba.so.meta_lic testdata/notice/lib/liba.so.meta_lic notice",
210 "testdata/notice/bin/bin1.meta_lic testdata/notice/lib/libc.a.meta_lic testdata/notice/lib/libc.a.meta_lic notice",
211 "testdata/notice/bin/bin2.meta_lic testdata/notice/bin/bin2.meta_lic testdata/notice/bin/bin2.meta_lic notice",
212 "testdata/notice/highest.apex.meta_lic testdata/notice/bin/bin1.meta_lic testdata/notice/bin/bin1.meta_lic notice",
213 "testdata/notice/highest.apex.meta_lic testdata/notice/bin/bin2.meta_lic testdata/notice/bin/bin2.meta_lic notice",
214 "testdata/notice/highest.apex.meta_lic testdata/notice/highest.apex.meta_lic testdata/notice/highest.apex.meta_lic notice",
215 "testdata/notice/highest.apex.meta_lic testdata/notice/lib/liba.so.meta_lic testdata/notice/lib/liba.so.meta_lic notice",
216 "testdata/notice/highest.apex.meta_lic testdata/notice/lib/libb.so.meta_lic testdata/notice/lib/libb.so.meta_lic notice",
217 "testdata/notice/highest.apex.meta_lic testdata/notice/lib/libc.a.meta_lic testdata/notice/lib/libc.a.meta_lic notice",
218 "testdata/notice/lib/liba.so.meta_lic testdata/notice/lib/liba.so.meta_lic testdata/notice/lib/liba.so.meta_lic notice",
219 "testdata/notice/lib/libb.so.meta_lic testdata/notice/lib/libb.so.meta_lic testdata/notice/lib/libb.so.meta_lic notice",
220 "testdata/notice/lib/libc.a.meta_lic testdata/notice/lib/libc.a.meta_lic testdata/notice/lib/libc.a.meta_lic notice",
221 "testdata/notice/lib/libd.so.meta_lic testdata/notice/lib/libd.so.meta_lic testdata/notice/lib/libd.so.meta_lic notice",
222 },
223 },
224 {
225 condition: "notice",
226 name: "apex_trimmed",
227 roots: []string{"highest.apex.meta_lic"},
228 ctx: context{stripPrefix: "testdata/notice/"},
229 expectedOut: []string{
230 "bin/bin1.meta_lic bin/bin1.meta_lic bin/bin1.meta_lic notice",
231 "bin/bin1.meta_lic lib/liba.so.meta_lic lib/liba.so.meta_lic notice",
232 "bin/bin1.meta_lic lib/libc.a.meta_lic lib/libc.a.meta_lic notice",
233 "bin/bin2.meta_lic bin/bin2.meta_lic bin/bin2.meta_lic notice",
234 "highest.apex.meta_lic bin/bin1.meta_lic bin/bin1.meta_lic notice",
235 "highest.apex.meta_lic bin/bin2.meta_lic bin/bin2.meta_lic notice",
236 "highest.apex.meta_lic highest.apex.meta_lic highest.apex.meta_lic notice",
237 "highest.apex.meta_lic lib/liba.so.meta_lic lib/liba.so.meta_lic notice",
238 "highest.apex.meta_lic lib/libb.so.meta_lic lib/libb.so.meta_lic notice",
239 "highest.apex.meta_lic lib/libc.a.meta_lic lib/libc.a.meta_lic notice",
240 "lib/liba.so.meta_lic lib/liba.so.meta_lic lib/liba.so.meta_lic notice",
241 "lib/libb.so.meta_lic lib/libb.so.meta_lic lib/libb.so.meta_lic notice",
242 "lib/libc.a.meta_lic lib/libc.a.meta_lic lib/libc.a.meta_lic notice",
243 "lib/libd.so.meta_lic lib/libd.so.meta_lic lib/libd.so.meta_lic notice",
244 },
245 },
246 {
247 condition: "notice",
248 name: "apex_trimmed_notice",
249 roots: []string{"highest.apex.meta_lic"},
250 ctx: context{
251 conditions: []string{"notice"},
252 stripPrefix: "testdata/notice/",
253 },
254 expectedOut: []string{
255 "bin/bin1.meta_lic bin/bin1.meta_lic bin/bin1.meta_lic notice",
256 "bin/bin1.meta_lic lib/liba.so.meta_lic lib/liba.so.meta_lic notice",
257 "bin/bin1.meta_lic lib/libc.a.meta_lic lib/libc.a.meta_lic notice",
258 "bin/bin2.meta_lic bin/bin2.meta_lic bin/bin2.meta_lic notice",
259 "highest.apex.meta_lic bin/bin1.meta_lic bin/bin1.meta_lic notice",
260 "highest.apex.meta_lic bin/bin2.meta_lic bin/bin2.meta_lic notice",
261 "highest.apex.meta_lic highest.apex.meta_lic highest.apex.meta_lic notice",
262 "highest.apex.meta_lic lib/liba.so.meta_lic lib/liba.so.meta_lic notice",
263 "highest.apex.meta_lic lib/libb.so.meta_lic lib/libb.so.meta_lic notice",
264 "highest.apex.meta_lic lib/libc.a.meta_lic lib/libc.a.meta_lic notice",
265 "lib/liba.so.meta_lic lib/liba.so.meta_lic lib/liba.so.meta_lic notice",
266 "lib/libb.so.meta_lic lib/libb.so.meta_lic lib/libb.so.meta_lic notice",
267 },
268 },
269 {
270 condition: "notice",
271 name: "apex_trimmed_share",
272 roots: []string{"highest.apex.meta_lic"},
273 ctx: context{
274 conditions: []string{"reciprocal", "restricted"},
275 stripPrefix: "testdata/notice/",
276 },
277 expectedOut: []string{},
278 },
279 {
280 condition: "notice",
281 name: "apex_trimmed_private",
282 roots: []string{"highest.apex.meta_lic"},
283 ctx: context{
284 conditions: []string{"proprietary"},
285 stripPrefix: "testdata/notice/",
286 },
287 expectedOut: []string{},
288 },
289 {
290 condition: "notice",
291 name: "apex_trimmed_share_private",
292 roots: []string{"highest.apex.meta_lic"},
293 ctx: context{
294 conditions: []string{"reciprocal", "restricted", "proprietary"},
295 stripPrefix: "testdata/notice/",
296 },
297 expectedOut: []string{},
298 },
299 {
300 condition: "notice",
301 name: "apex_trimmed_labelled",
302 roots: []string{"highest.apex.meta_lic"},
303 ctx: context{stripPrefix: "testdata/notice/", labelConditions: true},
304 expectedOut: []string{
305 "bin/bin1.meta_lic:notice bin/bin1.meta_lic:notice bin/bin1.meta_lic:notice notice",
306 "bin/bin1.meta_lic:notice lib/liba.so.meta_lic:notice lib/liba.so.meta_lic:notice notice",
307 "bin/bin1.meta_lic:notice lib/libc.a.meta_lic:notice lib/libc.a.meta_lic:notice notice",
308 "bin/bin2.meta_lic:notice bin/bin2.meta_lic:notice bin/bin2.meta_lic:notice notice",
309 "highest.apex.meta_lic:notice bin/bin1.meta_lic:notice bin/bin1.meta_lic:notice notice",
310 "highest.apex.meta_lic:notice bin/bin2.meta_lic:notice bin/bin2.meta_lic:notice notice",
311 "highest.apex.meta_lic:notice highest.apex.meta_lic:notice highest.apex.meta_lic:notice notice",
312 "highest.apex.meta_lic:notice lib/liba.so.meta_lic:notice lib/liba.so.meta_lic:notice notice",
313 "highest.apex.meta_lic:notice lib/libb.so.meta_lic:notice lib/libb.so.meta_lic:notice notice",
314 "highest.apex.meta_lic:notice lib/libc.a.meta_lic:notice lib/libc.a.meta_lic:notice notice",
315 "lib/liba.so.meta_lic:notice lib/liba.so.meta_lic:notice lib/liba.so.meta_lic:notice notice",
316 "lib/libb.so.meta_lic:notice lib/libb.so.meta_lic:notice lib/libb.so.meta_lic:notice notice",
317 "lib/libc.a.meta_lic:notice lib/libc.a.meta_lic:notice lib/libc.a.meta_lic:notice notice",
318 "lib/libd.so.meta_lic:notice lib/libd.so.meta_lic:notice lib/libd.so.meta_lic:notice notice",
319 },
320 },
321 {
322 condition: "notice",
323 name: "container",
324 roots: []string{"container.zip.meta_lic"},
325 expectedOut: []string{
326 "testdata/notice/bin/bin1.meta_lic testdata/notice/bin/bin1.meta_lic testdata/notice/bin/bin1.meta_lic notice",
327 "testdata/notice/bin/bin1.meta_lic testdata/notice/lib/liba.so.meta_lic testdata/notice/lib/liba.so.meta_lic notice",
328 "testdata/notice/bin/bin1.meta_lic testdata/notice/lib/libc.a.meta_lic testdata/notice/lib/libc.a.meta_lic notice",
329 "testdata/notice/bin/bin2.meta_lic testdata/notice/bin/bin2.meta_lic testdata/notice/bin/bin2.meta_lic notice",
330 "testdata/notice/container.zip.meta_lic testdata/notice/bin/bin1.meta_lic testdata/notice/bin/bin1.meta_lic notice",
331 "testdata/notice/container.zip.meta_lic testdata/notice/bin/bin2.meta_lic testdata/notice/bin/bin2.meta_lic notice",
332 "testdata/notice/container.zip.meta_lic testdata/notice/container.zip.meta_lic testdata/notice/container.zip.meta_lic notice",
333 "testdata/notice/container.zip.meta_lic testdata/notice/lib/liba.so.meta_lic testdata/notice/lib/liba.so.meta_lic notice",
334 "testdata/notice/container.zip.meta_lic testdata/notice/lib/libb.so.meta_lic testdata/notice/lib/libb.so.meta_lic notice",
335 "testdata/notice/container.zip.meta_lic testdata/notice/lib/libc.a.meta_lic testdata/notice/lib/libc.a.meta_lic notice",
336 "testdata/notice/lib/liba.so.meta_lic testdata/notice/lib/liba.so.meta_lic testdata/notice/lib/liba.so.meta_lic notice",
337 "testdata/notice/lib/libb.so.meta_lic testdata/notice/lib/libb.so.meta_lic testdata/notice/lib/libb.so.meta_lic notice",
338 "testdata/notice/lib/libc.a.meta_lic testdata/notice/lib/libc.a.meta_lic testdata/notice/lib/libc.a.meta_lic notice",
339 "testdata/notice/lib/libd.so.meta_lic testdata/notice/lib/libd.so.meta_lic testdata/notice/lib/libd.so.meta_lic notice",
340 },
341 },
342 {
343 condition: "notice",
344 name: "application",
345 roots: []string{"application.meta_lic"},
346 expectedOut: []string{
347 "testdata/notice/application.meta_lic testdata/notice/application.meta_lic testdata/notice/application.meta_lic notice",
348 "testdata/notice/application.meta_lic testdata/notice/lib/liba.so.meta_lic testdata/notice/lib/liba.so.meta_lic notice",
349 "testdata/notice/bin/bin3.meta_lic testdata/notice/bin/bin3.meta_lic testdata/notice/bin/bin3.meta_lic notice",
350 "testdata/notice/lib/liba.so.meta_lic testdata/notice/lib/liba.so.meta_lic testdata/notice/lib/liba.so.meta_lic notice",
351 "testdata/notice/lib/libb.so.meta_lic testdata/notice/lib/libb.so.meta_lic testdata/notice/lib/libb.so.meta_lic notice",
352 },
353 },
354 {
355 condition: "notice",
356 name: "binary",
357 roots: []string{"bin/bin1.meta_lic"},
358 expectedOut: []string{
359 "testdata/notice/bin/bin1.meta_lic testdata/notice/bin/bin1.meta_lic testdata/notice/bin/bin1.meta_lic notice",
360 "testdata/notice/bin/bin1.meta_lic testdata/notice/lib/liba.so.meta_lic testdata/notice/lib/liba.so.meta_lic notice",
361 "testdata/notice/bin/bin1.meta_lic testdata/notice/lib/libc.a.meta_lic testdata/notice/lib/libc.a.meta_lic notice",
362 "testdata/notice/lib/liba.so.meta_lic testdata/notice/lib/liba.so.meta_lic testdata/notice/lib/liba.so.meta_lic notice",
363 "testdata/notice/lib/libc.a.meta_lic testdata/notice/lib/libc.a.meta_lic testdata/notice/lib/libc.a.meta_lic notice",
364 },
365 },
366 {
367 condition: "notice",
368 name: "library",
369 roots: []string{"lib/libd.so.meta_lic"},
370 expectedOut: []string{
371 "testdata/notice/lib/libd.so.meta_lic testdata/notice/lib/libd.so.meta_lic testdata/notice/lib/libd.so.meta_lic notice",
372 },
373 },
374 {
375 condition: "reciprocal",
376 name: "apex",
377 roots: []string{"highest.apex.meta_lic"},
378 expectedOut: []string{
379 "testdata/reciprocal/bin/bin1.meta_lic testdata/reciprocal/bin/bin1.meta_lic testdata/reciprocal/bin/bin1.meta_lic notice",
380 "testdata/reciprocal/bin/bin1.meta_lic testdata/reciprocal/lib/liba.so.meta_lic testdata/reciprocal/lib/liba.so.meta_lic reciprocal",
381 "testdata/reciprocal/bin/bin1.meta_lic testdata/reciprocal/lib/libc.a.meta_lic testdata/reciprocal/lib/libc.a.meta_lic reciprocal",
382 "testdata/reciprocal/bin/bin2.meta_lic testdata/reciprocal/bin/bin2.meta_lic testdata/reciprocal/bin/bin2.meta_lic notice",
383 "testdata/reciprocal/highest.apex.meta_lic testdata/reciprocal/bin/bin1.meta_lic testdata/reciprocal/bin/bin1.meta_lic notice",
384 "testdata/reciprocal/highest.apex.meta_lic testdata/reciprocal/bin/bin2.meta_lic testdata/reciprocal/bin/bin2.meta_lic notice",
385 "testdata/reciprocal/highest.apex.meta_lic testdata/reciprocal/highest.apex.meta_lic testdata/reciprocal/highest.apex.meta_lic notice",
386 "testdata/reciprocal/highest.apex.meta_lic testdata/reciprocal/lib/liba.so.meta_lic testdata/reciprocal/lib/liba.so.meta_lic reciprocal",
387 "testdata/reciprocal/highest.apex.meta_lic testdata/reciprocal/lib/libb.so.meta_lic testdata/reciprocal/lib/libb.so.meta_lic notice",
388 "testdata/reciprocal/highest.apex.meta_lic testdata/reciprocal/lib/libc.a.meta_lic testdata/reciprocal/lib/libc.a.meta_lic reciprocal",
389 "testdata/reciprocal/lib/liba.so.meta_lic testdata/reciprocal/lib/liba.so.meta_lic testdata/reciprocal/lib/liba.so.meta_lic reciprocal",
390 "testdata/reciprocal/lib/libb.so.meta_lic testdata/reciprocal/lib/libb.so.meta_lic testdata/reciprocal/lib/libb.so.meta_lic notice",
391 "testdata/reciprocal/lib/libc.a.meta_lic testdata/reciprocal/lib/libc.a.meta_lic testdata/reciprocal/lib/libc.a.meta_lic reciprocal",
392 "testdata/reciprocal/lib/libd.so.meta_lic testdata/reciprocal/lib/libd.so.meta_lic testdata/reciprocal/lib/libd.so.meta_lic notice",
393 },
394 },
395 {
396 condition: "reciprocal",
397 name: "apex_trimmed",
398 roots: []string{"highest.apex.meta_lic"},
399 ctx: context{stripPrefix: "testdata/reciprocal/"},
400 expectedOut: []string{
401 "bin/bin1.meta_lic bin/bin1.meta_lic bin/bin1.meta_lic notice",
402 "bin/bin1.meta_lic lib/liba.so.meta_lic lib/liba.so.meta_lic reciprocal",
403 "bin/bin1.meta_lic lib/libc.a.meta_lic lib/libc.a.meta_lic reciprocal",
404 "bin/bin2.meta_lic bin/bin2.meta_lic bin/bin2.meta_lic notice",
405 "highest.apex.meta_lic bin/bin1.meta_lic bin/bin1.meta_lic notice",
406 "highest.apex.meta_lic bin/bin2.meta_lic bin/bin2.meta_lic notice",
407 "highest.apex.meta_lic highest.apex.meta_lic highest.apex.meta_lic notice",
408 "highest.apex.meta_lic lib/liba.so.meta_lic lib/liba.so.meta_lic reciprocal",
409 "highest.apex.meta_lic lib/libb.so.meta_lic lib/libb.so.meta_lic notice",
410 "highest.apex.meta_lic lib/libc.a.meta_lic lib/libc.a.meta_lic reciprocal",
411 "lib/liba.so.meta_lic lib/liba.so.meta_lic lib/liba.so.meta_lic reciprocal",
412 "lib/libb.so.meta_lic lib/libb.so.meta_lic lib/libb.so.meta_lic notice",
413 "lib/libc.a.meta_lic lib/libc.a.meta_lic lib/libc.a.meta_lic reciprocal",
414 "lib/libd.so.meta_lic lib/libd.so.meta_lic lib/libd.so.meta_lic notice",
415 },
416 },
417 {
418 condition: "reciprocal",
419 name: "apex_trimmed_notice",
420 roots: []string{"highest.apex.meta_lic"},
421 ctx: context{
422 conditions: []string{"notice"},
423 stripPrefix: "testdata/reciprocal/",
424 },
425 expectedOut: []string{
426 "bin/bin1.meta_lic bin/bin1.meta_lic bin/bin1.meta_lic notice",
427 "bin/bin2.meta_lic bin/bin2.meta_lic bin/bin2.meta_lic notice",
428 "highest.apex.meta_lic bin/bin1.meta_lic bin/bin1.meta_lic notice",
429 "highest.apex.meta_lic bin/bin2.meta_lic bin/bin2.meta_lic notice",
430 "highest.apex.meta_lic highest.apex.meta_lic highest.apex.meta_lic notice",
431 "highest.apex.meta_lic lib/libb.so.meta_lic lib/libb.so.meta_lic notice",
432 "lib/libb.so.meta_lic lib/libb.so.meta_lic lib/libb.so.meta_lic notice",
433 },
434 },
435 {
436 condition: "reciprocal",
437 name: "apex_trimmed_share",
438 roots: []string{"highest.apex.meta_lic"},
439 ctx: context{
440 conditions: []string{"reciprocal", "restricted"},
441 stripPrefix: "testdata/reciprocal/",
442 },
443 expectedOut: []string{
444 "bin/bin1.meta_lic lib/liba.so.meta_lic lib/liba.so.meta_lic reciprocal",
445 "bin/bin1.meta_lic lib/libc.a.meta_lic lib/libc.a.meta_lic reciprocal",
446 "highest.apex.meta_lic lib/liba.so.meta_lic lib/liba.so.meta_lic reciprocal",
447 "highest.apex.meta_lic lib/libc.a.meta_lic lib/libc.a.meta_lic reciprocal",
448 "lib/liba.so.meta_lic lib/liba.so.meta_lic lib/liba.so.meta_lic reciprocal",
449 },
450 },
451 {
452 condition: "reciprocal",
453 name: "apex_trimmed_private",
454 roots: []string{"highest.apex.meta_lic"},
455 ctx: context{
456 conditions: []string{"proprietary"},
457 stripPrefix: "testdata/reciprocal/",
458 },
459 expectedOut: []string{},
460 },
461 {
462 condition: "reciprocal",
463 name: "apex_trimmed_share_private",
464 roots: []string{"highest.apex.meta_lic"},
465 ctx: context{
466 conditions: []string{"reciprocal", "restricted", "proprietary"},
467 stripPrefix: "testdata/reciprocal/",
468 },
469 expectedOut: []string{
470 "bin/bin1.meta_lic lib/liba.so.meta_lic lib/liba.so.meta_lic reciprocal",
471 "bin/bin1.meta_lic lib/libc.a.meta_lic lib/libc.a.meta_lic reciprocal",
472 "highest.apex.meta_lic lib/liba.so.meta_lic lib/liba.so.meta_lic reciprocal",
473 "highest.apex.meta_lic lib/libc.a.meta_lic lib/libc.a.meta_lic reciprocal",
474 "lib/liba.so.meta_lic lib/liba.so.meta_lic lib/liba.so.meta_lic reciprocal",
475 },
476 },
477 {
478 condition: "reciprocal",
479 name: "apex_trimmed_labelled",
480 roots: []string{"highest.apex.meta_lic"},
481 ctx: context{stripPrefix: "testdata/reciprocal/", labelConditions: true},
482 expectedOut: []string{
483 "bin/bin1.meta_lic:notice bin/bin1.meta_lic:notice bin/bin1.meta_lic:notice notice",
484 "bin/bin1.meta_lic:notice lib/liba.so.meta_lic:reciprocal lib/liba.so.meta_lic:reciprocal reciprocal",
485 "bin/bin1.meta_lic:notice lib/libc.a.meta_lic:reciprocal lib/libc.a.meta_lic:reciprocal reciprocal",
486 "bin/bin2.meta_lic:notice bin/bin2.meta_lic:notice bin/bin2.meta_lic:notice notice",
487 "highest.apex.meta_lic:notice bin/bin1.meta_lic:notice bin/bin1.meta_lic:notice notice",
488 "highest.apex.meta_lic:notice bin/bin2.meta_lic:notice bin/bin2.meta_lic:notice notice",
489 "highest.apex.meta_lic:notice highest.apex.meta_lic:notice highest.apex.meta_lic:notice notice",
490 "highest.apex.meta_lic:notice lib/liba.so.meta_lic:reciprocal lib/liba.so.meta_lic:reciprocal reciprocal",
491 "highest.apex.meta_lic:notice lib/libb.so.meta_lic:notice lib/libb.so.meta_lic:notice notice",
492 "highest.apex.meta_lic:notice lib/libc.a.meta_lic:reciprocal lib/libc.a.meta_lic:reciprocal reciprocal",
493 "lib/liba.so.meta_lic:reciprocal lib/liba.so.meta_lic:reciprocal lib/liba.so.meta_lic:reciprocal reciprocal",
494 "lib/libb.so.meta_lic:notice lib/libb.so.meta_lic:notice lib/libb.so.meta_lic:notice notice",
495 "lib/libc.a.meta_lic:reciprocal lib/libc.a.meta_lic:reciprocal lib/libc.a.meta_lic:reciprocal reciprocal",
496 "lib/libd.so.meta_lic:notice lib/libd.so.meta_lic:notice lib/libd.so.meta_lic:notice notice",
497 },
498 },
499 {
500 condition: "reciprocal",
501 name: "container",
502 roots: []string{"container.zip.meta_lic"},
503 expectedOut: []string{
504 "testdata/reciprocal/bin/bin1.meta_lic testdata/reciprocal/bin/bin1.meta_lic testdata/reciprocal/bin/bin1.meta_lic notice",
505 "testdata/reciprocal/bin/bin1.meta_lic testdata/reciprocal/lib/liba.so.meta_lic testdata/reciprocal/lib/liba.so.meta_lic reciprocal",
506 "testdata/reciprocal/bin/bin1.meta_lic testdata/reciprocal/lib/libc.a.meta_lic testdata/reciprocal/lib/libc.a.meta_lic reciprocal",
507 "testdata/reciprocal/bin/bin2.meta_lic testdata/reciprocal/bin/bin2.meta_lic testdata/reciprocal/bin/bin2.meta_lic notice",
508 "testdata/reciprocal/container.zip.meta_lic testdata/reciprocal/bin/bin1.meta_lic testdata/reciprocal/bin/bin1.meta_lic notice",
509 "testdata/reciprocal/container.zip.meta_lic testdata/reciprocal/bin/bin2.meta_lic testdata/reciprocal/bin/bin2.meta_lic notice",
510 "testdata/reciprocal/container.zip.meta_lic testdata/reciprocal/container.zip.meta_lic testdata/reciprocal/container.zip.meta_lic notice",
511 "testdata/reciprocal/container.zip.meta_lic testdata/reciprocal/lib/liba.so.meta_lic testdata/reciprocal/lib/liba.so.meta_lic reciprocal",
512 "testdata/reciprocal/container.zip.meta_lic testdata/reciprocal/lib/libb.so.meta_lic testdata/reciprocal/lib/libb.so.meta_lic notice",
513 "testdata/reciprocal/container.zip.meta_lic testdata/reciprocal/lib/libc.a.meta_lic testdata/reciprocal/lib/libc.a.meta_lic reciprocal",
514 "testdata/reciprocal/lib/liba.so.meta_lic testdata/reciprocal/lib/liba.so.meta_lic testdata/reciprocal/lib/liba.so.meta_lic reciprocal",
515 "testdata/reciprocal/lib/libb.so.meta_lic testdata/reciprocal/lib/libb.so.meta_lic testdata/reciprocal/lib/libb.so.meta_lic notice",
516 "testdata/reciprocal/lib/libc.a.meta_lic testdata/reciprocal/lib/libc.a.meta_lic testdata/reciprocal/lib/libc.a.meta_lic reciprocal",
517 "testdata/reciprocal/lib/libd.so.meta_lic testdata/reciprocal/lib/libd.so.meta_lic testdata/reciprocal/lib/libd.so.meta_lic notice",
518 },
519 },
520 {
521 condition: "reciprocal",
522 name: "application",
523 roots: []string{"application.meta_lic"},
524 expectedOut: []string{
525 "testdata/reciprocal/application.meta_lic testdata/reciprocal/application.meta_lic testdata/reciprocal/application.meta_lic notice",
526 "testdata/reciprocal/application.meta_lic testdata/reciprocal/lib/liba.so.meta_lic testdata/reciprocal/lib/liba.so.meta_lic reciprocal",
527 "testdata/reciprocal/bin/bin3.meta_lic testdata/reciprocal/bin/bin3.meta_lic testdata/reciprocal/bin/bin3.meta_lic notice",
528 "testdata/reciprocal/lib/liba.so.meta_lic testdata/reciprocal/lib/liba.so.meta_lic testdata/reciprocal/lib/liba.so.meta_lic reciprocal",
529 "testdata/reciprocal/lib/libb.so.meta_lic testdata/reciprocal/lib/libb.so.meta_lic testdata/reciprocal/lib/libb.so.meta_lic notice",
530 },
531 },
532 {
533 condition: "reciprocal",
534 name: "binary",
535 roots: []string{"bin/bin1.meta_lic"},
536 expectedOut: []string{
537 "testdata/reciprocal/bin/bin1.meta_lic testdata/reciprocal/bin/bin1.meta_lic testdata/reciprocal/bin/bin1.meta_lic notice",
538 "testdata/reciprocal/bin/bin1.meta_lic testdata/reciprocal/lib/liba.so.meta_lic testdata/reciprocal/lib/liba.so.meta_lic reciprocal",
539 "testdata/reciprocal/bin/bin1.meta_lic testdata/reciprocal/lib/libc.a.meta_lic testdata/reciprocal/lib/libc.a.meta_lic reciprocal",
540 "testdata/reciprocal/lib/liba.so.meta_lic testdata/reciprocal/lib/liba.so.meta_lic testdata/reciprocal/lib/liba.so.meta_lic reciprocal",
541 "testdata/reciprocal/lib/libc.a.meta_lic testdata/reciprocal/lib/libc.a.meta_lic testdata/reciprocal/lib/libc.a.meta_lic reciprocal",
542 },
543 },
544 {
545 condition: "reciprocal",
546 name: "library",
547 roots: []string{"lib/libd.so.meta_lic"},
548 expectedOut: []string{
549 "testdata/reciprocal/lib/libd.so.meta_lic testdata/reciprocal/lib/libd.so.meta_lic testdata/reciprocal/lib/libd.so.meta_lic notice",
550 },
551 },
552 {
553 condition: "restricted",
554 name: "apex",
555 roots: []string{"highest.apex.meta_lic"},
556 expectedOut: []string{
557 "testdata/restricted/bin/bin1.meta_lic testdata/restricted/bin/bin1.meta_lic testdata/restricted/bin/bin1.meta_lic notice",
558 "testdata/restricted/bin/bin1.meta_lic testdata/restricted/bin/bin1.meta_lic testdata/restricted/lib/liba.so.meta_lic restricted",
559 "testdata/restricted/bin/bin1.meta_lic testdata/restricted/lib/liba.so.meta_lic testdata/restricted/lib/liba.so.meta_lic restricted",
560 "testdata/restricted/bin/bin1.meta_lic testdata/restricted/lib/libc.a.meta_lic testdata/restricted/lib/liba.so.meta_lic restricted",
561 "testdata/restricted/bin/bin1.meta_lic testdata/restricted/lib/libc.a.meta_lic testdata/restricted/lib/libc.a.meta_lic reciprocal",
562 "testdata/restricted/bin/bin2.meta_lic testdata/restricted/bin/bin2.meta_lic testdata/restricted/bin/bin2.meta_lic notice",
563 "testdata/restricted/bin/bin2.meta_lic testdata/restricted/bin/bin2.meta_lic testdata/restricted/lib/libb.so.meta_lic restricted",
564 "testdata/restricted/bin/bin2.meta_lic testdata/restricted/lib/libb.so.meta_lic testdata/restricted/lib/libb.so.meta_lic restricted",
565 "testdata/restricted/bin/bin2.meta_lic testdata/restricted/lib/libd.so.meta_lic testdata/restricted/lib/libb.so.meta_lic restricted",
566 "testdata/restricted/highest.apex.meta_lic testdata/restricted/bin/bin1.meta_lic testdata/restricted/bin/bin1.meta_lic notice",
567 "testdata/restricted/highest.apex.meta_lic testdata/restricted/bin/bin1.meta_lic testdata/restricted/lib/liba.so.meta_lic restricted",
568 "testdata/restricted/highest.apex.meta_lic testdata/restricted/bin/bin2.meta_lic testdata/restricted/bin/bin2.meta_lic notice",
569 "testdata/restricted/highest.apex.meta_lic testdata/restricted/bin/bin2.meta_lic testdata/restricted/lib/libb.so.meta_lic restricted",
570 "testdata/restricted/highest.apex.meta_lic testdata/restricted/highest.apex.meta_lic testdata/restricted/highest.apex.meta_lic notice",
571 "testdata/restricted/highest.apex.meta_lic testdata/restricted/highest.apex.meta_lic testdata/restricted/lib/liba.so.meta_lic restricted",
572 "testdata/restricted/highest.apex.meta_lic testdata/restricted/highest.apex.meta_lic testdata/restricted/lib/libb.so.meta_lic restricted",
573 "testdata/restricted/highest.apex.meta_lic testdata/restricted/lib/liba.so.meta_lic testdata/restricted/lib/liba.so.meta_lic restricted",
574 "testdata/restricted/highest.apex.meta_lic testdata/restricted/lib/libb.so.meta_lic testdata/restricted/lib/libb.so.meta_lic restricted",
575 "testdata/restricted/highest.apex.meta_lic testdata/restricted/lib/libc.a.meta_lic testdata/restricted/lib/liba.so.meta_lic restricted",
576 "testdata/restricted/highest.apex.meta_lic testdata/restricted/lib/libc.a.meta_lic testdata/restricted/lib/libc.a.meta_lic reciprocal",
577 "testdata/restricted/highest.apex.meta_lic testdata/restricted/lib/libd.so.meta_lic testdata/restricted/lib/libb.so.meta_lic restricted",
578 "testdata/restricted/lib/liba.so.meta_lic testdata/restricted/lib/liba.so.meta_lic testdata/restricted/lib/liba.so.meta_lic restricted",
579 "testdata/restricted/lib/libb.so.meta_lic testdata/restricted/lib/libb.so.meta_lic testdata/restricted/lib/libb.so.meta_lic restricted",
580 "testdata/restricted/lib/libc.a.meta_lic testdata/restricted/lib/libc.a.meta_lic testdata/restricted/lib/libc.a.meta_lic reciprocal",
581 "testdata/restricted/lib/libd.so.meta_lic testdata/restricted/lib/libd.so.meta_lic testdata/restricted/lib/libd.so.meta_lic notice",
582 },
583 },
584 {
585 condition: "restricted",
586 name: "apex_trimmed",
587 roots: []string{"highest.apex.meta_lic"},
588 ctx: context{stripPrefix: "testdata/restricted/"},
589 expectedOut: []string{
590 "bin/bin1.meta_lic bin/bin1.meta_lic bin/bin1.meta_lic notice",
591 "bin/bin1.meta_lic bin/bin1.meta_lic lib/liba.so.meta_lic restricted",
592 "bin/bin1.meta_lic lib/liba.so.meta_lic lib/liba.so.meta_lic restricted",
593 "bin/bin1.meta_lic lib/libc.a.meta_lic lib/liba.so.meta_lic restricted",
594 "bin/bin1.meta_lic lib/libc.a.meta_lic lib/libc.a.meta_lic reciprocal",
595 "bin/bin2.meta_lic bin/bin2.meta_lic bin/bin2.meta_lic notice",
596 "bin/bin2.meta_lic bin/bin2.meta_lic lib/libb.so.meta_lic restricted",
597 "bin/bin2.meta_lic lib/libb.so.meta_lic lib/libb.so.meta_lic restricted",
598 "bin/bin2.meta_lic lib/libd.so.meta_lic lib/libb.so.meta_lic restricted",
599 "highest.apex.meta_lic bin/bin1.meta_lic bin/bin1.meta_lic notice",
600 "highest.apex.meta_lic bin/bin1.meta_lic lib/liba.so.meta_lic restricted",
601 "highest.apex.meta_lic bin/bin2.meta_lic bin/bin2.meta_lic notice",
602 "highest.apex.meta_lic bin/bin2.meta_lic lib/libb.so.meta_lic restricted",
603 "highest.apex.meta_lic highest.apex.meta_lic highest.apex.meta_lic notice",
604 "highest.apex.meta_lic highest.apex.meta_lic lib/liba.so.meta_lic restricted",
605 "highest.apex.meta_lic highest.apex.meta_lic lib/libb.so.meta_lic restricted",
606 "highest.apex.meta_lic lib/liba.so.meta_lic lib/liba.so.meta_lic restricted",
607 "highest.apex.meta_lic lib/libb.so.meta_lic lib/libb.so.meta_lic restricted",
608 "highest.apex.meta_lic lib/libc.a.meta_lic lib/liba.so.meta_lic restricted",
609 "highest.apex.meta_lic lib/libc.a.meta_lic lib/libc.a.meta_lic reciprocal",
610 "highest.apex.meta_lic lib/libd.so.meta_lic lib/libb.so.meta_lic restricted",
611 "lib/liba.so.meta_lic lib/liba.so.meta_lic lib/liba.so.meta_lic restricted",
612 "lib/libb.so.meta_lic lib/libb.so.meta_lic lib/libb.so.meta_lic restricted",
613 "lib/libc.a.meta_lic lib/libc.a.meta_lic lib/libc.a.meta_lic reciprocal",
614 "lib/libd.so.meta_lic lib/libd.so.meta_lic lib/libd.so.meta_lic notice",
615 },
616 },
617 {
618 condition: "restricted",
619 name: "apex_trimmed_notice",
620 roots: []string{"highest.apex.meta_lic"},
621 ctx: context{
622 conditions: []string{"notice"},
623 stripPrefix: "testdata/restricted/",
624 },
625 expectedOut: []string{
626 "bin/bin1.meta_lic bin/bin1.meta_lic bin/bin1.meta_lic notice",
627 "bin/bin2.meta_lic bin/bin2.meta_lic bin/bin2.meta_lic notice",
628 "highest.apex.meta_lic bin/bin1.meta_lic bin/bin1.meta_lic notice",
629 "highest.apex.meta_lic bin/bin2.meta_lic bin/bin2.meta_lic notice",
630 "highest.apex.meta_lic highest.apex.meta_lic highest.apex.meta_lic notice",
631 },
632 },
633 {
634 condition: "restricted",
635 name: "apex_trimmed_share",
636 roots: []string{"highest.apex.meta_lic"},
637 ctx: context{
638 conditions: []string{"reciprocal", "restricted"},
639 stripPrefix: "testdata/restricted/",
640 },
641 expectedOut: []string{
642 "bin/bin1.meta_lic bin/bin1.meta_lic lib/liba.so.meta_lic restricted",
643 "bin/bin1.meta_lic lib/liba.so.meta_lic lib/liba.so.meta_lic restricted",
644 "bin/bin1.meta_lic lib/libc.a.meta_lic lib/liba.so.meta_lic restricted",
645 "bin/bin1.meta_lic lib/libc.a.meta_lic lib/libc.a.meta_lic reciprocal",
646 "bin/bin2.meta_lic bin/bin2.meta_lic lib/libb.so.meta_lic restricted",
647 "bin/bin2.meta_lic lib/libb.so.meta_lic lib/libb.so.meta_lic restricted",
648 "highest.apex.meta_lic bin/bin1.meta_lic lib/liba.so.meta_lic restricted",
649 "highest.apex.meta_lic bin/bin2.meta_lic lib/libb.so.meta_lic restricted",
650 "highest.apex.meta_lic highest.apex.meta_lic lib/liba.so.meta_lic restricted",
651 "highest.apex.meta_lic highest.apex.meta_lic lib/libb.so.meta_lic restricted",
652 "highest.apex.meta_lic lib/liba.so.meta_lic lib/liba.so.meta_lic restricted",
653 "highest.apex.meta_lic lib/libb.so.meta_lic lib/libb.so.meta_lic restricted",
654 "highest.apex.meta_lic lib/libc.a.meta_lic lib/liba.so.meta_lic restricted",
655 "highest.apex.meta_lic lib/libc.a.meta_lic lib/libc.a.meta_lic reciprocal",
656 "lib/liba.so.meta_lic lib/liba.so.meta_lic lib/liba.so.meta_lic restricted",
657 "lib/libb.so.meta_lic lib/libb.so.meta_lic lib/libb.so.meta_lic restricted",
658 },
659 },
660 {
661 condition: "restricted",
662 name: "apex_trimmed_private",
663 roots: []string{"highest.apex.meta_lic"},
664 ctx: context{
665 conditions: []string{"proprietary"},
666 stripPrefix: "testdata/restricted/",
667 },
668 expectedOut: []string{},
669 },
670 {
671 condition: "restricted",
672 name: "apex_trimmed_share_private",
673 roots: []string{"highest.apex.meta_lic"},
674 ctx: context{
675 conditions: []string{"reciprocal", "restricted", "proprietary"},
676 stripPrefix: "testdata/restricted/",
677 },
678 expectedOut: []string{
679 "bin/bin1.meta_lic bin/bin1.meta_lic lib/liba.so.meta_lic restricted",
680 "bin/bin1.meta_lic lib/liba.so.meta_lic lib/liba.so.meta_lic restricted",
681 "bin/bin1.meta_lic lib/libc.a.meta_lic lib/liba.so.meta_lic restricted",
682 "bin/bin1.meta_lic lib/libc.a.meta_lic lib/libc.a.meta_lic reciprocal",
683 "bin/bin2.meta_lic bin/bin2.meta_lic lib/libb.so.meta_lic restricted",
684 "bin/bin2.meta_lic lib/libb.so.meta_lic lib/libb.so.meta_lic restricted",
685 "highest.apex.meta_lic bin/bin1.meta_lic lib/liba.so.meta_lic restricted",
686 "highest.apex.meta_lic bin/bin2.meta_lic lib/libb.so.meta_lic restricted",
687 "highest.apex.meta_lic highest.apex.meta_lic lib/liba.so.meta_lic restricted",
688 "highest.apex.meta_lic highest.apex.meta_lic lib/libb.so.meta_lic restricted",
689 "highest.apex.meta_lic lib/liba.so.meta_lic lib/liba.so.meta_lic restricted",
690 "highest.apex.meta_lic lib/libb.so.meta_lic lib/libb.so.meta_lic restricted",
691 "highest.apex.meta_lic lib/libc.a.meta_lic lib/liba.so.meta_lic restricted",
692 "highest.apex.meta_lic lib/libc.a.meta_lic lib/libc.a.meta_lic reciprocal",
693 "lib/liba.so.meta_lic lib/liba.so.meta_lic lib/liba.so.meta_lic restricted",
694 "lib/libb.so.meta_lic lib/libb.so.meta_lic lib/libb.so.meta_lic restricted",
695 },
696 },
697 {
698 condition: "restricted",
699 name: "apex_trimmed_labelled",
700 roots: []string{"highest.apex.meta_lic"},
701 ctx: context{stripPrefix: "testdata/restricted/", labelConditions: true},
702 expectedOut: []string{
703 "bin/bin1.meta_lic:notice bin/bin1.meta_lic:notice bin/bin1.meta_lic:notice notice",
704 "bin/bin1.meta_lic:notice bin/bin1.meta_lic:notice lib/liba.so.meta_lic:restricted restricted",
705 "bin/bin1.meta_lic:notice lib/liba.so.meta_lic:restricted lib/liba.so.meta_lic:restricted restricted",
706 "bin/bin1.meta_lic:notice lib/libc.a.meta_lic:reciprocal lib/liba.so.meta_lic:restricted restricted",
707 "bin/bin1.meta_lic:notice lib/libc.a.meta_lic:reciprocal lib/libc.a.meta_lic:reciprocal reciprocal",
708 "bin/bin2.meta_lic:notice bin/bin2.meta_lic:notice bin/bin2.meta_lic:notice notice",
709 "bin/bin2.meta_lic:notice bin/bin2.meta_lic:notice lib/libb.so.meta_lic:restricted restricted",
710 "bin/bin2.meta_lic:notice lib/libb.so.meta_lic:restricted lib/libb.so.meta_lic:restricted restricted",
711 "bin/bin2.meta_lic:notice lib/libd.so.meta_lic:notice lib/libb.so.meta_lic:restricted restricted",
712 "highest.apex.meta_lic:notice bin/bin1.meta_lic:notice bin/bin1.meta_lic:notice notice",
713 "highest.apex.meta_lic:notice bin/bin1.meta_lic:notice lib/liba.so.meta_lic:restricted restricted",
714 "highest.apex.meta_lic:notice bin/bin2.meta_lic:notice bin/bin2.meta_lic:notice notice",
715 "highest.apex.meta_lic:notice bin/bin2.meta_lic:notice lib/libb.so.meta_lic:restricted restricted",
716 "highest.apex.meta_lic:notice highest.apex.meta_lic:notice highest.apex.meta_lic:notice notice",
717 "highest.apex.meta_lic:notice highest.apex.meta_lic:notice lib/liba.so.meta_lic:restricted restricted",
718 "highest.apex.meta_lic:notice highest.apex.meta_lic:notice lib/libb.so.meta_lic:restricted restricted",
719 "highest.apex.meta_lic:notice lib/liba.so.meta_lic:restricted lib/liba.so.meta_lic:restricted restricted",
720 "highest.apex.meta_lic:notice lib/libb.so.meta_lic:restricted lib/libb.so.meta_lic:restricted restricted",
721 "highest.apex.meta_lic:notice lib/libc.a.meta_lic:reciprocal lib/liba.so.meta_lic:restricted restricted",
722 "highest.apex.meta_lic:notice lib/libc.a.meta_lic:reciprocal lib/libc.a.meta_lic:reciprocal reciprocal",
723 "highest.apex.meta_lic:notice lib/libd.so.meta_lic:notice lib/libb.so.meta_lic:restricted restricted",
724 "lib/liba.so.meta_lic:restricted lib/liba.so.meta_lic:restricted lib/liba.so.meta_lic:restricted restricted",
725 "lib/libb.so.meta_lic:restricted lib/libb.so.meta_lic:restricted lib/libb.so.meta_lic:restricted restricted",
726 "lib/libc.a.meta_lic:reciprocal lib/libc.a.meta_lic:reciprocal lib/libc.a.meta_lic:reciprocal reciprocal",
727 "lib/libd.so.meta_lic:notice lib/libd.so.meta_lic:notice lib/libd.so.meta_lic:notice notice",
728 },
729 },
730 {
731 condition: "restricted",
732 name: "container",
733 roots: []string{"container.zip.meta_lic"},
734 expectedOut: []string{
735 "testdata/restricted/bin/bin1.meta_lic testdata/restricted/bin/bin1.meta_lic testdata/restricted/bin/bin1.meta_lic notice",
736 "testdata/restricted/bin/bin1.meta_lic testdata/restricted/bin/bin1.meta_lic testdata/restricted/lib/liba.so.meta_lic restricted",
737 "testdata/restricted/bin/bin1.meta_lic testdata/restricted/lib/liba.so.meta_lic testdata/restricted/lib/liba.so.meta_lic restricted",
738 "testdata/restricted/bin/bin1.meta_lic testdata/restricted/lib/libc.a.meta_lic testdata/restricted/lib/liba.so.meta_lic restricted",
739 "testdata/restricted/bin/bin1.meta_lic testdata/restricted/lib/libc.a.meta_lic testdata/restricted/lib/libc.a.meta_lic reciprocal",
740 "testdata/restricted/bin/bin2.meta_lic testdata/restricted/bin/bin2.meta_lic testdata/restricted/bin/bin2.meta_lic notice",
741 "testdata/restricted/bin/bin2.meta_lic testdata/restricted/bin/bin2.meta_lic testdata/restricted/lib/libb.so.meta_lic restricted",
742 "testdata/restricted/bin/bin2.meta_lic testdata/restricted/lib/libb.so.meta_lic testdata/restricted/lib/libb.so.meta_lic restricted",
743 "testdata/restricted/bin/bin2.meta_lic testdata/restricted/lib/libd.so.meta_lic testdata/restricted/lib/libb.so.meta_lic restricted",
744 "testdata/restricted/container.zip.meta_lic testdata/restricted/bin/bin1.meta_lic testdata/restricted/bin/bin1.meta_lic notice",
745 "testdata/restricted/container.zip.meta_lic testdata/restricted/bin/bin1.meta_lic testdata/restricted/lib/liba.so.meta_lic restricted",
746 "testdata/restricted/container.zip.meta_lic testdata/restricted/bin/bin2.meta_lic testdata/restricted/bin/bin2.meta_lic notice",
747 "testdata/restricted/container.zip.meta_lic testdata/restricted/bin/bin2.meta_lic testdata/restricted/lib/libb.so.meta_lic restricted",
748 "testdata/restricted/container.zip.meta_lic testdata/restricted/container.zip.meta_lic testdata/restricted/container.zip.meta_lic notice",
749 "testdata/restricted/container.zip.meta_lic testdata/restricted/container.zip.meta_lic testdata/restricted/lib/liba.so.meta_lic restricted",
750 "testdata/restricted/container.zip.meta_lic testdata/restricted/container.zip.meta_lic testdata/restricted/lib/libb.so.meta_lic restricted",
751 "testdata/restricted/container.zip.meta_lic testdata/restricted/lib/liba.so.meta_lic testdata/restricted/lib/liba.so.meta_lic restricted",
752 "testdata/restricted/container.zip.meta_lic testdata/restricted/lib/libb.so.meta_lic testdata/restricted/lib/libb.so.meta_lic restricted",
753 "testdata/restricted/container.zip.meta_lic testdata/restricted/lib/libc.a.meta_lic testdata/restricted/lib/liba.so.meta_lic restricted",
754 "testdata/restricted/container.zip.meta_lic testdata/restricted/lib/libc.a.meta_lic testdata/restricted/lib/libc.a.meta_lic reciprocal",
755 "testdata/restricted/container.zip.meta_lic testdata/restricted/lib/libd.so.meta_lic testdata/restricted/lib/libb.so.meta_lic restricted",
756 "testdata/restricted/lib/liba.so.meta_lic testdata/restricted/lib/liba.so.meta_lic testdata/restricted/lib/liba.so.meta_lic restricted",
757 "testdata/restricted/lib/libb.so.meta_lic testdata/restricted/lib/libb.so.meta_lic testdata/restricted/lib/libb.so.meta_lic restricted",
758 "testdata/restricted/lib/libc.a.meta_lic testdata/restricted/lib/libc.a.meta_lic testdata/restricted/lib/libc.a.meta_lic reciprocal",
759 "testdata/restricted/lib/libd.so.meta_lic testdata/restricted/lib/libd.so.meta_lic testdata/restricted/lib/libd.so.meta_lic notice",
760 },
761 },
762 {
763 condition: "restricted",
764 name: "application",
765 roots: []string{"application.meta_lic"},
766 expectedOut: []string{
767 "testdata/restricted/application.meta_lic testdata/restricted/application.meta_lic testdata/restricted/application.meta_lic notice",
768 "testdata/restricted/application.meta_lic testdata/restricted/application.meta_lic testdata/restricted/lib/liba.so.meta_lic restricted",
769 "testdata/restricted/application.meta_lic testdata/restricted/application.meta_lic testdata/restricted/lib/libb.so.meta_lic restricted",
770 "testdata/restricted/application.meta_lic testdata/restricted/lib/liba.so.meta_lic testdata/restricted/lib/liba.so.meta_lic restricted",
771 "testdata/restricted/application.meta_lic testdata/restricted/lib/liba.so.meta_lic testdata/restricted/lib/libb.so.meta_lic restricted",
772 "testdata/restricted/application.meta_lic testdata/restricted/lib/libb.so.meta_lic testdata/restricted/lib/libb.so.meta_lic restricted",
773 "testdata/restricted/bin/bin3.meta_lic testdata/restricted/bin/bin3.meta_lic testdata/restricted/bin/bin3.meta_lic restricted",
774 "testdata/restricted/lib/liba.so.meta_lic testdata/restricted/lib/liba.so.meta_lic testdata/restricted/lib/liba.so.meta_lic restricted",
775 "testdata/restricted/lib/libb.so.meta_lic testdata/restricted/lib/libb.so.meta_lic testdata/restricted/lib/libb.so.meta_lic restricted",
776 },
777 },
778 {
779 condition: "restricted",
780 name: "binary",
781 roots: []string{"bin/bin1.meta_lic"},
782 expectedOut: []string{
783 "testdata/restricted/bin/bin1.meta_lic testdata/restricted/bin/bin1.meta_lic testdata/restricted/bin/bin1.meta_lic notice",
784 "testdata/restricted/bin/bin1.meta_lic testdata/restricted/bin/bin1.meta_lic testdata/restricted/lib/liba.so.meta_lic restricted",
785 "testdata/restricted/bin/bin1.meta_lic testdata/restricted/lib/liba.so.meta_lic testdata/restricted/lib/liba.so.meta_lic restricted",
786 "testdata/restricted/bin/bin1.meta_lic testdata/restricted/lib/libc.a.meta_lic testdata/restricted/lib/liba.so.meta_lic restricted",
787 "testdata/restricted/bin/bin1.meta_lic testdata/restricted/lib/libc.a.meta_lic testdata/restricted/lib/libc.a.meta_lic reciprocal",
788 "testdata/restricted/lib/liba.so.meta_lic testdata/restricted/lib/liba.so.meta_lic testdata/restricted/lib/liba.so.meta_lic restricted",
789 "testdata/restricted/lib/libc.a.meta_lic testdata/restricted/lib/libc.a.meta_lic testdata/restricted/lib/libc.a.meta_lic reciprocal",
790 },
791 },
792 {
793 condition: "restricted",
794 name: "library",
795 roots: []string{"lib/libd.so.meta_lic"},
796 expectedOut: []string{
797 "testdata/restricted/lib/libd.so.meta_lic testdata/restricted/lib/libd.so.meta_lic testdata/restricted/lib/libd.so.meta_lic notice",
798 },
799 },
800 {
801 condition: "proprietary",
802 name: "apex",
803 roots: []string{"highest.apex.meta_lic"},
804 expectedOut: []string{
805 "testdata/proprietary/bin/bin1.meta_lic testdata/proprietary/bin/bin1.meta_lic testdata/proprietary/bin/bin1.meta_lic notice",
806 "testdata/proprietary/bin/bin1.meta_lic testdata/proprietary/lib/liba.so.meta_lic testdata/proprietary/lib/liba.so.meta_lic by_exception_only:proprietary",
807 "testdata/proprietary/bin/bin1.meta_lic testdata/proprietary/lib/libc.a.meta_lic testdata/proprietary/lib/libc.a.meta_lic by_exception_only:proprietary",
808 "testdata/proprietary/bin/bin2.meta_lic testdata/proprietary/bin/bin2.meta_lic testdata/proprietary/bin/bin2.meta_lic by_exception_only:proprietary",
809 "testdata/proprietary/bin/bin2.meta_lic testdata/proprietary/bin/bin2.meta_lic testdata/proprietary/lib/libb.so.meta_lic restricted",
810 "testdata/proprietary/bin/bin2.meta_lic testdata/proprietary/lib/libb.so.meta_lic testdata/proprietary/lib/libb.so.meta_lic restricted",
811 "testdata/proprietary/bin/bin2.meta_lic testdata/proprietary/lib/libd.so.meta_lic testdata/proprietary/lib/libb.so.meta_lic restricted",
812 "testdata/proprietary/highest.apex.meta_lic testdata/proprietary/bin/bin1.meta_lic testdata/proprietary/bin/bin1.meta_lic notice",
813 "testdata/proprietary/highest.apex.meta_lic testdata/proprietary/bin/bin2.meta_lic testdata/proprietary/bin/bin2.meta_lic by_exception_only:proprietary",
814 "testdata/proprietary/highest.apex.meta_lic testdata/proprietary/bin/bin2.meta_lic testdata/proprietary/lib/libb.so.meta_lic restricted",
815 "testdata/proprietary/highest.apex.meta_lic testdata/proprietary/highest.apex.meta_lic testdata/proprietary/highest.apex.meta_lic notice",
816 "testdata/proprietary/highest.apex.meta_lic testdata/proprietary/highest.apex.meta_lic testdata/proprietary/lib/libb.so.meta_lic restricted",
817 "testdata/proprietary/highest.apex.meta_lic testdata/proprietary/lib/liba.so.meta_lic testdata/proprietary/lib/liba.so.meta_lic by_exception_only:proprietary",
818 "testdata/proprietary/highest.apex.meta_lic testdata/proprietary/lib/libb.so.meta_lic testdata/proprietary/lib/libb.so.meta_lic restricted",
819 "testdata/proprietary/highest.apex.meta_lic testdata/proprietary/lib/libc.a.meta_lic testdata/proprietary/lib/libc.a.meta_lic by_exception_only:proprietary",
820 "testdata/proprietary/highest.apex.meta_lic testdata/proprietary/lib/libd.so.meta_lic testdata/proprietary/lib/libb.so.meta_lic restricted",
821 "testdata/proprietary/lib/liba.so.meta_lic testdata/proprietary/lib/liba.so.meta_lic testdata/proprietary/lib/liba.so.meta_lic by_exception_only:proprietary",
822 "testdata/proprietary/lib/libb.so.meta_lic testdata/proprietary/lib/libb.so.meta_lic testdata/proprietary/lib/libb.so.meta_lic restricted",
823 "testdata/proprietary/lib/libc.a.meta_lic testdata/proprietary/lib/libc.a.meta_lic testdata/proprietary/lib/libc.a.meta_lic by_exception_only:proprietary",
824 "testdata/proprietary/lib/libd.so.meta_lic testdata/proprietary/lib/libd.so.meta_lic testdata/proprietary/lib/libd.so.meta_lic notice",
825 },
826 },
827 {
828 condition: "proprietary",
829 name: "apex_trimmed",
830 roots: []string{"highest.apex.meta_lic"},
831 ctx: context{stripPrefix: "testdata/proprietary/"},
832 expectedOut: []string{
833 "bin/bin1.meta_lic bin/bin1.meta_lic bin/bin1.meta_lic notice",
834 "bin/bin1.meta_lic lib/liba.so.meta_lic lib/liba.so.meta_lic by_exception_only:proprietary",
835 "bin/bin1.meta_lic lib/libc.a.meta_lic lib/libc.a.meta_lic by_exception_only:proprietary",
836 "bin/bin2.meta_lic bin/bin2.meta_lic bin/bin2.meta_lic by_exception_only:proprietary",
837 "bin/bin2.meta_lic bin/bin2.meta_lic lib/libb.so.meta_lic restricted",
838 "bin/bin2.meta_lic lib/libb.so.meta_lic lib/libb.so.meta_lic restricted",
839 "bin/bin2.meta_lic lib/libd.so.meta_lic lib/libb.so.meta_lic restricted",
840 "highest.apex.meta_lic bin/bin1.meta_lic bin/bin1.meta_lic notice",
841 "highest.apex.meta_lic bin/bin2.meta_lic bin/bin2.meta_lic by_exception_only:proprietary",
842 "highest.apex.meta_lic bin/bin2.meta_lic lib/libb.so.meta_lic restricted",
843 "highest.apex.meta_lic highest.apex.meta_lic highest.apex.meta_lic notice",
844 "highest.apex.meta_lic highest.apex.meta_lic lib/libb.so.meta_lic restricted",
845 "highest.apex.meta_lic lib/liba.so.meta_lic lib/liba.so.meta_lic by_exception_only:proprietary",
846 "highest.apex.meta_lic lib/libb.so.meta_lic lib/libb.so.meta_lic restricted",
847 "highest.apex.meta_lic lib/libc.a.meta_lic lib/libc.a.meta_lic by_exception_only:proprietary",
848 "highest.apex.meta_lic lib/libd.so.meta_lic lib/libb.so.meta_lic restricted",
849 "lib/liba.so.meta_lic lib/liba.so.meta_lic lib/liba.so.meta_lic by_exception_only:proprietary",
850 "lib/libb.so.meta_lic lib/libb.so.meta_lic lib/libb.so.meta_lic restricted",
851 "lib/libc.a.meta_lic lib/libc.a.meta_lic lib/libc.a.meta_lic by_exception_only:proprietary",
852 "lib/libd.so.meta_lic lib/libd.so.meta_lic lib/libd.so.meta_lic notice",
853 },
854 },
855 {
856 condition: "proprietary",
857 name: "apex_trimmed_notice",
858 roots: []string{"highest.apex.meta_lic"},
859 ctx: context{
860 conditions: []string{"notice"},
861 stripPrefix: "testdata/proprietary/",
862 },
863 expectedOut: []string{
864 "bin/bin1.meta_lic bin/bin1.meta_lic bin/bin1.meta_lic notice",
865 "highest.apex.meta_lic bin/bin1.meta_lic bin/bin1.meta_lic notice",
866 "highest.apex.meta_lic highest.apex.meta_lic highest.apex.meta_lic notice",
867 },
868 },
869 {
870 condition: "proprietary",
871 name: "apex_trimmed_share",
872 roots: []string{"highest.apex.meta_lic"},
873 ctx: context{
874 conditions: []string{"reciprocal", "restricted"},
875 stripPrefix: "testdata/proprietary/",
876 },
877 expectedOut: []string{
878 "bin/bin2.meta_lic bin/bin2.meta_lic lib/libb.so.meta_lic restricted",
879 "bin/bin2.meta_lic lib/libb.so.meta_lic lib/libb.so.meta_lic restricted",
880 "highest.apex.meta_lic bin/bin2.meta_lic lib/libb.so.meta_lic restricted",
881 "highest.apex.meta_lic highest.apex.meta_lic lib/libb.so.meta_lic restricted",
882 "highest.apex.meta_lic lib/libb.so.meta_lic lib/libb.so.meta_lic restricted",
883 "lib/libb.so.meta_lic lib/libb.so.meta_lic lib/libb.so.meta_lic restricted",
884 },
885 },
886 {
887 condition: "proprietary",
888 name: "apex_trimmed_private",
889 roots: []string{"highest.apex.meta_lic"},
890 ctx: context{
891 conditions: []string{"proprietary"},
892 stripPrefix: "testdata/proprietary/",
893 },
894 expectedOut: []string{
895 "bin/bin1.meta_lic lib/liba.so.meta_lic lib/liba.so.meta_lic proprietary",
896 "bin/bin1.meta_lic lib/libc.a.meta_lic lib/libc.a.meta_lic proprietary",
897 "bin/bin2.meta_lic bin/bin2.meta_lic bin/bin2.meta_lic proprietary",
898 "highest.apex.meta_lic bin/bin2.meta_lic bin/bin2.meta_lic proprietary",
899 "highest.apex.meta_lic lib/liba.so.meta_lic lib/liba.so.meta_lic proprietary",
900 "highest.apex.meta_lic lib/libc.a.meta_lic lib/libc.a.meta_lic proprietary",
901 "lib/liba.so.meta_lic lib/liba.so.meta_lic lib/liba.so.meta_lic proprietary",
902 },
903 },
904 {
905 condition: "proprietary",
906 name: "apex_trimmed_share_private",
907 roots: []string{"highest.apex.meta_lic"},
908 ctx: context{
909 conditions: []string{"reciprocal", "restricted", "proprietary"},
910 stripPrefix: "testdata/proprietary/",
911 },
912 expectedOut: []string{
913 "bin/bin1.meta_lic lib/liba.so.meta_lic lib/liba.so.meta_lic proprietary",
914 "bin/bin1.meta_lic lib/libc.a.meta_lic lib/libc.a.meta_lic proprietary",
915 "bin/bin2.meta_lic bin/bin2.meta_lic bin/bin2.meta_lic proprietary",
916 "bin/bin2.meta_lic bin/bin2.meta_lic lib/libb.so.meta_lic restricted",
917 "bin/bin2.meta_lic lib/libb.so.meta_lic lib/libb.so.meta_lic restricted",
918 "highest.apex.meta_lic bin/bin2.meta_lic bin/bin2.meta_lic proprietary",
919 "highest.apex.meta_lic bin/bin2.meta_lic lib/libb.so.meta_lic restricted",
920 "highest.apex.meta_lic highest.apex.meta_lic lib/libb.so.meta_lic restricted",
921 "highest.apex.meta_lic lib/liba.so.meta_lic lib/liba.so.meta_lic proprietary",
922 "highest.apex.meta_lic lib/libb.so.meta_lic lib/libb.so.meta_lic restricted",
923 "highest.apex.meta_lic lib/libc.a.meta_lic lib/libc.a.meta_lic proprietary",
924 "lib/liba.so.meta_lic lib/liba.so.meta_lic lib/liba.so.meta_lic proprietary",
925 "lib/libb.so.meta_lic lib/libb.so.meta_lic lib/libb.so.meta_lic restricted",
926 },
927 },
928 {
929 condition: "proprietary",
930 name: "apex_trimmed_labelled",
931 roots: []string{"highest.apex.meta_lic"},
932 ctx: context{stripPrefix: "testdata/proprietary/", labelConditions: true},
933 expectedOut: []string{
934 "bin/bin1.meta_lic:notice bin/bin1.meta_lic:notice bin/bin1.meta_lic:notice notice",
935 "bin/bin1.meta_lic:notice lib/liba.so.meta_lic:by_exception_only:proprietary lib/liba.so.meta_lic:by_exception_only:proprietary by_exception_only:proprietary",
936 "bin/bin1.meta_lic:notice lib/libc.a.meta_lic:by_exception_only:proprietary lib/libc.a.meta_lic:by_exception_only:proprietary by_exception_only:proprietary",
937 "bin/bin2.meta_lic:by_exception_only:proprietary bin/bin2.meta_lic:by_exception_only:proprietary bin/bin2.meta_lic:by_exception_only:proprietary by_exception_only:proprietary",
938 "bin/bin2.meta_lic:by_exception_only:proprietary bin/bin2.meta_lic:by_exception_only:proprietary lib/libb.so.meta_lic:restricted restricted",
939 "bin/bin2.meta_lic:by_exception_only:proprietary lib/libb.so.meta_lic:restricted lib/libb.so.meta_lic:restricted restricted",
940 "bin/bin2.meta_lic:by_exception_only:proprietary lib/libd.so.meta_lic:notice lib/libb.so.meta_lic:restricted restricted",
941 "highest.apex.meta_lic:notice bin/bin1.meta_lic:notice bin/bin1.meta_lic:notice notice",
942 "highest.apex.meta_lic:notice bin/bin2.meta_lic:by_exception_only:proprietary bin/bin2.meta_lic:by_exception_only:proprietary by_exception_only:proprietary",
943 "highest.apex.meta_lic:notice bin/bin2.meta_lic:by_exception_only:proprietary lib/libb.so.meta_lic:restricted restricted",
944 "highest.apex.meta_lic:notice highest.apex.meta_lic:notice highest.apex.meta_lic:notice notice",
945 "highest.apex.meta_lic:notice highest.apex.meta_lic:notice lib/libb.so.meta_lic:restricted restricted",
946 "highest.apex.meta_lic:notice lib/liba.so.meta_lic:by_exception_only:proprietary lib/liba.so.meta_lic:by_exception_only:proprietary by_exception_only:proprietary",
947 "highest.apex.meta_lic:notice lib/libb.so.meta_lic:restricted lib/libb.so.meta_lic:restricted restricted",
948 "highest.apex.meta_lic:notice lib/libc.a.meta_lic:by_exception_only:proprietary lib/libc.a.meta_lic:by_exception_only:proprietary by_exception_only:proprietary",
949 "highest.apex.meta_lic:notice lib/libd.so.meta_lic:notice lib/libb.so.meta_lic:restricted restricted",
950 "lib/liba.so.meta_lic:by_exception_only:proprietary lib/liba.so.meta_lic:by_exception_only:proprietary lib/liba.so.meta_lic:by_exception_only:proprietary by_exception_only:proprietary",
951 "lib/libb.so.meta_lic:restricted lib/libb.so.meta_lic:restricted lib/libb.so.meta_lic:restricted restricted",
952 "lib/libc.a.meta_lic:by_exception_only:proprietary lib/libc.a.meta_lic:by_exception_only:proprietary lib/libc.a.meta_lic:by_exception_only:proprietary by_exception_only:proprietary",
953 "lib/libd.so.meta_lic:notice lib/libd.so.meta_lic:notice lib/libd.so.meta_lic:notice notice",
954 },
955 },
956 {
957 condition: "proprietary",
958 name: "container",
959 roots: []string{"container.zip.meta_lic"},
960 expectedOut: []string{
961 "testdata/proprietary/bin/bin1.meta_lic testdata/proprietary/bin/bin1.meta_lic testdata/proprietary/bin/bin1.meta_lic notice",
962 "testdata/proprietary/bin/bin1.meta_lic testdata/proprietary/lib/liba.so.meta_lic testdata/proprietary/lib/liba.so.meta_lic by_exception_only:proprietary",
963 "testdata/proprietary/bin/bin1.meta_lic testdata/proprietary/lib/libc.a.meta_lic testdata/proprietary/lib/libc.a.meta_lic by_exception_only:proprietary",
964 "testdata/proprietary/bin/bin2.meta_lic testdata/proprietary/bin/bin2.meta_lic testdata/proprietary/bin/bin2.meta_lic by_exception_only:proprietary",
965 "testdata/proprietary/bin/bin2.meta_lic testdata/proprietary/bin/bin2.meta_lic testdata/proprietary/lib/libb.so.meta_lic restricted",
966 "testdata/proprietary/bin/bin2.meta_lic testdata/proprietary/lib/libb.so.meta_lic testdata/proprietary/lib/libb.so.meta_lic restricted",
967 "testdata/proprietary/bin/bin2.meta_lic testdata/proprietary/lib/libd.so.meta_lic testdata/proprietary/lib/libb.so.meta_lic restricted",
968 "testdata/proprietary/container.zip.meta_lic testdata/proprietary/bin/bin1.meta_lic testdata/proprietary/bin/bin1.meta_lic notice",
969 "testdata/proprietary/container.zip.meta_lic testdata/proprietary/bin/bin2.meta_lic testdata/proprietary/bin/bin2.meta_lic by_exception_only:proprietary",
970 "testdata/proprietary/container.zip.meta_lic testdata/proprietary/bin/bin2.meta_lic testdata/proprietary/lib/libb.so.meta_lic restricted",
971 "testdata/proprietary/container.zip.meta_lic testdata/proprietary/container.zip.meta_lic testdata/proprietary/container.zip.meta_lic notice",
972 "testdata/proprietary/container.zip.meta_lic testdata/proprietary/container.zip.meta_lic testdata/proprietary/lib/libb.so.meta_lic restricted",
973 "testdata/proprietary/container.zip.meta_lic testdata/proprietary/lib/liba.so.meta_lic testdata/proprietary/lib/liba.so.meta_lic by_exception_only:proprietary",
974 "testdata/proprietary/container.zip.meta_lic testdata/proprietary/lib/libb.so.meta_lic testdata/proprietary/lib/libb.so.meta_lic restricted",
975 "testdata/proprietary/container.zip.meta_lic testdata/proprietary/lib/libc.a.meta_lic testdata/proprietary/lib/libc.a.meta_lic by_exception_only:proprietary",
976 "testdata/proprietary/container.zip.meta_lic testdata/proprietary/lib/libd.so.meta_lic testdata/proprietary/lib/libb.so.meta_lic restricted",
977 "testdata/proprietary/lib/liba.so.meta_lic testdata/proprietary/lib/liba.so.meta_lic testdata/proprietary/lib/liba.so.meta_lic by_exception_only:proprietary",
978 "testdata/proprietary/lib/libb.so.meta_lic testdata/proprietary/lib/libb.so.meta_lic testdata/proprietary/lib/libb.so.meta_lic restricted",
979 "testdata/proprietary/lib/libc.a.meta_lic testdata/proprietary/lib/libc.a.meta_lic testdata/proprietary/lib/libc.a.meta_lic by_exception_only:proprietary",
980 "testdata/proprietary/lib/libd.so.meta_lic testdata/proprietary/lib/libd.so.meta_lic testdata/proprietary/lib/libd.so.meta_lic notice",
981 },
982 },
983 {
984 condition: "proprietary",
985 name: "application",
986 roots: []string{"application.meta_lic"},
987 expectedOut: []string{
988 "testdata/proprietary/application.meta_lic testdata/proprietary/application.meta_lic testdata/proprietary/application.meta_lic notice",
989 "testdata/proprietary/application.meta_lic testdata/proprietary/application.meta_lic testdata/proprietary/lib/libb.so.meta_lic restricted",
990 "testdata/proprietary/application.meta_lic testdata/proprietary/lib/liba.so.meta_lic testdata/proprietary/lib/liba.so.meta_lic by_exception_only:proprietary",
991 "testdata/proprietary/application.meta_lic testdata/proprietary/lib/liba.so.meta_lic testdata/proprietary/lib/libb.so.meta_lic restricted",
992 "testdata/proprietary/application.meta_lic testdata/proprietary/lib/libb.so.meta_lic testdata/proprietary/lib/libb.so.meta_lic restricted",
993 "testdata/proprietary/bin/bin3.meta_lic testdata/proprietary/bin/bin3.meta_lic testdata/proprietary/bin/bin3.meta_lic restricted",
994 "testdata/proprietary/lib/liba.so.meta_lic testdata/proprietary/lib/liba.so.meta_lic testdata/proprietary/lib/liba.so.meta_lic by_exception_only:proprietary",
995 "testdata/proprietary/lib/libb.so.meta_lic testdata/proprietary/lib/libb.so.meta_lic testdata/proprietary/lib/libb.so.meta_lic restricted",
996 },
997 },
998 {
999 condition: "proprietary",
1000 name: "binary",
1001 roots: []string{"bin/bin1.meta_lic"},
1002 expectedOut: []string{
1003 "testdata/proprietary/bin/bin1.meta_lic testdata/proprietary/bin/bin1.meta_lic testdata/proprietary/bin/bin1.meta_lic notice",
1004 "testdata/proprietary/bin/bin1.meta_lic testdata/proprietary/lib/liba.so.meta_lic testdata/proprietary/lib/liba.so.meta_lic by_exception_only:proprietary",
1005 "testdata/proprietary/bin/bin1.meta_lic testdata/proprietary/lib/libc.a.meta_lic testdata/proprietary/lib/libc.a.meta_lic by_exception_only:proprietary",
1006 "testdata/proprietary/lib/liba.so.meta_lic testdata/proprietary/lib/liba.so.meta_lic testdata/proprietary/lib/liba.so.meta_lic by_exception_only:proprietary",
1007 "testdata/proprietary/lib/libc.a.meta_lic testdata/proprietary/lib/libc.a.meta_lic testdata/proprietary/lib/libc.a.meta_lic by_exception_only:proprietary",
1008 },
1009 },
1010 {
1011 condition: "proprietary",
1012 name: "library",
1013 roots: []string{"lib/libd.so.meta_lic"},
1014 expectedOut: []string{
1015 "testdata/proprietary/lib/libd.so.meta_lic testdata/proprietary/lib/libd.so.meta_lic testdata/proprietary/lib/libd.so.meta_lic notice",
1016 },
1017 },
1018 }
1019 for _, tt := range tests {
1020 t.Run(tt.condition+" "+tt.name, func(t *testing.T) {
1021 expectedOut := &bytes.Buffer{}
1022 for _, eo := range tt.expectedOut {
1023 expectedOut.WriteString(eo)
1024 expectedOut.WriteString("\n")
1025 }
1026
1027 stdout := &bytes.Buffer{}
1028 stderr := &bytes.Buffer{}
1029
1030 rootFiles := make([]string, 0, len(tt.roots))
1031 for _, r := range tt.roots {
1032 rootFiles = append(rootFiles, "testdata/"+tt.condition+"/"+r)
1033 }
1034 err := dumpResolutions(&tt.ctx, stdout, stderr, rootFiles...)
1035 if err != nil {
1036 t.Fatalf("dumpresolutions: error = %v, stderr = %v", err, stderr)
1037 return
1038 }
1039 if stderr.Len() > 0 {
1040 t.Errorf("dumpresolutions: gotStderr = %v, want none", stderr)
1041 }
1042 out := stdout.String()
1043 expected := expectedOut.String()
1044 if out != expected {
1045 outList := strings.Split(out, "\n")
1046 expectedList := strings.Split(expected, "\n")
1047 startLine := 0
1048 for len(outList) > startLine && len(expectedList) > startLine && outList[startLine] == expectedList[startLine] {
1049 startLine++
1050 }
1051 t.Errorf("listshare: gotStdout = %v, want %v, somewhere near line %d Stdout = %v, want %v",
1052 out, expected, startLine+1, outList[startLine], expectedList[startLine])
1053 }
1054 })
1055 }
1056}
1057
1058type testContext struct {
1059 nextNode int
1060 nodes map[string]string
1061}
1062
1063type matcher interface {
1064 matchString(*testContext) string
1065 typeString() string
1066}
1067
1068type targetMatcher struct {
1069 target string
1070 conditions []string
1071}
1072
1073func (tm *targetMatcher) matchString(ctx *testContext) string {
1074 m := tm.target
1075 if len(tm.conditions) > 0 {
1076 m += "\\n" + strings.Join(tm.conditions, "\\n")
1077 }
1078 m = ctx.nodes[tm.target] + " [label=\"" + m + "\"];"
1079 return m
1080}
1081
1082func (tm *targetMatcher) typeString() string {
1083 return "target"
1084}
1085
1086type resolutionMatcher struct {
1087 appliesTo string
1088 actsOn string
1089 origin string
1090 conditions []string
1091}
1092
1093func (rm *resolutionMatcher) matchString(ctx *testContext) string {
1094 return ctx.nodes[rm.appliesTo] + " -> " + ctx.nodes[rm.actsOn] + "; " +
1095 ctx.nodes[rm.actsOn] + " -> " + ctx.nodes[rm.origin] +
1096 " [label=\"" + strings.Join(rm.conditions, "\\n") + "\"];"
1097}
1098
1099func (rm *resolutionMatcher) typeString() string {
1100 return "resolution"
1101}
1102
1103type getMatcher func(*testContext) matcher
1104
1105func matchTarget(target string, conditions ...string) getMatcher {
1106 return func(ctx *testContext) matcher {
1107 ctx.nodes[target] = fmt.Sprintf("n%d", ctx.nextNode)
1108 ctx.nextNode++
1109 return &targetMatcher{target, append([]string{}, conditions...)}
1110 }
1111}
1112
1113func matchResolution(appliesTo, actsOn, origin string, conditions ...string) getMatcher {
1114 return func(ctx *testContext) matcher {
1115 if _, ok := ctx.nodes[appliesTo]; !ok {
1116 ctx.nodes[appliesTo] = fmt.Sprintf("unknown%d", ctx.nextNode)
1117 ctx.nextNode++
1118 }
1119 if _, ok := ctx.nodes[actsOn]; !ok {
1120 ctx.nodes[actsOn] = fmt.Sprintf("unknown%d", ctx.nextNode)
1121 ctx.nextNode++
1122 }
1123 if _, ok := ctx.nodes[origin]; !ok {
1124 ctx.nodes[origin] = fmt.Sprintf("unknown%d", ctx.nextNode)
1125 ctx.nextNode++
1126 }
1127 return &resolutionMatcher{appliesTo, actsOn, origin, append([]string{}, conditions...)}
1128 }
1129}
1130
1131func Test_graphviz(t *testing.T) {
1132 tests := []struct {
1133 condition string
1134 name string
1135 roots []string
1136 ctx context
1137 expectedOut []getMatcher
1138 }{
1139 {
1140 condition: "firstparty",
1141 name: "apex",
1142 roots: []string{"highest.apex.meta_lic"},
1143 expectedOut: []getMatcher{
1144 matchTarget("testdata/firstparty/bin/bin1.meta_lic"),
1145 matchTarget("testdata/firstparty/lib/liba.so.meta_lic"),
1146 matchTarget("testdata/firstparty/lib/libc.a.meta_lic"),
1147 matchTarget("testdata/firstparty/bin/bin2.meta_lic"),
1148 matchTarget("testdata/firstparty/highest.apex.meta_lic"),
1149 matchTarget("testdata/firstparty/lib/libb.so.meta_lic"),
1150 matchTarget("testdata/firstparty/lib/libd.so.meta_lic"),
1151 matchResolution(
1152 "testdata/firstparty/bin/bin1.meta_lic",
1153 "testdata/firstparty/bin/bin1.meta_lic",
1154 "testdata/firstparty/bin/bin1.meta_lic",
1155 "notice"),
1156 matchResolution(
1157 "testdata/firstparty/bin/bin1.meta_lic",
1158 "testdata/firstparty/lib/liba.so.meta_lic",
1159 "testdata/firstparty/lib/liba.so.meta_lic",
1160 "notice"),
1161 matchResolution(
1162 "testdata/firstparty/bin/bin1.meta_lic",
1163 "testdata/firstparty/lib/libc.a.meta_lic",
1164 "testdata/firstparty/lib/libc.a.meta_lic",
1165 "notice"),
1166 matchResolution(
1167 "testdata/firstparty/bin/bin2.meta_lic",
1168 "testdata/firstparty/bin/bin2.meta_lic",
1169 "testdata/firstparty/bin/bin2.meta_lic",
1170 "notice"),
1171 matchResolution(
1172 "testdata/firstparty/highest.apex.meta_lic",
1173 "testdata/firstparty/bin/bin1.meta_lic",
1174 "testdata/firstparty/bin/bin1.meta_lic",
1175 "notice"),
1176 matchResolution(
1177 "testdata/firstparty/highest.apex.meta_lic",
1178 "testdata/firstparty/bin/bin2.meta_lic",
1179 "testdata/firstparty/bin/bin2.meta_lic",
1180 "notice"),
1181 matchResolution(
1182 "testdata/firstparty/highest.apex.meta_lic",
1183 "testdata/firstparty/highest.apex.meta_lic",
1184 "testdata/firstparty/highest.apex.meta_lic",
1185 "notice"),
1186 matchResolution(
1187 "testdata/firstparty/highest.apex.meta_lic",
1188 "testdata/firstparty/lib/liba.so.meta_lic",
1189 "testdata/firstparty/lib/liba.so.meta_lic",
1190 "notice"),
1191 matchResolution(
1192 "testdata/firstparty/highest.apex.meta_lic",
1193 "testdata/firstparty/lib/libb.so.meta_lic",
1194 "testdata/firstparty/lib/libb.so.meta_lic",
1195 "notice"),
1196 matchResolution(
1197 "testdata/firstparty/highest.apex.meta_lic",
1198 "testdata/firstparty/lib/libc.a.meta_lic",
1199 "testdata/firstparty/lib/libc.a.meta_lic",
1200 "notice"),
1201 matchResolution(
1202 "testdata/firstparty/lib/liba.so.meta_lic",
1203 "testdata/firstparty/lib/liba.so.meta_lic",
1204 "testdata/firstparty/lib/liba.so.meta_lic",
1205 "notice"),
1206 matchResolution(
1207 "testdata/firstparty/lib/libb.so.meta_lic",
1208 "testdata/firstparty/lib/libb.so.meta_lic",
1209 "testdata/firstparty/lib/libb.so.meta_lic",
1210 "notice"),
1211 matchResolution(
1212 "testdata/firstparty/lib/libc.a.meta_lic",
1213 "testdata/firstparty/lib/libc.a.meta_lic",
1214 "testdata/firstparty/lib/libc.a.meta_lic",
1215 "notice"),
1216 matchResolution(
1217 "testdata/firstparty/lib/libd.so.meta_lic",
1218 "testdata/firstparty/lib/libd.so.meta_lic",
1219 "testdata/firstparty/lib/libd.so.meta_lic",
1220 "notice"),
1221 },
1222 },
1223 {
1224 condition: "firstparty",
1225 name: "apex_trimmed",
1226 roots: []string{"highest.apex.meta_lic"},
1227 ctx: context{stripPrefix: "testdata/firstparty/"},
1228 expectedOut: []getMatcher{
1229 matchTarget("bin/bin1.meta_lic"),
1230 matchTarget("lib/liba.so.meta_lic"),
1231 matchTarget("lib/libc.a.meta_lic"),
1232 matchTarget("bin/bin2.meta_lic"),
1233 matchTarget("highest.apex.meta_lic"),
1234 matchTarget("lib/libb.so.meta_lic"),
1235 matchTarget("lib/libd.so.meta_lic"),
1236 matchResolution(
1237 "bin/bin1.meta_lic",
1238 "bin/bin1.meta_lic",
1239 "bin/bin1.meta_lic",
1240 "notice"),
1241 matchResolution(
1242 "bin/bin1.meta_lic",
1243 "lib/liba.so.meta_lic",
1244 "lib/liba.so.meta_lic",
1245 "notice"),
1246 matchResolution(
1247 "bin/bin1.meta_lic",
1248 "lib/libc.a.meta_lic",
1249 "lib/libc.a.meta_lic",
1250 "notice"),
1251 matchResolution(
1252 "bin/bin2.meta_lic",
1253 "bin/bin2.meta_lic",
1254 "bin/bin2.meta_lic",
1255 "notice"),
1256 matchResolution(
1257 "highest.apex.meta_lic",
1258 "bin/bin1.meta_lic",
1259 "bin/bin1.meta_lic",
1260 "notice"),
1261 matchResolution(
1262 "highest.apex.meta_lic",
1263 "bin/bin2.meta_lic",
1264 "bin/bin2.meta_lic",
1265 "notice"),
1266 matchResolution(
1267 "highest.apex.meta_lic",
1268 "highest.apex.meta_lic",
1269 "highest.apex.meta_lic",
1270 "notice"),
1271 matchResolution(
1272 "highest.apex.meta_lic",
1273 "lib/liba.so.meta_lic",
1274 "lib/liba.so.meta_lic",
1275 "notice"),
1276 matchResolution(
1277 "highest.apex.meta_lic",
1278 "lib/libb.so.meta_lic",
1279 "lib/libb.so.meta_lic",
1280 "notice"),
1281 matchResolution(
1282 "highest.apex.meta_lic",
1283 "lib/libc.a.meta_lic",
1284 "lib/libc.a.meta_lic",
1285 "notice"),
1286 matchResolution(
1287 "lib/liba.so.meta_lic",
1288 "lib/liba.so.meta_lic",
1289 "lib/liba.so.meta_lic",
1290 "notice"),
1291 matchResolution(
1292 "lib/libb.so.meta_lic",
1293 "lib/libb.so.meta_lic",
1294 "lib/libb.so.meta_lic",
1295 "notice"),
1296 matchResolution(
1297 "lib/libc.a.meta_lic",
1298 "lib/libc.a.meta_lic",
1299 "lib/libc.a.meta_lic",
1300 "notice"),
1301 matchResolution(
1302 "lib/libd.so.meta_lic",
1303 "lib/libd.so.meta_lic",
1304 "lib/libd.so.meta_lic",
1305 "notice"),
1306 },
1307 },
1308 {
1309 condition: "firstparty",
1310 name: "apex_trimmed_notice",
1311 roots: []string{"highest.apex.meta_lic"},
1312 ctx: context{
1313 conditions: []string{"notice"},
1314 stripPrefix: "testdata/firstparty/",
1315 },
1316 expectedOut: []getMatcher{
1317 matchTarget("bin/bin1.meta_lic"),
1318 matchTarget("lib/liba.so.meta_lic"),
1319 matchTarget("lib/libc.a.meta_lic"),
1320 matchTarget("bin/bin2.meta_lic"),
1321 matchTarget("highest.apex.meta_lic"),
1322 matchTarget("lib/libb.so.meta_lic"),
1323 matchResolution(
1324 "bin/bin1.meta_lic",
1325 "bin/bin1.meta_lic",
1326 "bin/bin1.meta_lic",
1327 "notice"),
1328 matchResolution(
1329 "bin/bin1.meta_lic",
1330 "lib/liba.so.meta_lic",
1331 "lib/liba.so.meta_lic",
1332 "notice"),
1333 matchResolution(
1334 "bin/bin1.meta_lic",
1335 "lib/libc.a.meta_lic",
1336 "lib/libc.a.meta_lic",
1337 "notice"),
1338 matchResolution(
1339 "bin/bin2.meta_lic",
1340 "bin/bin2.meta_lic",
1341 "bin/bin2.meta_lic",
1342 "notice"),
1343 matchResolution(
1344 "highest.apex.meta_lic",
1345 "bin/bin1.meta_lic",
1346 "bin/bin1.meta_lic",
1347 "notice"),
1348 matchResolution(
1349 "highest.apex.meta_lic",
1350 "bin/bin2.meta_lic",
1351 "bin/bin2.meta_lic",
1352 "notice"),
1353 matchResolution(
1354 "highest.apex.meta_lic",
1355 "highest.apex.meta_lic",
1356 "highest.apex.meta_lic",
1357 "notice"),
1358 matchResolution(
1359 "highest.apex.meta_lic",
1360 "lib/liba.so.meta_lic",
1361 "lib/liba.so.meta_lic",
1362 "notice"),
1363 matchResolution(
1364 "highest.apex.meta_lic",
1365 "lib/libb.so.meta_lic",
1366 "lib/libb.so.meta_lic",
1367 "notice"),
1368 matchResolution(
1369 "highest.apex.meta_lic",
1370 "lib/libc.a.meta_lic",
1371 "lib/libc.a.meta_lic",
1372 "notice"),
1373 matchResolution(
1374 "lib/liba.so.meta_lic",
1375 "lib/liba.so.meta_lic",
1376 "lib/liba.so.meta_lic",
1377 "notice"),
1378 matchResolution(
1379 "lib/libb.so.meta_lic",
1380 "lib/libb.so.meta_lic",
1381 "lib/libb.so.meta_lic",
1382 "notice"),
1383 },
1384 },
1385 {
1386 condition: "firstparty",
1387 name: "apex_trimmed_share",
1388 roots: []string{"highest.apex.meta_lic"},
1389 ctx: context{
1390 conditions: []string{"reciprocal", "restricted"},
1391 stripPrefix: "testdata/firstparty/",
1392 },
1393 expectedOut: []getMatcher{},
1394 },
1395 {
1396 condition: "firstparty",
1397 name: "apex_trimmed_private",
1398 roots: []string{"highest.apex.meta_lic"},
1399 ctx: context{
1400 conditions: []string{"proprietary"},
1401 stripPrefix: "testdata/firstparty/",
1402 },
1403 expectedOut: []getMatcher{},
1404 },
1405 {
1406 condition: "firstparty",
1407 name: "apex_trimmed_share_private",
1408 roots: []string{"highest.apex.meta_lic"},
1409 ctx: context{
1410 conditions: []string{"reciprocal", "restricted", "proprietary"},
1411 stripPrefix: "testdata/firstparty/",
1412 },
1413 expectedOut: []getMatcher{},
1414 },
1415 {
1416 condition: "firstparty",
1417 name: "apex_trimmed_labelled",
1418 roots: []string{"highest.apex.meta_lic"},
1419 ctx: context{stripPrefix: "testdata/firstparty/", labelConditions: true},
1420 expectedOut: []getMatcher{
1421 matchTarget("bin/bin1.meta_lic", "notice"),
1422 matchTarget("lib/liba.so.meta_lic", "notice"),
1423 matchTarget("lib/libc.a.meta_lic", "notice"),
1424 matchTarget("bin/bin2.meta_lic", "notice"),
1425 matchTarget("highest.apex.meta_lic", "notice"),
1426 matchTarget("lib/libb.so.meta_lic", "notice"),
1427 matchTarget("lib/libd.so.meta_lic", "notice"),
1428 matchResolution(
1429 "bin/bin1.meta_lic",
1430 "bin/bin1.meta_lic",
1431 "bin/bin1.meta_lic",
1432 "notice"),
1433 matchResolution(
1434 "bin/bin1.meta_lic",
1435 "lib/liba.so.meta_lic",
1436 "lib/liba.so.meta_lic",
1437 "notice"),
1438 matchResolution(
1439 "bin/bin1.meta_lic",
1440 "lib/libc.a.meta_lic",
1441 "lib/libc.a.meta_lic",
1442 "notice"),
1443 matchResolution(
1444 "bin/bin2.meta_lic",
1445 "bin/bin2.meta_lic",
1446 "bin/bin2.meta_lic",
1447 "notice"),
1448 matchResolution(
1449 "highest.apex.meta_lic",
1450 "bin/bin1.meta_lic",
1451 "bin/bin1.meta_lic",
1452 "notice"),
1453 matchResolution(
1454 "highest.apex.meta_lic",
1455 "bin/bin2.meta_lic",
1456 "bin/bin2.meta_lic",
1457 "notice"),
1458 matchResolution(
1459 "highest.apex.meta_lic",
1460 "highest.apex.meta_lic",
1461 "highest.apex.meta_lic",
1462 "notice"),
1463 matchResolution(
1464 "highest.apex.meta_lic",
1465 "lib/liba.so.meta_lic",
1466 "lib/liba.so.meta_lic",
1467 "notice"),
1468 matchResolution(
1469 "highest.apex.meta_lic",
1470 "lib/libb.so.meta_lic",
1471 "lib/libb.so.meta_lic",
1472 "notice"),
1473 matchResolution(
1474 "highest.apex.meta_lic",
1475 "lib/libc.a.meta_lic",
1476 "lib/libc.a.meta_lic",
1477 "notice"),
1478 matchResolution(
1479 "lib/liba.so.meta_lic",
1480 "lib/liba.so.meta_lic",
1481 "lib/liba.so.meta_lic",
1482 "notice"),
1483 matchResolution(
1484 "lib/libb.so.meta_lic",
1485 "lib/libb.so.meta_lic",
1486 "lib/libb.so.meta_lic",
1487 "notice"),
1488 matchResolution(
1489 "lib/libc.a.meta_lic",
1490 "lib/libc.a.meta_lic",
1491 "lib/libc.a.meta_lic",
1492 "notice"),
1493 matchResolution(
1494 "lib/libd.so.meta_lic",
1495 "lib/libd.so.meta_lic",
1496 "lib/libd.so.meta_lic",
1497 "notice"),
1498 },
1499 },
1500 {
1501 condition: "firstparty",
1502 name: "container",
1503 roots: []string{"container.zip.meta_lic"},
1504 expectedOut: []getMatcher{
1505 matchTarget("testdata/firstparty/bin/bin1.meta_lic"),
1506 matchTarget("testdata/firstparty/lib/liba.so.meta_lic"),
1507 matchTarget("testdata/firstparty/lib/libc.a.meta_lic"),
1508 matchTarget("testdata/firstparty/bin/bin2.meta_lic"),
1509 matchTarget("testdata/firstparty/container.zip.meta_lic"),
1510 matchTarget("testdata/firstparty/lib/libb.so.meta_lic"),
1511 matchTarget("testdata/firstparty/lib/libd.so.meta_lic"),
1512 matchResolution(
1513 "testdata/firstparty/bin/bin1.meta_lic",
1514 "testdata/firstparty/bin/bin1.meta_lic",
1515 "testdata/firstparty/bin/bin1.meta_lic",
1516 "notice"),
1517 matchResolution(
1518 "testdata/firstparty/bin/bin1.meta_lic",
1519 "testdata/firstparty/lib/liba.so.meta_lic",
1520 "testdata/firstparty/lib/liba.so.meta_lic",
1521 "notice"),
1522 matchResolution(
1523 "testdata/firstparty/bin/bin1.meta_lic",
1524 "testdata/firstparty/lib/libc.a.meta_lic",
1525 "testdata/firstparty/lib/libc.a.meta_lic",
1526 "notice"),
1527 matchResolution(
1528 "testdata/firstparty/bin/bin2.meta_lic",
1529 "testdata/firstparty/bin/bin2.meta_lic",
1530 "testdata/firstparty/bin/bin2.meta_lic",
1531 "notice"),
1532 matchResolution(
1533 "testdata/firstparty/container.zip.meta_lic",
1534 "testdata/firstparty/bin/bin1.meta_lic",
1535 "testdata/firstparty/bin/bin1.meta_lic",
1536 "notice"),
1537 matchResolution(
1538 "testdata/firstparty/container.zip.meta_lic",
1539 "testdata/firstparty/bin/bin2.meta_lic",
1540 "testdata/firstparty/bin/bin2.meta_lic",
1541 "notice"),
1542 matchResolution(
1543 "testdata/firstparty/container.zip.meta_lic",
1544 "testdata/firstparty/container.zip.meta_lic",
1545 "testdata/firstparty/container.zip.meta_lic",
1546 "notice"),
1547 matchResolution(
1548 "testdata/firstparty/container.zip.meta_lic",
1549 "testdata/firstparty/lib/liba.so.meta_lic",
1550 "testdata/firstparty/lib/liba.so.meta_lic",
1551 "notice"),
1552 matchResolution(
1553 "testdata/firstparty/container.zip.meta_lic",
1554 "testdata/firstparty/lib/libb.so.meta_lic",
1555 "testdata/firstparty/lib/libb.so.meta_lic",
1556 "notice"),
1557 matchResolution(
1558 "testdata/firstparty/container.zip.meta_lic",
1559 "testdata/firstparty/lib/libc.a.meta_lic",
1560 "testdata/firstparty/lib/libc.a.meta_lic",
1561 "notice"),
1562 matchResolution(
1563 "testdata/firstparty/lib/liba.so.meta_lic",
1564 "testdata/firstparty/lib/liba.so.meta_lic",
1565 "testdata/firstparty/lib/liba.so.meta_lic",
1566 "notice"),
1567 matchResolution(
1568 "testdata/firstparty/lib/libb.so.meta_lic",
1569 "testdata/firstparty/lib/libb.so.meta_lic",
1570 "testdata/firstparty/lib/libb.so.meta_lic",
1571 "notice"),
1572 matchResolution(
1573 "testdata/firstparty/lib/libc.a.meta_lic",
1574 "testdata/firstparty/lib/libc.a.meta_lic",
1575 "testdata/firstparty/lib/libc.a.meta_lic",
1576 "notice"),
1577 matchResolution(
1578 "testdata/firstparty/lib/libd.so.meta_lic",
1579 "testdata/firstparty/lib/libd.so.meta_lic",
1580 "testdata/firstparty/lib/libd.so.meta_lic",
1581 "notice"),
1582 },
1583 },
1584 {
1585 condition: "firstparty",
1586 name: "application",
1587 roots: []string{"application.meta_lic"},
1588 expectedOut: []getMatcher{
1589 matchTarget("testdata/firstparty/application.meta_lic"),
1590 matchTarget("testdata/firstparty/lib/liba.so.meta_lic"),
1591 matchTarget("testdata/firstparty/bin/bin3.meta_lic"),
1592 matchTarget("testdata/firstparty/lib/libb.so.meta_lic"),
1593 matchResolution(
1594 "testdata/firstparty/application.meta_lic",
1595 "testdata/firstparty/application.meta_lic",
1596 "testdata/firstparty/application.meta_lic",
1597 "notice"),
1598 matchResolution(
1599 "testdata/firstparty/application.meta_lic",
1600 "testdata/firstparty/lib/liba.so.meta_lic",
1601 "testdata/firstparty/lib/liba.so.meta_lic",
1602 "notice"),
1603 matchResolution(
1604 "testdata/firstparty/bin/bin3.meta_lic",
1605 "testdata/firstparty/bin/bin3.meta_lic",
1606 "testdata/firstparty/bin/bin3.meta_lic",
1607 "notice"),
1608 matchResolution(
1609 "testdata/firstparty/lib/liba.so.meta_lic",
1610 "testdata/firstparty/lib/liba.so.meta_lic",
1611 "testdata/firstparty/lib/liba.so.meta_lic",
1612 "notice"),
1613 matchResolution(
1614 "testdata/firstparty/lib/libb.so.meta_lic",
1615 "testdata/firstparty/lib/libb.so.meta_lic",
1616 "testdata/firstparty/lib/libb.so.meta_lic",
1617 "notice"),
1618 },
1619 },
1620 {
1621 condition: "firstparty",
1622 name: "binary",
1623 roots: []string{"bin/bin1.meta_lic"},
1624 expectedOut: []getMatcher{
1625 matchTarget("testdata/firstparty/bin/bin1.meta_lic"),
1626 matchTarget("testdata/firstparty/lib/liba.so.meta_lic"),
1627 matchTarget("testdata/firstparty/lib/libc.a.meta_lic"),
1628 matchResolution(
1629 "testdata/firstparty/bin/bin1.meta_lic",
1630 "testdata/firstparty/bin/bin1.meta_lic",
1631 "testdata/firstparty/bin/bin1.meta_lic",
1632 "notice"),
1633 matchResolution(
1634 "testdata/firstparty/bin/bin1.meta_lic",
1635 "testdata/firstparty/lib/liba.so.meta_lic",
1636 "testdata/firstparty/lib/liba.so.meta_lic",
1637 "notice"),
1638 matchResolution(
1639 "testdata/firstparty/bin/bin1.meta_lic",
1640 "testdata/firstparty/lib/libc.a.meta_lic",
1641 "testdata/firstparty/lib/libc.a.meta_lic",
1642 "notice"),
1643 matchResolution(
1644 "testdata/firstparty/lib/liba.so.meta_lic",
1645 "testdata/firstparty/lib/liba.so.meta_lic",
1646 "testdata/firstparty/lib/liba.so.meta_lic",
1647 "notice"),
1648 matchResolution(
1649 "testdata/firstparty/lib/libc.a.meta_lic",
1650 "testdata/firstparty/lib/libc.a.meta_lic",
1651 "testdata/firstparty/lib/libc.a.meta_lic",
1652 "notice"),
1653 },
1654 },
1655 {
1656 condition: "firstparty",
1657 name: "library",
1658 roots: []string{"lib/libd.so.meta_lic"},
1659 expectedOut: []getMatcher{
1660 matchTarget("testdata/firstparty/lib/libd.so.meta_lic"),
1661 matchResolution(
1662 "testdata/firstparty/lib/libd.so.meta_lic",
1663 "testdata/firstparty/lib/libd.so.meta_lic",
1664 "testdata/firstparty/lib/libd.so.meta_lic",
1665 "notice"),
1666 },
1667 },
1668 {
1669 condition: "notice",
1670 name: "apex",
1671 roots: []string{"highest.apex.meta_lic"},
1672 expectedOut: []getMatcher{
1673 matchTarget("testdata/notice/bin/bin1.meta_lic"),
1674 matchTarget("testdata/notice/lib/liba.so.meta_lic"),
1675 matchTarget("testdata/notice/lib/libc.a.meta_lic"),
1676 matchTarget("testdata/notice/bin/bin2.meta_lic"),
1677 matchTarget("testdata/notice/highest.apex.meta_lic"),
1678 matchTarget("testdata/notice/lib/libb.so.meta_lic"),
1679 matchTarget("testdata/notice/lib/libd.so.meta_lic"),
1680 matchResolution(
1681 "testdata/notice/bin/bin1.meta_lic",
1682 "testdata/notice/bin/bin1.meta_lic",
1683 "testdata/notice/bin/bin1.meta_lic",
1684 "notice"),
1685 matchResolution(
1686 "testdata/notice/bin/bin1.meta_lic",
1687 "testdata/notice/lib/liba.so.meta_lic",
1688 "testdata/notice/lib/liba.so.meta_lic",
1689 "notice"),
1690 matchResolution(
1691 "testdata/notice/bin/bin1.meta_lic",
1692 "testdata/notice/lib/libc.a.meta_lic",
1693 "testdata/notice/lib/libc.a.meta_lic",
1694 "notice"),
1695 matchResolution(
1696 "testdata/notice/bin/bin2.meta_lic",
1697 "testdata/notice/bin/bin2.meta_lic",
1698 "testdata/notice/bin/bin2.meta_lic",
1699 "notice"),
1700 matchResolution(
1701 "testdata/notice/highest.apex.meta_lic",
1702 "testdata/notice/bin/bin1.meta_lic",
1703 "testdata/notice/bin/bin1.meta_lic",
1704 "notice"),
1705 matchResolution(
1706 "testdata/notice/highest.apex.meta_lic",
1707 "testdata/notice/bin/bin2.meta_lic",
1708 "testdata/notice/bin/bin2.meta_lic",
1709 "notice"),
1710 matchResolution(
1711 "testdata/notice/highest.apex.meta_lic",
1712 "testdata/notice/highest.apex.meta_lic",
1713 "testdata/notice/highest.apex.meta_lic",
1714 "notice"),
1715 matchResolution(
1716 "testdata/notice/highest.apex.meta_lic",
1717 "testdata/notice/lib/liba.so.meta_lic",
1718 "testdata/notice/lib/liba.so.meta_lic",
1719 "notice"),
1720 matchResolution(
1721 "testdata/notice/highest.apex.meta_lic",
1722 "testdata/notice/lib/libb.so.meta_lic",
1723 "testdata/notice/lib/libb.so.meta_lic",
1724 "notice"),
1725 matchResolution(
1726 "testdata/notice/highest.apex.meta_lic",
1727 "testdata/notice/lib/libc.a.meta_lic",
1728 "testdata/notice/lib/libc.a.meta_lic",
1729 "notice"),
1730 matchResolution(
1731 "testdata/notice/lib/liba.so.meta_lic",
1732 "testdata/notice/lib/liba.so.meta_lic",
1733 "testdata/notice/lib/liba.so.meta_lic",
1734 "notice"),
1735 matchResolution(
1736 "testdata/notice/lib/libb.so.meta_lic",
1737 "testdata/notice/lib/libb.so.meta_lic",
1738 "testdata/notice/lib/libb.so.meta_lic",
1739 "notice"),
1740 matchResolution(
1741 "testdata/notice/lib/libc.a.meta_lic",
1742 "testdata/notice/lib/libc.a.meta_lic",
1743 "testdata/notice/lib/libc.a.meta_lic",
1744 "notice"),
1745 matchResolution(
1746 "testdata/notice/lib/libd.so.meta_lic",
1747 "testdata/notice/lib/libd.so.meta_lic",
1748 "testdata/notice/lib/libd.so.meta_lic",
1749 "notice"),
1750 },
1751 },
1752 {
1753 condition: "notice",
1754 name: "apex_trimmed",
1755 roots: []string{"highest.apex.meta_lic"},
1756 ctx: context{stripPrefix: "testdata/notice/"},
1757 expectedOut: []getMatcher{
1758 matchTarget("bin/bin1.meta_lic"),
1759 matchTarget("lib/liba.so.meta_lic"),
1760 matchTarget("lib/libc.a.meta_lic"),
1761 matchTarget("bin/bin2.meta_lic"),
1762 matchTarget("highest.apex.meta_lic"),
1763 matchTarget("lib/libb.so.meta_lic"),
1764 matchTarget("lib/libd.so.meta_lic"),
1765 matchResolution(
1766 "bin/bin1.meta_lic",
1767 "bin/bin1.meta_lic",
1768 "bin/bin1.meta_lic",
1769 "notice"),
1770 matchResolution(
1771 "bin/bin1.meta_lic",
1772 "lib/liba.so.meta_lic",
1773 "lib/liba.so.meta_lic",
1774 "notice"),
1775 matchResolution(
1776 "bin/bin1.meta_lic",
1777 "lib/libc.a.meta_lic",
1778 "lib/libc.a.meta_lic",
1779 "notice"),
1780 matchResolution(
1781 "bin/bin2.meta_lic",
1782 "bin/bin2.meta_lic",
1783 "bin/bin2.meta_lic",
1784 "notice"),
1785 matchResolution(
1786 "highest.apex.meta_lic",
1787 "bin/bin1.meta_lic",
1788 "bin/bin1.meta_lic",
1789 "notice"),
1790 matchResolution(
1791 "highest.apex.meta_lic",
1792 "bin/bin2.meta_lic",
1793 "bin/bin2.meta_lic",
1794 "notice"),
1795 matchResolution(
1796 "highest.apex.meta_lic",
1797 "highest.apex.meta_lic",
1798 "highest.apex.meta_lic",
1799 "notice"),
1800 matchResolution(
1801 "highest.apex.meta_lic",
1802 "lib/liba.so.meta_lic",
1803 "lib/liba.so.meta_lic",
1804 "notice"),
1805 matchResolution(
1806 "highest.apex.meta_lic",
1807 "lib/libb.so.meta_lic",
1808 "lib/libb.so.meta_lic",
1809 "notice"),
1810 matchResolution(
1811 "highest.apex.meta_lic",
1812 "lib/libc.a.meta_lic",
1813 "lib/libc.a.meta_lic",
1814 "notice"),
1815 matchResolution(
1816 "lib/liba.so.meta_lic",
1817 "lib/liba.so.meta_lic",
1818 "lib/liba.so.meta_lic",
1819 "notice"),
1820 matchResolution(
1821 "lib/libb.so.meta_lic",
1822 "lib/libb.so.meta_lic",
1823 "lib/libb.so.meta_lic",
1824 "notice"),
1825 matchResolution(
1826 "lib/libc.a.meta_lic",
1827 "lib/libc.a.meta_lic",
1828 "lib/libc.a.meta_lic",
1829 "notice"),
1830 matchResolution(
1831 "lib/libd.so.meta_lic",
1832 "lib/libd.so.meta_lic",
1833 "lib/libd.so.meta_lic",
1834 "notice"),
1835 },
1836 },
1837 {
1838 condition: "notice",
1839 name: "apex_trimmed_notice",
1840 roots: []string{"highest.apex.meta_lic"},
1841 ctx: context{
1842 conditions: []string{"notice"},
1843 stripPrefix: "testdata/notice/",
1844 },
1845 expectedOut: []getMatcher{
1846 matchTarget("bin/bin1.meta_lic"),
1847 matchTarget("lib/liba.so.meta_lic"),
1848 matchTarget("lib/libc.a.meta_lic"),
1849 matchTarget("bin/bin2.meta_lic"),
1850 matchTarget("highest.apex.meta_lic"),
1851 matchTarget("lib/libb.so.meta_lic"),
1852 matchResolution(
1853 "bin/bin1.meta_lic",
1854 "bin/bin1.meta_lic",
1855 "bin/bin1.meta_lic",
1856 "notice"),
1857 matchResolution(
1858 "bin/bin1.meta_lic",
1859 "lib/liba.so.meta_lic",
1860 "lib/liba.so.meta_lic",
1861 "notice"),
1862 matchResolution(
1863 "bin/bin1.meta_lic",
1864 "lib/libc.a.meta_lic",
1865 "lib/libc.a.meta_lic",
1866 "notice"),
1867 matchResolution(
1868 "bin/bin2.meta_lic",
1869 "bin/bin2.meta_lic",
1870 "bin/bin2.meta_lic",
1871 "notice"),
1872 matchResolution(
1873 "highest.apex.meta_lic",
1874 "bin/bin1.meta_lic",
1875 "bin/bin1.meta_lic",
1876 "notice"),
1877 matchResolution(
1878 "highest.apex.meta_lic",
1879 "bin/bin2.meta_lic",
1880 "bin/bin2.meta_lic",
1881 "notice"),
1882 matchResolution(
1883 "highest.apex.meta_lic",
1884 "highest.apex.meta_lic",
1885 "highest.apex.meta_lic",
1886 "notice"),
1887 matchResolution(
1888 "highest.apex.meta_lic",
1889 "lib/liba.so.meta_lic",
1890 "lib/liba.so.meta_lic",
1891 "notice"),
1892 matchResolution(
1893 "highest.apex.meta_lic",
1894 "lib/libb.so.meta_lic",
1895 "lib/libb.so.meta_lic",
1896 "notice"),
1897 matchResolution(
1898 "highest.apex.meta_lic",
1899 "lib/libc.a.meta_lic",
1900 "lib/libc.a.meta_lic",
1901 "notice"),
1902 matchResolution(
1903 "lib/liba.so.meta_lic",
1904 "lib/liba.so.meta_lic",
1905 "lib/liba.so.meta_lic",
1906 "notice"),
1907 matchResolution(
1908 "lib/libb.so.meta_lic",
1909 "lib/libb.so.meta_lic",
1910 "lib/libb.so.meta_lic",
1911 "notice"),
1912 },
1913 },
1914 {
1915 condition: "notice",
1916 name: "apex_trimmed_share",
1917 roots: []string{"highest.apex.meta_lic"},
1918 ctx: context{
1919 conditions: []string{"reciprocal", "restricted"},
1920 stripPrefix: "testdata/notice/",
1921 },
1922 expectedOut: []getMatcher{},
1923 },
1924 {
1925 condition: "notice",
1926 name: "apex_trimmed_private",
1927 roots: []string{"highest.apex.meta_lic"},
1928 ctx: context{
1929 conditions: []string{"proprietary"},
1930 stripPrefix: "testdata/notice/",
1931 },
1932 expectedOut: []getMatcher{},
1933 },
1934 {
1935 condition: "notice",
1936 name: "apex_trimmed_share_private",
1937 roots: []string{"highest.apex.meta_lic"},
1938 ctx: context{
1939 conditions: []string{"reciprocal", "restricted", "proprietary"},
1940 stripPrefix: "testdata/notice/",
1941 },
1942 expectedOut: []getMatcher{},
1943 },
1944 {
1945 condition: "notice",
1946 name: "apex_trimmed_labelled",
1947 roots: []string{"highest.apex.meta_lic"},
1948 ctx: context{stripPrefix: "testdata/notice/", labelConditions: true},
1949 expectedOut: []getMatcher{
1950 matchTarget("bin/bin1.meta_lic", "notice"),
1951 matchTarget("lib/liba.so.meta_lic", "notice"),
1952 matchTarget("lib/libc.a.meta_lic", "notice"),
1953 matchTarget("bin/bin2.meta_lic", "notice"),
1954 matchTarget("highest.apex.meta_lic", "notice"),
1955 matchTarget("lib/libb.so.meta_lic", "notice"),
1956 matchTarget("lib/libd.so.meta_lic", "notice"),
1957 matchResolution(
1958 "bin/bin1.meta_lic",
1959 "bin/bin1.meta_lic",
1960 "bin/bin1.meta_lic",
1961 "notice"),
1962 matchResolution(
1963 "bin/bin1.meta_lic",
1964 "lib/liba.so.meta_lic",
1965 "lib/liba.so.meta_lic",
1966 "notice"),
1967 matchResolution(
1968 "bin/bin1.meta_lic",
1969 "lib/libc.a.meta_lic",
1970 "lib/libc.a.meta_lic",
1971 "notice"),
1972 matchResolution(
1973 "bin/bin2.meta_lic",
1974 "bin/bin2.meta_lic",
1975 "bin/bin2.meta_lic",
1976 "notice"),
1977 matchResolution(
1978 "highest.apex.meta_lic",
1979 "bin/bin1.meta_lic",
1980 "bin/bin1.meta_lic",
1981 "notice"),
1982 matchResolution(
1983 "highest.apex.meta_lic",
1984 "bin/bin2.meta_lic",
1985 "bin/bin2.meta_lic",
1986 "notice"),
1987 matchResolution(
1988 "highest.apex.meta_lic",
1989 "highest.apex.meta_lic",
1990 "highest.apex.meta_lic",
1991 "notice"),
1992 matchResolution(
1993 "highest.apex.meta_lic",
1994 "lib/liba.so.meta_lic",
1995 "lib/liba.so.meta_lic",
1996 "notice"),
1997 matchResolution(
1998 "highest.apex.meta_lic",
1999 "lib/libb.so.meta_lic",
2000 "lib/libb.so.meta_lic",
2001 "notice"),
2002 matchResolution(
2003 "highest.apex.meta_lic",
2004 "lib/libc.a.meta_lic",
2005 "lib/libc.a.meta_lic",
2006 "notice"),
2007 matchResolution(
2008 "lib/liba.so.meta_lic",
2009 "lib/liba.so.meta_lic",
2010 "lib/liba.so.meta_lic",
2011 "notice"),
2012 matchResolution(
2013 "lib/libb.so.meta_lic",
2014 "lib/libb.so.meta_lic",
2015 "lib/libb.so.meta_lic",
2016 "notice"),
2017 matchResolution(
2018 "lib/libc.a.meta_lic",
2019 "lib/libc.a.meta_lic",
2020 "lib/libc.a.meta_lic",
2021 "notice"),
2022 matchResolution(
2023 "lib/libd.so.meta_lic",
2024 "lib/libd.so.meta_lic",
2025 "lib/libd.so.meta_lic",
2026 "notice"),
2027 },
2028 },
2029 {
2030 condition: "notice",
2031 name: "container",
2032 roots: []string{"container.zip.meta_lic"},
2033 expectedOut: []getMatcher{
2034 matchTarget("testdata/notice/bin/bin1.meta_lic"),
2035 matchTarget("testdata/notice/lib/liba.so.meta_lic"),
2036 matchTarget("testdata/notice/lib/libc.a.meta_lic"),
2037 matchTarget("testdata/notice/bin/bin2.meta_lic"),
2038 matchTarget("testdata/notice/container.zip.meta_lic"),
2039 matchTarget("testdata/notice/lib/libb.so.meta_lic"),
2040 matchTarget("testdata/notice/lib/libd.so.meta_lic"),
2041 matchResolution(
2042 "testdata/notice/bin/bin1.meta_lic",
2043 "testdata/notice/bin/bin1.meta_lic",
2044 "testdata/notice/bin/bin1.meta_lic",
2045 "notice"),
2046 matchResolution(
2047 "testdata/notice/bin/bin1.meta_lic",
2048 "testdata/notice/lib/liba.so.meta_lic",
2049 "testdata/notice/lib/liba.so.meta_lic",
2050 "notice"),
2051 matchResolution(
2052 "testdata/notice/bin/bin1.meta_lic",
2053 "testdata/notice/lib/libc.a.meta_lic",
2054 "testdata/notice/lib/libc.a.meta_lic",
2055 "notice"),
2056 matchResolution(
2057 "testdata/notice/bin/bin2.meta_lic",
2058 "testdata/notice/bin/bin2.meta_lic",
2059 "testdata/notice/bin/bin2.meta_lic",
2060 "notice"),
2061 matchResolution(
2062 "testdata/notice/container.zip.meta_lic",
2063 "testdata/notice/bin/bin1.meta_lic",
2064 "testdata/notice/bin/bin1.meta_lic",
2065 "notice"),
2066 matchResolution(
2067 "testdata/notice/container.zip.meta_lic",
2068 "testdata/notice/bin/bin2.meta_lic",
2069 "testdata/notice/bin/bin2.meta_lic",
2070 "notice"),
2071 matchResolution(
2072 "testdata/notice/container.zip.meta_lic",
2073 "testdata/notice/container.zip.meta_lic",
2074 "testdata/notice/container.zip.meta_lic",
2075 "notice"),
2076 matchResolution(
2077 "testdata/notice/container.zip.meta_lic",
2078 "testdata/notice/lib/liba.so.meta_lic",
2079 "testdata/notice/lib/liba.so.meta_lic",
2080 "notice"),
2081 matchResolution(
2082 "testdata/notice/container.zip.meta_lic",
2083 "testdata/notice/lib/libb.so.meta_lic",
2084 "testdata/notice/lib/libb.so.meta_lic",
2085 "notice"),
2086 matchResolution(
2087 "testdata/notice/container.zip.meta_lic",
2088 "testdata/notice/lib/libc.a.meta_lic",
2089 "testdata/notice/lib/libc.a.meta_lic",
2090 "notice"),
2091 matchResolution(
2092 "testdata/notice/lib/liba.so.meta_lic",
2093 "testdata/notice/lib/liba.so.meta_lic",
2094 "testdata/notice/lib/liba.so.meta_lic",
2095 "notice"),
2096 matchResolution(
2097 "testdata/notice/lib/libb.so.meta_lic",
2098 "testdata/notice/lib/libb.so.meta_lic",
2099 "testdata/notice/lib/libb.so.meta_lic",
2100 "notice"),
2101 matchResolution(
2102 "testdata/notice/lib/libc.a.meta_lic",
2103 "testdata/notice/lib/libc.a.meta_lic",
2104 "testdata/notice/lib/libc.a.meta_lic",
2105 "notice"),
2106 matchResolution(
2107 "testdata/notice/lib/libd.so.meta_lic",
2108 "testdata/notice/lib/libd.so.meta_lic",
2109 "testdata/notice/lib/libd.so.meta_lic",
2110 "notice"),
2111 },
2112 },
2113 {
2114 condition: "notice",
2115 name: "application",
2116 roots: []string{"application.meta_lic"},
2117 expectedOut: []getMatcher{
2118 matchTarget("testdata/notice/application.meta_lic"),
2119 matchTarget("testdata/notice/lib/liba.so.meta_lic"),
2120 matchTarget("testdata/notice/bin/bin3.meta_lic"),
2121 matchTarget("testdata/notice/lib/libb.so.meta_lic"),
2122 matchResolution(
2123 "testdata/notice/application.meta_lic",
2124 "testdata/notice/application.meta_lic",
2125 "testdata/notice/application.meta_lic",
2126 "notice"),
2127 matchResolution(
2128 "testdata/notice/application.meta_lic",
2129 "testdata/notice/lib/liba.so.meta_lic",
2130 "testdata/notice/lib/liba.so.meta_lic",
2131 "notice"),
2132 matchResolution(
2133 "testdata/notice/bin/bin3.meta_lic",
2134 "testdata/notice/bin/bin3.meta_lic",
2135 "testdata/notice/bin/bin3.meta_lic",
2136 "notice"),
2137 matchResolution(
2138 "testdata/notice/lib/liba.so.meta_lic",
2139 "testdata/notice/lib/liba.so.meta_lic",
2140 "testdata/notice/lib/liba.so.meta_lic",
2141 "notice"),
2142 matchResolution(
2143 "testdata/notice/lib/libb.so.meta_lic",
2144 "testdata/notice/lib/libb.so.meta_lic",
2145 "testdata/notice/lib/libb.so.meta_lic",
2146 "notice"),
2147 },
2148 },
2149 {
2150 condition: "notice",
2151 name: "binary",
2152 roots: []string{"bin/bin1.meta_lic"},
2153 expectedOut: []getMatcher{
2154 matchTarget("testdata/notice/bin/bin1.meta_lic"),
2155 matchTarget("testdata/notice/lib/liba.so.meta_lic"),
2156 matchTarget("testdata/notice/lib/libc.a.meta_lic"),
2157 matchResolution(
2158 "testdata/notice/bin/bin1.meta_lic",
2159 "testdata/notice/bin/bin1.meta_lic",
2160 "testdata/notice/bin/bin1.meta_lic",
2161 "notice"),
2162 matchResolution(
2163 "testdata/notice/bin/bin1.meta_lic",
2164 "testdata/notice/lib/liba.so.meta_lic",
2165 "testdata/notice/lib/liba.so.meta_lic",
2166 "notice"),
2167 matchResolution(
2168 "testdata/notice/bin/bin1.meta_lic",
2169 "testdata/notice/lib/libc.a.meta_lic",
2170 "testdata/notice/lib/libc.a.meta_lic",
2171 "notice"),
2172 matchResolution(
2173 "testdata/notice/lib/liba.so.meta_lic",
2174 "testdata/notice/lib/liba.so.meta_lic",
2175 "testdata/notice/lib/liba.so.meta_lic",
2176 "notice"),
2177 matchResolution(
2178 "testdata/notice/lib/libc.a.meta_lic",
2179 "testdata/notice/lib/libc.a.meta_lic",
2180 "testdata/notice/lib/libc.a.meta_lic",
2181 "notice"),
2182 },
2183 },
2184 {
2185 condition: "notice",
2186 name: "library",
2187 roots: []string{"lib/libd.so.meta_lic"},
2188 expectedOut: []getMatcher{
2189 matchTarget("testdata/notice/lib/libd.so.meta_lic"),
2190 matchResolution(
2191 "testdata/notice/lib/libd.so.meta_lic",
2192 "testdata/notice/lib/libd.so.meta_lic",
2193 "testdata/notice/lib/libd.so.meta_lic",
2194 "notice"),
2195 },
2196 },
2197 {
2198 condition: "reciprocal",
2199 name: "apex",
2200 roots: []string{"highest.apex.meta_lic"},
2201 expectedOut: []getMatcher{
2202 matchTarget("testdata/reciprocal/bin/bin1.meta_lic"),
2203 matchTarget("testdata/reciprocal/lib/liba.so.meta_lic"),
2204 matchTarget("testdata/reciprocal/lib/libc.a.meta_lic"),
2205 matchTarget("testdata/reciprocal/bin/bin2.meta_lic"),
2206 matchTarget("testdata/reciprocal/highest.apex.meta_lic"),
2207 matchTarget("testdata/reciprocal/lib/libb.so.meta_lic"),
2208 matchTarget("testdata/reciprocal/lib/libd.so.meta_lic"),
2209 matchResolution(
2210 "testdata/reciprocal/bin/bin1.meta_lic",
2211 "testdata/reciprocal/bin/bin1.meta_lic",
2212 "testdata/reciprocal/bin/bin1.meta_lic",
2213 "notice"),
2214 matchResolution(
2215 "testdata/reciprocal/bin/bin1.meta_lic",
2216 "testdata/reciprocal/lib/liba.so.meta_lic",
2217 "testdata/reciprocal/lib/liba.so.meta_lic",
2218 "reciprocal"),
2219 matchResolution(
2220 "testdata/reciprocal/bin/bin1.meta_lic",
2221 "testdata/reciprocal/lib/libc.a.meta_lic",
2222 "testdata/reciprocal/lib/libc.a.meta_lic",
2223 "reciprocal"),
2224 matchResolution(
2225 "testdata/reciprocal/bin/bin2.meta_lic",
2226 "testdata/reciprocal/bin/bin2.meta_lic",
2227 "testdata/reciprocal/bin/bin2.meta_lic",
2228 "notice"),
2229 matchResolution(
2230 "testdata/reciprocal/highest.apex.meta_lic",
2231 "testdata/reciprocal/bin/bin1.meta_lic",
2232 "testdata/reciprocal/bin/bin1.meta_lic",
2233 "notice"),
2234 matchResolution(
2235 "testdata/reciprocal/highest.apex.meta_lic",
2236 "testdata/reciprocal/bin/bin2.meta_lic",
2237 "testdata/reciprocal/bin/bin2.meta_lic",
2238 "notice"),
2239 matchResolution(
2240 "testdata/reciprocal/highest.apex.meta_lic",
2241 "testdata/reciprocal/highest.apex.meta_lic",
2242 "testdata/reciprocal/highest.apex.meta_lic",
2243 "notice"),
2244 matchResolution(
2245 "testdata/reciprocal/highest.apex.meta_lic",
2246 "testdata/reciprocal/lib/liba.so.meta_lic",
2247 "testdata/reciprocal/lib/liba.so.meta_lic",
2248 "reciprocal"),
2249 matchResolution(
2250 "testdata/reciprocal/highest.apex.meta_lic",
2251 "testdata/reciprocal/lib/libb.so.meta_lic",
2252 "testdata/reciprocal/lib/libb.so.meta_lic",
2253 "notice"),
2254 matchResolution(
2255 "testdata/reciprocal/highest.apex.meta_lic",
2256 "testdata/reciprocal/lib/libc.a.meta_lic",
2257 "testdata/reciprocal/lib/libc.a.meta_lic",
2258 "reciprocal"),
2259 matchResolution(
2260 "testdata/reciprocal/lib/liba.so.meta_lic",
2261 "testdata/reciprocal/lib/liba.so.meta_lic",
2262 "testdata/reciprocal/lib/liba.so.meta_lic",
2263 "reciprocal"),
2264 matchResolution(
2265 "testdata/reciprocal/lib/libb.so.meta_lic",
2266 "testdata/reciprocal/lib/libb.so.meta_lic",
2267 "testdata/reciprocal/lib/libb.so.meta_lic",
2268 "notice"),
2269 matchResolution(
2270 "testdata/reciprocal/lib/libc.a.meta_lic",
2271 "testdata/reciprocal/lib/libc.a.meta_lic",
2272 "testdata/reciprocal/lib/libc.a.meta_lic",
2273 "reciprocal"),
2274 matchResolution(
2275 "testdata/reciprocal/lib/libd.so.meta_lic",
2276 "testdata/reciprocal/lib/libd.so.meta_lic",
2277 "testdata/reciprocal/lib/libd.so.meta_lic",
2278 "notice"),
2279 },
2280 },
2281 {
2282 condition: "reciprocal",
2283 name: "apex_trimmed",
2284 roots: []string{"highest.apex.meta_lic"},
2285 ctx: context{stripPrefix: "testdata/reciprocal/"},
2286 expectedOut: []getMatcher{
2287 matchTarget("bin/bin1.meta_lic"),
2288 matchTarget("lib/liba.so.meta_lic"),
2289 matchTarget("lib/libc.a.meta_lic"),
2290 matchTarget("bin/bin2.meta_lic"),
2291 matchTarget("highest.apex.meta_lic"),
2292 matchTarget("lib/libb.so.meta_lic"),
2293 matchTarget("lib/libd.so.meta_lic"),
2294 matchResolution(
2295 "bin/bin1.meta_lic",
2296 "bin/bin1.meta_lic",
2297 "bin/bin1.meta_lic",
2298 "notice"),
2299 matchResolution(
2300 "bin/bin1.meta_lic",
2301 "lib/liba.so.meta_lic",
2302 "lib/liba.so.meta_lic",
2303 "reciprocal"),
2304 matchResolution(
2305 "bin/bin1.meta_lic",
2306 "lib/libc.a.meta_lic",
2307 "lib/libc.a.meta_lic",
2308 "reciprocal"),
2309 matchResolution(
2310 "bin/bin2.meta_lic",
2311 "bin/bin2.meta_lic",
2312 "bin/bin2.meta_lic",
2313 "notice"),
2314 matchResolution(
2315 "highest.apex.meta_lic",
2316 "bin/bin1.meta_lic",
2317 "bin/bin1.meta_lic",
2318 "notice"),
2319 matchResolution(
2320 "highest.apex.meta_lic",
2321 "bin/bin2.meta_lic",
2322 "bin/bin2.meta_lic",
2323 "notice"),
2324 matchResolution(
2325 "highest.apex.meta_lic",
2326 "highest.apex.meta_lic",
2327 "highest.apex.meta_lic",
2328 "notice"),
2329 matchResolution(
2330 "highest.apex.meta_lic",
2331 "lib/liba.so.meta_lic",
2332 "lib/liba.so.meta_lic",
2333 "reciprocal"),
2334 matchResolution(
2335 "highest.apex.meta_lic",
2336 "lib/libb.so.meta_lic",
2337 "lib/libb.so.meta_lic",
2338 "notice"),
2339 matchResolution(
2340 "highest.apex.meta_lic",
2341 "lib/libc.a.meta_lic",
2342 "lib/libc.a.meta_lic",
2343 "reciprocal"),
2344 matchResolution(
2345 "lib/liba.so.meta_lic",
2346 "lib/liba.so.meta_lic",
2347 "lib/liba.so.meta_lic",
2348 "reciprocal"),
2349 matchResolution(
2350 "lib/libb.so.meta_lic",
2351 "lib/libb.so.meta_lic",
2352 "lib/libb.so.meta_lic",
2353 "notice"),
2354 matchResolution(
2355 "lib/libc.a.meta_lic",
2356 "lib/libc.a.meta_lic",
2357 "lib/libc.a.meta_lic",
2358 "reciprocal"),
2359 matchResolution(
2360 "lib/libd.so.meta_lic",
2361 "lib/libd.so.meta_lic",
2362 "lib/libd.so.meta_lic",
2363 "notice"),
2364 },
2365 },
2366 {
2367 condition: "reciprocal",
2368 name: "apex_trimmed_notice",
2369 roots: []string{"highest.apex.meta_lic"},
2370 ctx: context{
2371 conditions: []string{"notice"},
2372 stripPrefix: "testdata/reciprocal/",
2373 },
2374 expectedOut: []getMatcher{
2375 matchTarget("bin/bin1.meta_lic"),
2376 matchTarget("bin/bin2.meta_lic"),
2377 matchTarget("highest.apex.meta_lic"),
2378 matchTarget("lib/libb.so.meta_lic"),
2379 matchResolution(
2380 "bin/bin1.meta_lic",
2381 "bin/bin1.meta_lic",
2382 "bin/bin1.meta_lic",
2383 "notice"),
2384 matchResolution(
2385 "bin/bin2.meta_lic",
2386 "bin/bin2.meta_lic",
2387 "bin/bin2.meta_lic",
2388 "notice"),
2389 matchResolution(
2390 "highest.apex.meta_lic",
2391 "bin/bin1.meta_lic",
2392 "bin/bin1.meta_lic",
2393 "notice"),
2394 matchResolution(
2395 "highest.apex.meta_lic",
2396 "bin/bin2.meta_lic",
2397 "bin/bin2.meta_lic",
2398 "notice"),
2399 matchResolution(
2400 "highest.apex.meta_lic",
2401 "highest.apex.meta_lic",
2402 "highest.apex.meta_lic",
2403 "notice"),
2404 matchResolution(
2405 "highest.apex.meta_lic",
2406 "lib/libb.so.meta_lic",
2407 "lib/libb.so.meta_lic",
2408 "notice"),
2409 matchResolution(
2410 "lib/libb.so.meta_lic",
2411 "lib/libb.so.meta_lic",
2412 "lib/libb.so.meta_lic",
2413 "notice"),
2414 },
2415 },
2416 {
2417 condition: "reciprocal",
2418 name: "apex_trimmed_share",
2419 roots: []string{"highest.apex.meta_lic"},
2420 ctx: context{
2421 conditions: []string{"reciprocal", "restricted"},
2422 stripPrefix: "testdata/reciprocal/",
2423 },
2424 expectedOut: []getMatcher{
2425 matchTarget("bin/bin1.meta_lic"),
2426 matchTarget("lib/liba.so.meta_lic"),
2427 matchTarget("lib/libc.a.meta_lic"),
2428 matchTarget("highest.apex.meta_lic"),
2429 matchResolution(
2430 "bin/bin1.meta_lic",
2431 "lib/liba.so.meta_lic",
2432 "lib/liba.so.meta_lic",
2433 "reciprocal"),
2434 matchResolution(
2435 "bin/bin1.meta_lic",
2436 "lib/libc.a.meta_lic",
2437 "lib/libc.a.meta_lic",
2438 "reciprocal"),
2439 matchResolution(
2440 "highest.apex.meta_lic",
2441 "lib/liba.so.meta_lic",
2442 "lib/liba.so.meta_lic",
2443 "reciprocal"),
2444 matchResolution(
2445 "highest.apex.meta_lic",
2446 "lib/libc.a.meta_lic",
2447 "lib/libc.a.meta_lic",
2448 "reciprocal"),
2449 matchResolution(
2450 "lib/liba.so.meta_lic",
2451 "lib/liba.so.meta_lic",
2452 "lib/liba.so.meta_lic",
2453 "reciprocal"),
2454 },
2455 },
2456 {
2457 condition: "reciprocal",
2458 name: "apex_trimmed_private",
2459 roots: []string{"highest.apex.meta_lic"},
2460 ctx: context{
2461 conditions: []string{"proprietary"},
2462 stripPrefix: "testdata/reciprocal/",
2463 },
2464 expectedOut: []getMatcher{},
2465 },
2466 {
2467 condition: "reciprocal",
2468 name: "apex_trimmed_share_private",
2469 roots: []string{"highest.apex.meta_lic"},
2470 ctx: context{
2471 conditions: []string{"reciprocal", "restricted", "proprietary"},
2472 stripPrefix: "testdata/reciprocal/",
2473 },
2474 expectedOut: []getMatcher{
2475 matchTarget("bin/bin1.meta_lic"),
2476 matchTarget("lib/liba.so.meta_lic"),
2477 matchTarget("lib/libc.a.meta_lic"),
2478 matchTarget("highest.apex.meta_lic"),
2479 matchResolution(
2480 "bin/bin1.meta_lic",
2481 "lib/liba.so.meta_lic",
2482 "lib/liba.so.meta_lic",
2483 "reciprocal"),
2484 matchResolution(
2485 "bin/bin1.meta_lic",
2486 "lib/libc.a.meta_lic",
2487 "lib/libc.a.meta_lic",
2488 "reciprocal"),
2489 matchResolution(
2490 "highest.apex.meta_lic",
2491 "lib/liba.so.meta_lic",
2492 "lib/liba.so.meta_lic",
2493 "reciprocal"),
2494 matchResolution(
2495 "highest.apex.meta_lic",
2496 "lib/libc.a.meta_lic",
2497 "lib/libc.a.meta_lic",
2498 "reciprocal"),
2499 matchResolution(
2500 "lib/liba.so.meta_lic",
2501 "lib/liba.so.meta_lic",
2502 "lib/liba.so.meta_lic",
2503 "reciprocal"),
2504 },
2505 },
2506 {
2507 condition: "reciprocal",
2508 name: "apex_trimmed_labelled",
2509 roots: []string{"highest.apex.meta_lic"},
2510 ctx: context{stripPrefix: "testdata/reciprocal/", labelConditions: true},
2511 expectedOut: []getMatcher{
2512 matchTarget("bin/bin1.meta_lic", "notice"),
2513 matchTarget("lib/liba.so.meta_lic", "reciprocal"),
2514 matchTarget("lib/libc.a.meta_lic", "reciprocal"),
2515 matchTarget("bin/bin2.meta_lic", "notice"),
2516 matchTarget("highest.apex.meta_lic", "notice"),
2517 matchTarget("lib/libb.so.meta_lic", "notice"),
2518 matchTarget("lib/libd.so.meta_lic", "notice"),
2519 matchResolution(
2520 "bin/bin1.meta_lic",
2521 "bin/bin1.meta_lic",
2522 "bin/bin1.meta_lic",
2523 "notice"),
2524 matchResolution(
2525 "bin/bin1.meta_lic",
2526 "lib/liba.so.meta_lic",
2527 "lib/liba.so.meta_lic",
2528 "reciprocal"),
2529 matchResolution(
2530 "bin/bin1.meta_lic",
2531 "lib/libc.a.meta_lic",
2532 "lib/libc.a.meta_lic",
2533 "reciprocal"),
2534 matchResolution(
2535 "bin/bin2.meta_lic",
2536 "bin/bin2.meta_lic",
2537 "bin/bin2.meta_lic",
2538 "notice"),
2539 matchResolution(
2540 "highest.apex.meta_lic",
2541 "bin/bin1.meta_lic",
2542 "bin/bin1.meta_lic",
2543 "notice"),
2544 matchResolution(
2545 "highest.apex.meta_lic",
2546 "bin/bin2.meta_lic",
2547 "bin/bin2.meta_lic",
2548 "notice"),
2549 matchResolution(
2550 "highest.apex.meta_lic",
2551 "highest.apex.meta_lic",
2552 "highest.apex.meta_lic",
2553 "notice"),
2554 matchResolution(
2555 "highest.apex.meta_lic",
2556 "lib/liba.so.meta_lic",
2557 "lib/liba.so.meta_lic",
2558 "reciprocal"),
2559 matchResolution(
2560 "highest.apex.meta_lic",
2561 "lib/libb.so.meta_lic",
2562 "lib/libb.so.meta_lic",
2563 "notice"),
2564 matchResolution(
2565 "highest.apex.meta_lic",
2566 "lib/libc.a.meta_lic",
2567 "lib/libc.a.meta_lic",
2568 "reciprocal"),
2569 matchResolution(
2570 "lib/liba.so.meta_lic",
2571 "lib/liba.so.meta_lic",
2572 "lib/liba.so.meta_lic",
2573 "reciprocal"),
2574 matchResolution(
2575 "lib/libb.so.meta_lic",
2576 "lib/libb.so.meta_lic",
2577 "lib/libb.so.meta_lic",
2578 "notice"),
2579 matchResolution(
2580 "lib/libc.a.meta_lic",
2581 "lib/libc.a.meta_lic",
2582 "lib/libc.a.meta_lic",
2583 "reciprocal"),
2584 matchResolution(
2585 "lib/libd.so.meta_lic",
2586 "lib/libd.so.meta_lic",
2587 "lib/libd.so.meta_lic",
2588 "notice"),
2589 },
2590 },
2591 {
2592 condition: "reciprocal",
2593 name: "container",
2594 roots: []string{"container.zip.meta_lic"},
2595 expectedOut: []getMatcher{
2596 matchTarget("testdata/reciprocal/bin/bin1.meta_lic"),
2597 matchTarget("testdata/reciprocal/lib/liba.so.meta_lic"),
2598 matchTarget("testdata/reciprocal/lib/libc.a.meta_lic"),
2599 matchTarget("testdata/reciprocal/bin/bin2.meta_lic"),
2600 matchTarget("testdata/reciprocal/container.zip.meta_lic"),
2601 matchTarget("testdata/reciprocal/lib/libb.so.meta_lic"),
2602 matchTarget("testdata/reciprocal/lib/libd.so.meta_lic"),
2603 matchResolution(
2604 "testdata/reciprocal/bin/bin1.meta_lic",
2605 "testdata/reciprocal/bin/bin1.meta_lic",
2606 "testdata/reciprocal/bin/bin1.meta_lic",
2607 "notice"),
2608 matchResolution(
2609 "testdata/reciprocal/bin/bin1.meta_lic",
2610 "testdata/reciprocal/lib/liba.so.meta_lic",
2611 "testdata/reciprocal/lib/liba.so.meta_lic",
2612 "reciprocal"),
2613 matchResolution(
2614 "testdata/reciprocal/bin/bin1.meta_lic",
2615 "testdata/reciprocal/lib/libc.a.meta_lic",
2616 "testdata/reciprocal/lib/libc.a.meta_lic",
2617 "reciprocal"),
2618 matchResolution(
2619 "testdata/reciprocal/bin/bin2.meta_lic",
2620 "testdata/reciprocal/bin/bin2.meta_lic",
2621 "testdata/reciprocal/bin/bin2.meta_lic",
2622 "notice"),
2623 matchResolution(
2624 "testdata/reciprocal/container.zip.meta_lic",
2625 "testdata/reciprocal/bin/bin1.meta_lic",
2626 "testdata/reciprocal/bin/bin1.meta_lic",
2627 "notice"),
2628 matchResolution(
2629 "testdata/reciprocal/container.zip.meta_lic",
2630 "testdata/reciprocal/bin/bin2.meta_lic",
2631 "testdata/reciprocal/bin/bin2.meta_lic",
2632 "notice"),
2633 matchResolution(
2634 "testdata/reciprocal/container.zip.meta_lic",
2635 "testdata/reciprocal/container.zip.meta_lic",
2636 "testdata/reciprocal/container.zip.meta_lic",
2637 "notice"),
2638 matchResolution(
2639 "testdata/reciprocal/container.zip.meta_lic",
2640 "testdata/reciprocal/lib/liba.so.meta_lic",
2641 "testdata/reciprocal/lib/liba.so.meta_lic",
2642 "reciprocal"),
2643 matchResolution(
2644 "testdata/reciprocal/container.zip.meta_lic",
2645 "testdata/reciprocal/lib/libb.so.meta_lic",
2646 "testdata/reciprocal/lib/libb.so.meta_lic",
2647 "notice"),
2648 matchResolution(
2649 "testdata/reciprocal/container.zip.meta_lic",
2650 "testdata/reciprocal/lib/libc.a.meta_lic",
2651 "testdata/reciprocal/lib/libc.a.meta_lic",
2652 "reciprocal"),
2653 matchResolution(
2654 "testdata/reciprocal/lib/liba.so.meta_lic",
2655 "testdata/reciprocal/lib/liba.so.meta_lic",
2656 "testdata/reciprocal/lib/liba.so.meta_lic",
2657 "reciprocal"),
2658 matchResolution(
2659 "testdata/reciprocal/lib/libb.so.meta_lic",
2660 "testdata/reciprocal/lib/libb.so.meta_lic",
2661 "testdata/reciprocal/lib/libb.so.meta_lic",
2662 "notice"),
2663 matchResolution(
2664 "testdata/reciprocal/lib/libc.a.meta_lic",
2665 "testdata/reciprocal/lib/libc.a.meta_lic",
2666 "testdata/reciprocal/lib/libc.a.meta_lic",
2667 "reciprocal"),
2668 matchResolution(
2669 "testdata/reciprocal/lib/libd.so.meta_lic",
2670 "testdata/reciprocal/lib/libd.so.meta_lic",
2671 "testdata/reciprocal/lib/libd.so.meta_lic",
2672 "notice"),
2673 },
2674 },
2675 {
2676 condition: "reciprocal",
2677 name: "application",
2678 roots: []string{"application.meta_lic"},
2679 expectedOut: []getMatcher{
2680 matchTarget("testdata/reciprocal/application.meta_lic"),
2681 matchTarget("testdata/reciprocal/lib/liba.so.meta_lic"),
2682 matchTarget("testdata/reciprocal/bin/bin3.meta_lic"),
2683 matchTarget("testdata/reciprocal/lib/libb.so.meta_lic"),
2684 matchResolution(
2685 "testdata/reciprocal/application.meta_lic",
2686 "testdata/reciprocal/application.meta_lic",
2687 "testdata/reciprocal/application.meta_lic",
2688 "notice"),
2689 matchResolution(
2690 "testdata/reciprocal/application.meta_lic",
2691 "testdata/reciprocal/lib/liba.so.meta_lic",
2692 "testdata/reciprocal/lib/liba.so.meta_lic",
2693 "reciprocal"),
2694 matchResolution(
2695 "testdata/reciprocal/bin/bin3.meta_lic",
2696 "testdata/reciprocal/bin/bin3.meta_lic",
2697 "testdata/reciprocal/bin/bin3.meta_lic",
2698 "notice"),
2699 matchResolution(
2700 "testdata/reciprocal/lib/liba.so.meta_lic",
2701 "testdata/reciprocal/lib/liba.so.meta_lic",
2702 "testdata/reciprocal/lib/liba.so.meta_lic",
2703 "reciprocal"),
2704 matchResolution(
2705 "testdata/reciprocal/lib/libb.so.meta_lic",
2706 "testdata/reciprocal/lib/libb.so.meta_lic",
2707 "testdata/reciprocal/lib/libb.so.meta_lic",
2708 "notice"),
2709 },
2710 },
2711 {
2712 condition: "reciprocal",
2713 name: "binary",
2714 roots: []string{"bin/bin1.meta_lic"},
2715 expectedOut: []getMatcher{
2716 matchTarget("testdata/reciprocal/bin/bin1.meta_lic"),
2717 matchTarget("testdata/reciprocal/lib/liba.so.meta_lic"),
2718 matchTarget("testdata/reciprocal/lib/libc.a.meta_lic"),
2719 matchResolution(
2720 "testdata/reciprocal/bin/bin1.meta_lic",
2721 "testdata/reciprocal/bin/bin1.meta_lic",
2722 "testdata/reciprocal/bin/bin1.meta_lic",
2723 "notice"),
2724 matchResolution(
2725 "testdata/reciprocal/bin/bin1.meta_lic",
2726 "testdata/reciprocal/lib/liba.so.meta_lic",
2727 "testdata/reciprocal/lib/liba.so.meta_lic",
2728 "reciprocal"),
2729 matchResolution(
2730 "testdata/reciprocal/bin/bin1.meta_lic",
2731 "testdata/reciprocal/lib/libc.a.meta_lic",
2732 "testdata/reciprocal/lib/libc.a.meta_lic",
2733 "reciprocal"),
2734 matchResolution(
2735 "testdata/reciprocal/lib/liba.so.meta_lic",
2736 "testdata/reciprocal/lib/liba.so.meta_lic",
2737 "testdata/reciprocal/lib/liba.so.meta_lic",
2738 "reciprocal"),
2739 matchResolution(
2740 "testdata/reciprocal/lib/libc.a.meta_lic",
2741 "testdata/reciprocal/lib/libc.a.meta_lic",
2742 "testdata/reciprocal/lib/libc.a.meta_lic",
2743 "reciprocal"),
2744 },
2745 },
2746 {
2747 condition: "reciprocal",
2748 name: "library",
2749 roots: []string{"lib/libd.so.meta_lic"},
2750 expectedOut: []getMatcher{
2751 matchTarget("testdata/reciprocal/lib/libd.so.meta_lic"),
2752 matchResolution(
2753 "testdata/reciprocal/lib/libd.so.meta_lic",
2754 "testdata/reciprocal/lib/libd.so.meta_lic",
2755 "testdata/reciprocal/lib/libd.so.meta_lic",
2756 "notice"),
2757 },
2758 },
2759 {
2760 condition: "restricted",
2761 name: "apex",
2762 roots: []string{"highest.apex.meta_lic"},
2763 expectedOut: []getMatcher{
2764 matchTarget("testdata/restricted/bin/bin1.meta_lic"),
2765 matchTarget("testdata/restricted/lib/liba.so.meta_lic"),
2766 matchTarget("testdata/restricted/lib/libc.a.meta_lic"),
2767 matchTarget("testdata/restricted/bin/bin2.meta_lic"),
2768 matchTarget("testdata/restricted/lib/libb.so.meta_lic"),
2769 matchTarget("testdata/restricted/lib/libd.so.meta_lic"),
2770 matchTarget("testdata/restricted/highest.apex.meta_lic"),
2771 matchResolution(
2772 "testdata/restricted/bin/bin1.meta_lic",
2773 "testdata/restricted/bin/bin1.meta_lic",
2774 "testdata/restricted/bin/bin1.meta_lic",
2775 "notice"),
2776 matchResolution(
2777 "testdata/restricted/bin/bin1.meta_lic",
2778 "testdata/restricted/bin/bin1.meta_lic",
2779 "testdata/restricted/lib/liba.so.meta_lic",
2780 "restricted"),
2781 matchResolution(
2782 "testdata/restricted/bin/bin1.meta_lic",
2783 "testdata/restricted/lib/liba.so.meta_lic",
2784 "testdata/restricted/lib/liba.so.meta_lic",
2785 "restricted"),
2786 matchResolution(
2787 "testdata/restricted/bin/bin1.meta_lic",
2788 "testdata/restricted/lib/libc.a.meta_lic",
2789 "testdata/restricted/lib/liba.so.meta_lic",
2790 "restricted"),
2791 matchResolution(
2792 "testdata/restricted/bin/bin1.meta_lic",
2793 "testdata/restricted/lib/libc.a.meta_lic",
2794 "testdata/restricted/lib/libc.a.meta_lic",
2795 "reciprocal"),
2796 matchResolution(
2797 "testdata/restricted/bin/bin2.meta_lic",
2798 "testdata/restricted/bin/bin2.meta_lic",
2799 "testdata/restricted/bin/bin2.meta_lic",
2800 "notice"),
2801 matchResolution(
2802 "testdata/restricted/bin/bin2.meta_lic",
2803 "testdata/restricted/bin/bin2.meta_lic",
2804 "testdata/restricted/lib/libb.so.meta_lic",
2805 "restricted"),
2806 matchResolution(
2807 "testdata/restricted/bin/bin2.meta_lic",
2808 "testdata/restricted/lib/libb.so.meta_lic",
2809 "testdata/restricted/lib/libb.so.meta_lic",
2810 "restricted"),
2811 matchResolution(
2812 "testdata/restricted/bin/bin2.meta_lic",
2813 "testdata/restricted/lib/libd.so.meta_lic",
2814 "testdata/restricted/lib/libb.so.meta_lic",
2815 "restricted"),
2816 matchResolution(
2817 "testdata/restricted/highest.apex.meta_lic",
2818 "testdata/restricted/bin/bin1.meta_lic",
2819 "testdata/restricted/bin/bin1.meta_lic",
2820 "notice"),
2821 matchResolution(
2822 "testdata/restricted/highest.apex.meta_lic",
2823 "testdata/restricted/bin/bin1.meta_lic",
2824 "testdata/restricted/lib/liba.so.meta_lic",
2825 "restricted"),
2826 matchResolution(
2827 "testdata/restricted/highest.apex.meta_lic",
2828 "testdata/restricted/bin/bin2.meta_lic",
2829 "testdata/restricted/bin/bin2.meta_lic",
2830 "notice"),
2831 matchResolution(
2832 "testdata/restricted/highest.apex.meta_lic",
2833 "testdata/restricted/bin/bin2.meta_lic",
2834 "testdata/restricted/lib/libb.so.meta_lic",
2835 "restricted"),
2836 matchResolution(
2837 "testdata/restricted/highest.apex.meta_lic",
2838 "testdata/restricted/highest.apex.meta_lic",
2839 "testdata/restricted/highest.apex.meta_lic",
2840 "notice"),
2841 matchResolution(
2842 "testdata/restricted/highest.apex.meta_lic",
2843 "testdata/restricted/highest.apex.meta_lic",
2844 "testdata/restricted/lib/liba.so.meta_lic",
2845 "restricted"),
2846 matchResolution(
2847 "testdata/restricted/highest.apex.meta_lic",
2848 "testdata/restricted/highest.apex.meta_lic",
2849 "testdata/restricted/lib/libb.so.meta_lic",
2850 "restricted"),
2851 matchResolution(
2852 "testdata/restricted/highest.apex.meta_lic",
2853 "testdata/restricted/lib/liba.so.meta_lic",
2854 "testdata/restricted/lib/liba.so.meta_lic",
2855 "restricted"),
2856 matchResolution(
2857 "testdata/restricted/highest.apex.meta_lic",
2858 "testdata/restricted/lib/libb.so.meta_lic",
2859 "testdata/restricted/lib/libb.so.meta_lic",
2860 "restricted"),
2861 matchResolution(
2862 "testdata/restricted/highest.apex.meta_lic",
2863 "testdata/restricted/lib/libc.a.meta_lic",
2864 "testdata/restricted/lib/liba.so.meta_lic",
2865 "restricted"),
2866 matchResolution(
2867 "testdata/restricted/highest.apex.meta_lic",
2868 "testdata/restricted/lib/libc.a.meta_lic",
2869 "testdata/restricted/lib/libc.a.meta_lic",
2870 "reciprocal"),
2871 matchResolution(
2872 "testdata/restricted/highest.apex.meta_lic",
2873 "testdata/restricted/lib/libd.so.meta_lic",
2874 "testdata/restricted/lib/libb.so.meta_lic",
2875 "restricted"),
2876 matchResolution(
2877 "testdata/restricted/lib/liba.so.meta_lic",
2878 "testdata/restricted/lib/liba.so.meta_lic",
2879 "testdata/restricted/lib/liba.so.meta_lic",
2880 "restricted"),
2881 matchResolution(
2882 "testdata/restricted/lib/libb.so.meta_lic",
2883 "testdata/restricted/lib/libb.so.meta_lic",
2884 "testdata/restricted/lib/libb.so.meta_lic",
2885 "restricted"),
2886 matchResolution(
2887 "testdata/restricted/lib/libc.a.meta_lic",
2888 "testdata/restricted/lib/libc.a.meta_lic",
2889 "testdata/restricted/lib/libc.a.meta_lic",
2890 "reciprocal"),
2891 matchResolution(
2892 "testdata/restricted/lib/libd.so.meta_lic",
2893 "testdata/restricted/lib/libd.so.meta_lic",
2894 "testdata/restricted/lib/libd.so.meta_lic",
2895 "notice"),
2896 },
2897 },
2898 {
2899 condition: "restricted",
2900 name: "apex_trimmed",
2901 roots: []string{"highest.apex.meta_lic"},
2902 ctx: context{stripPrefix: "testdata/restricted/"},
2903 expectedOut: []getMatcher{
2904 matchTarget("bin/bin1.meta_lic"),
2905 matchTarget("lib/liba.so.meta_lic"),
2906 matchTarget("lib/libc.a.meta_lic"),
2907 matchTarget("bin/bin2.meta_lic"),
2908 matchTarget("lib/libb.so.meta_lic"),
2909 matchTarget("lib/libd.so.meta_lic"),
2910 matchTarget("highest.apex.meta_lic"),
2911 matchResolution(
2912 "bin/bin1.meta_lic",
2913 "bin/bin1.meta_lic",
2914 "bin/bin1.meta_lic",
2915 "notice"),
2916 matchResolution(
2917 "bin/bin1.meta_lic",
2918 "bin/bin1.meta_lic",
2919 "lib/liba.so.meta_lic",
2920 "restricted"),
2921 matchResolution(
2922 "bin/bin1.meta_lic",
2923 "lib/liba.so.meta_lic",
2924 "lib/liba.so.meta_lic",
2925 "restricted"),
2926 matchResolution(
2927 "bin/bin1.meta_lic",
2928 "lib/libc.a.meta_lic",
2929 "lib/liba.so.meta_lic",
2930 "restricted"),
2931 matchResolution(
2932 "bin/bin1.meta_lic",
2933 "lib/libc.a.meta_lic",
2934 "lib/libc.a.meta_lic",
2935 "reciprocal"),
2936 matchResolution(
2937 "bin/bin2.meta_lic",
2938 "bin/bin2.meta_lic",
2939 "bin/bin2.meta_lic",
2940 "notice"),
2941 matchResolution(
2942 "bin/bin2.meta_lic",
2943 "bin/bin2.meta_lic",
2944 "lib/libb.so.meta_lic",
2945 "restricted"),
2946 matchResolution(
2947 "bin/bin2.meta_lic",
2948 "lib/libb.so.meta_lic",
2949 "lib/libb.so.meta_lic",
2950 "restricted"),
2951 matchResolution(
2952 "bin/bin2.meta_lic",
2953 "lib/libd.so.meta_lic",
2954 "lib/libb.so.meta_lic",
2955 "restricted"),
2956 matchResolution(
2957 "highest.apex.meta_lic",
2958 "bin/bin1.meta_lic",
2959 "bin/bin1.meta_lic",
2960 "notice"),
2961 matchResolution(
2962 "highest.apex.meta_lic",
2963 "bin/bin1.meta_lic",
2964 "lib/liba.so.meta_lic",
2965 "restricted"),
2966 matchResolution(
2967 "highest.apex.meta_lic",
2968 "bin/bin2.meta_lic",
2969 "bin/bin2.meta_lic",
2970 "notice"),
2971 matchResolution(
2972 "highest.apex.meta_lic",
2973 "bin/bin2.meta_lic",
2974 "lib/libb.so.meta_lic",
2975 "restricted"),
2976 matchResolution(
2977 "highest.apex.meta_lic",
2978 "highest.apex.meta_lic",
2979 "highest.apex.meta_lic",
2980 "notice"),
2981 matchResolution(
2982 "highest.apex.meta_lic",
2983 "highest.apex.meta_lic",
2984 "lib/liba.so.meta_lic",
2985 "restricted"),
2986 matchResolution(
2987 "highest.apex.meta_lic",
2988 "highest.apex.meta_lic",
2989 "lib/libb.so.meta_lic",
2990 "restricted"),
2991 matchResolution(
2992 "highest.apex.meta_lic",
2993 "lib/liba.so.meta_lic",
2994 "lib/liba.so.meta_lic",
2995 "restricted"),
2996 matchResolution(
2997 "highest.apex.meta_lic",
2998 "lib/libb.so.meta_lic",
2999 "lib/libb.so.meta_lic",
3000 "restricted"),
3001 matchResolution(
3002 "highest.apex.meta_lic",
3003 "lib/libc.a.meta_lic",
3004 "lib/liba.so.meta_lic",
3005 "restricted"),
3006 matchResolution(
3007 "highest.apex.meta_lic",
3008 "lib/libc.a.meta_lic",
3009 "lib/libc.a.meta_lic",
3010 "reciprocal"),
3011 matchResolution(
3012 "highest.apex.meta_lic",
3013 "lib/libd.so.meta_lic",
3014 "lib/libb.so.meta_lic",
3015 "restricted"),
3016 matchResolution(
3017 "lib/liba.so.meta_lic",
3018 "lib/liba.so.meta_lic",
3019 "lib/liba.so.meta_lic",
3020 "restricted"),
3021 matchResolution(
3022 "lib/libb.so.meta_lic",
3023 "lib/libb.so.meta_lic",
3024 "lib/libb.so.meta_lic",
3025 "restricted"),
3026 matchResolution(
3027 "lib/libc.a.meta_lic",
3028 "lib/libc.a.meta_lic",
3029 "lib/libc.a.meta_lic",
3030 "reciprocal"),
3031 matchResolution(
3032 "lib/libd.so.meta_lic",
3033 "lib/libd.so.meta_lic",
3034 "lib/libd.so.meta_lic",
3035 "notice"),
3036 },
3037 },
3038 {
3039 condition: "restricted",
3040 name: "apex_trimmed_notice",
3041 roots: []string{"highest.apex.meta_lic"},
3042 ctx: context{
3043 conditions: []string{"notice"},
3044 stripPrefix: "testdata/restricted/",
3045 },
3046 expectedOut: []getMatcher{
3047 matchTarget("bin/bin1.meta_lic"),
3048 matchTarget("bin/bin2.meta_lic"),
3049 matchTarget("highest.apex.meta_lic"),
3050 matchResolution(
3051 "bin/bin1.meta_lic",
3052 "bin/bin1.meta_lic",
3053 "bin/bin1.meta_lic",
3054 "notice"),
3055 matchResolution(
3056 "bin/bin2.meta_lic",
3057 "bin/bin2.meta_lic",
3058 "bin/bin2.meta_lic",
3059 "notice"),
3060 matchResolution(
3061 "highest.apex.meta_lic",
3062 "bin/bin1.meta_lic",
3063 "bin/bin1.meta_lic",
3064 "notice"),
3065 matchResolution(
3066 "highest.apex.meta_lic",
3067 "bin/bin2.meta_lic",
3068 "bin/bin2.meta_lic",
3069 "notice"),
3070 matchResolution(
3071 "highest.apex.meta_lic",
3072 "highest.apex.meta_lic",
3073 "highest.apex.meta_lic",
3074 "notice"),
3075 },
3076 },
3077 {
3078 condition: "restricted",
3079 name: "apex_trimmed_share",
3080 roots: []string{"highest.apex.meta_lic"},
3081 ctx: context{
3082 conditions: []string{"reciprocal", "restricted"},
3083 stripPrefix: "testdata/restricted/",
3084 },
3085 expectedOut: []getMatcher{
3086 matchTarget("bin/bin1.meta_lic"),
3087 matchTarget("lib/liba.so.meta_lic"),
3088 matchTarget("lib/libc.a.meta_lic"),
3089 matchTarget("bin/bin2.meta_lic"),
3090 matchTarget("lib/libb.so.meta_lic"),
3091 matchTarget("highest.apex.meta_lic"),
3092 matchResolution(
3093 "bin/bin1.meta_lic",
3094 "bin/bin1.meta_lic",
3095 "lib/liba.so.meta_lic",
3096 "restricted"),
3097 matchResolution(
3098 "bin/bin1.meta_lic",
3099 "lib/liba.so.meta_lic",
3100 "lib/liba.so.meta_lic",
3101 "restricted"),
3102 matchResolution(
3103 "bin/bin1.meta_lic",
3104 "lib/libc.a.meta_lic",
3105 "lib/liba.so.meta_lic",
3106 "restricted"),
3107 matchResolution(
3108 "bin/bin1.meta_lic",
3109 "lib/libc.a.meta_lic",
3110 "lib/libc.a.meta_lic",
3111 "reciprocal"),
3112 matchResolution(
3113 "bin/bin2.meta_lic",
3114 "bin/bin2.meta_lic",
3115 "lib/libb.so.meta_lic",
3116 "restricted"),
3117 matchResolution(
3118 "bin/bin2.meta_lic",
3119 "lib/libb.so.meta_lic",
3120 "lib/libb.so.meta_lic",
3121 "restricted"),
3122 matchResolution(
3123 "highest.apex.meta_lic",
3124 "bin/bin1.meta_lic",
3125 "lib/liba.so.meta_lic",
3126 "restricted"),
3127 matchResolution(
3128 "highest.apex.meta_lic",
3129 "bin/bin2.meta_lic",
3130 "lib/libb.so.meta_lic",
3131 "restricted"),
3132 matchResolution(
3133 "highest.apex.meta_lic",
3134 "highest.apex.meta_lic",
3135 "lib/liba.so.meta_lic",
3136 "restricted"),
3137 matchResolution(
3138 "highest.apex.meta_lic",
3139 "highest.apex.meta_lic",
3140 "lib/libb.so.meta_lic",
3141 "restricted"),
3142 matchResolution(
3143 "highest.apex.meta_lic",
3144 "lib/liba.so.meta_lic",
3145 "lib/liba.so.meta_lic",
3146 "restricted"),
3147 matchResolution(
3148 "highest.apex.meta_lic",
3149 "lib/libb.so.meta_lic",
3150 "lib/libb.so.meta_lic",
3151 "restricted"),
3152 matchResolution(
3153 "highest.apex.meta_lic",
3154 "lib/libc.a.meta_lic",
3155 "lib/liba.so.meta_lic",
3156 "restricted"),
3157 matchResolution(
3158 "highest.apex.meta_lic",
3159 "lib/libc.a.meta_lic",
3160 "lib/libc.a.meta_lic",
3161 "reciprocal"),
3162 matchResolution(
3163 "lib/liba.so.meta_lic",
3164 "lib/liba.so.meta_lic",
3165 "lib/liba.so.meta_lic",
3166 "restricted"),
3167 matchResolution(
3168 "lib/libb.so.meta_lic",
3169 "lib/libb.so.meta_lic",
3170 "lib/libb.so.meta_lic",
3171 "restricted"),
3172 },
3173 },
3174 {
3175 condition: "restricted",
3176 name: "apex_trimmed_private",
3177 roots: []string{"highest.apex.meta_lic"},
3178 ctx: context{
3179 conditions: []string{"proprietary"},
3180 stripPrefix: "testdata/restricted/",
3181 },
3182 expectedOut: []getMatcher{},
3183 },
3184 {
3185 condition: "restricted",
3186 name: "apex_trimmed_share_private",
3187 roots: []string{"highest.apex.meta_lic"},
3188 ctx: context{
3189 conditions: []string{"reciprocal", "restricted", "proprietary"},
3190 stripPrefix: "testdata/restricted/",
3191 },
3192 expectedOut: []getMatcher{
3193 matchTarget("bin/bin1.meta_lic"),
3194 matchTarget("lib/liba.so.meta_lic"),
3195 matchTarget("lib/libc.a.meta_lic"),
3196 matchTarget("bin/bin2.meta_lic"),
3197 matchTarget("lib/libb.so.meta_lic"),
3198 matchTarget("highest.apex.meta_lic"),
3199 matchResolution(
3200 "bin/bin1.meta_lic",
3201 "bin/bin1.meta_lic",
3202 "lib/liba.so.meta_lic",
3203 "restricted"),
3204 matchResolution(
3205 "bin/bin1.meta_lic",
3206 "lib/liba.so.meta_lic",
3207 "lib/liba.so.meta_lic",
3208 "restricted"),
3209 matchResolution(
3210 "bin/bin1.meta_lic",
3211 "lib/libc.a.meta_lic",
3212 "lib/liba.so.meta_lic",
3213 "restricted"),
3214 matchResolution(
3215 "bin/bin1.meta_lic",
3216 "lib/libc.a.meta_lic",
3217 "lib/libc.a.meta_lic",
3218 "reciprocal"),
3219 matchResolution(
3220 "bin/bin2.meta_lic",
3221 "bin/bin2.meta_lic",
3222 "lib/libb.so.meta_lic",
3223 "restricted"),
3224 matchResolution(
3225 "bin/bin2.meta_lic",
3226 "lib/libb.so.meta_lic",
3227 "lib/libb.so.meta_lic",
3228 "restricted"),
3229 matchResolution(
3230 "highest.apex.meta_lic",
3231 "bin/bin1.meta_lic",
3232 "lib/liba.so.meta_lic",
3233 "restricted"),
3234 matchResolution(
3235 "highest.apex.meta_lic",
3236 "bin/bin2.meta_lic",
3237 "lib/libb.so.meta_lic",
3238 "restricted"),
3239 matchResolution(
3240 "highest.apex.meta_lic",
3241 "highest.apex.meta_lic",
3242 "lib/liba.so.meta_lic",
3243 "restricted"),
3244 matchResolution(
3245 "highest.apex.meta_lic",
3246 "highest.apex.meta_lic",
3247 "lib/libb.so.meta_lic",
3248 "restricted"),
3249 matchResolution(
3250 "highest.apex.meta_lic",
3251 "lib/liba.so.meta_lic",
3252 "lib/liba.so.meta_lic",
3253 "restricted"),
3254 matchResolution(
3255 "highest.apex.meta_lic",
3256 "lib/libb.so.meta_lic",
3257 "lib/libb.so.meta_lic",
3258 "restricted"),
3259 matchResolution(
3260 "highest.apex.meta_lic",
3261 "lib/libc.a.meta_lic",
3262 "lib/liba.so.meta_lic",
3263 "restricted"),
3264 matchResolution(
3265 "highest.apex.meta_lic",
3266 "lib/libc.a.meta_lic",
3267 "lib/libc.a.meta_lic",
3268 "reciprocal"),
3269 matchResolution(
3270 "lib/liba.so.meta_lic",
3271 "lib/liba.so.meta_lic",
3272 "lib/liba.so.meta_lic",
3273 "restricted"),
3274 matchResolution(
3275 "lib/libb.so.meta_lic",
3276 "lib/libb.so.meta_lic",
3277 "lib/libb.so.meta_lic",
3278 "restricted"),
3279 },
3280 },
3281 {
3282 condition: "restricted",
3283 name: "apex_trimmed_labelled",
3284 roots: []string{"highest.apex.meta_lic"},
3285 ctx: context{stripPrefix: "testdata/restricted/", labelConditions: true},
3286 expectedOut: []getMatcher{
3287 matchTarget("bin/bin1.meta_lic", "notice"),
3288 matchTarget("lib/liba.so.meta_lic", "restricted"),
3289 matchTarget("lib/libc.a.meta_lic", "reciprocal"),
3290 matchTarget("bin/bin2.meta_lic", "notice"),
3291 matchTarget("lib/libb.so.meta_lic", "restricted"),
3292 matchTarget("lib/libd.so.meta_lic", "notice"),
3293 matchTarget("highest.apex.meta_lic", "notice"),
3294 matchResolution(
3295 "bin/bin1.meta_lic",
3296 "bin/bin1.meta_lic",
3297 "bin/bin1.meta_lic",
3298 "notice"),
3299 matchResolution(
3300 "bin/bin1.meta_lic",
3301 "bin/bin1.meta_lic",
3302 "lib/liba.so.meta_lic",
3303 "restricted"),
3304 matchResolution(
3305 "bin/bin1.meta_lic",
3306 "lib/liba.so.meta_lic",
3307 "lib/liba.so.meta_lic",
3308 "restricted"),
3309 matchResolution(
3310 "bin/bin1.meta_lic",
3311 "lib/libc.a.meta_lic",
3312 "lib/liba.so.meta_lic",
3313 "restricted"),
3314 matchResolution(
3315 "bin/bin1.meta_lic",
3316 "lib/libc.a.meta_lic",
3317 "lib/libc.a.meta_lic",
3318 "reciprocal"),
3319 matchResolution(
3320 "bin/bin2.meta_lic",
3321 "bin/bin2.meta_lic",
3322 "bin/bin2.meta_lic",
3323 "notice"),
3324 matchResolution(
3325 "bin/bin2.meta_lic",
3326 "bin/bin2.meta_lic",
3327 "lib/libb.so.meta_lic",
3328 "restricted"),
3329 matchResolution(
3330 "bin/bin2.meta_lic",
3331 "lib/libb.so.meta_lic",
3332 "lib/libb.so.meta_lic",
3333 "restricted"),
3334 matchResolution(
3335 "bin/bin2.meta_lic",
3336 "lib/libd.so.meta_lic",
3337 "lib/libb.so.meta_lic",
3338 "restricted"),
3339 matchResolution(
3340 "highest.apex.meta_lic",
3341 "bin/bin1.meta_lic",
3342 "bin/bin1.meta_lic",
3343 "notice"),
3344 matchResolution(
3345 "highest.apex.meta_lic",
3346 "bin/bin1.meta_lic",
3347 "lib/liba.so.meta_lic",
3348 "restricted"),
3349 matchResolution(
3350 "highest.apex.meta_lic",
3351 "bin/bin2.meta_lic",
3352 "bin/bin2.meta_lic",
3353 "notice"),
3354 matchResolution(
3355 "highest.apex.meta_lic",
3356 "bin/bin2.meta_lic",
3357 "lib/libb.so.meta_lic",
3358 "restricted"),
3359 matchResolution(
3360 "highest.apex.meta_lic",
3361 "highest.apex.meta_lic",
3362 "highest.apex.meta_lic",
3363 "notice"),
3364 matchResolution(
3365 "highest.apex.meta_lic",
3366 "highest.apex.meta_lic",
3367 "lib/liba.so.meta_lic",
3368 "restricted"),
3369 matchResolution(
3370 "highest.apex.meta_lic",
3371 "highest.apex.meta_lic",
3372 "lib/libb.so.meta_lic",
3373 "restricted"),
3374 matchResolution(
3375 "highest.apex.meta_lic",
3376 "lib/liba.so.meta_lic",
3377 "lib/liba.so.meta_lic",
3378 "restricted"),
3379 matchResolution(
3380 "highest.apex.meta_lic",
3381 "lib/libb.so.meta_lic",
3382 "lib/libb.so.meta_lic",
3383 "restricted"),
3384 matchResolution(
3385 "highest.apex.meta_lic",
3386 "lib/libc.a.meta_lic",
3387 "lib/liba.so.meta_lic",
3388 "restricted"),
3389 matchResolution(
3390 "highest.apex.meta_lic",
3391 "lib/libc.a.meta_lic",
3392 "lib/libc.a.meta_lic",
3393 "reciprocal"),
3394 matchResolution(
3395 "highest.apex.meta_lic",
3396 "lib/libd.so.meta_lic",
3397 "lib/libb.so.meta_lic",
3398 "restricted"),
3399 matchResolution(
3400 "lib/liba.so.meta_lic",
3401 "lib/liba.so.meta_lic",
3402 "lib/liba.so.meta_lic",
3403 "restricted"),
3404 matchResolution(
3405 "lib/libb.so.meta_lic",
3406 "lib/libb.so.meta_lic",
3407 "lib/libb.so.meta_lic",
3408 "restricted"),
3409 matchResolution(
3410 "lib/libc.a.meta_lic",
3411 "lib/libc.a.meta_lic",
3412 "lib/libc.a.meta_lic",
3413 "reciprocal"),
3414 matchResolution(
3415 "lib/libd.so.meta_lic",
3416 "lib/libd.so.meta_lic",
3417 "lib/libd.so.meta_lic",
3418 "notice"),
3419 },
3420 },
3421 {
3422 condition: "restricted",
3423 name: "container",
3424 roots: []string{"container.zip.meta_lic"},
3425 expectedOut: []getMatcher{
3426 matchTarget("testdata/restricted/bin/bin1.meta_lic"),
3427 matchTarget("testdata/restricted/lib/liba.so.meta_lic"),
3428 matchTarget("testdata/restricted/lib/libc.a.meta_lic"),
3429 matchTarget("testdata/restricted/bin/bin2.meta_lic"),
3430 matchTarget("testdata/restricted/lib/libb.so.meta_lic"),
3431 matchTarget("testdata/restricted/lib/libd.so.meta_lic"),
3432 matchTarget("testdata/restricted/container.zip.meta_lic"),
3433 matchResolution(
3434 "testdata/restricted/bin/bin1.meta_lic",
3435 "testdata/restricted/bin/bin1.meta_lic",
3436 "testdata/restricted/bin/bin1.meta_lic",
3437 "notice"),
3438 matchResolution(
3439 "testdata/restricted/bin/bin1.meta_lic",
3440 "testdata/restricted/bin/bin1.meta_lic",
3441 "testdata/restricted/lib/liba.so.meta_lic",
3442 "restricted"),
3443 matchResolution(
3444 "testdata/restricted/bin/bin1.meta_lic",
3445 "testdata/restricted/lib/liba.so.meta_lic",
3446 "testdata/restricted/lib/liba.so.meta_lic",
3447 "restricted"),
3448 matchResolution(
3449 "testdata/restricted/bin/bin1.meta_lic",
3450 "testdata/restricted/lib/libc.a.meta_lic",
3451 "testdata/restricted/lib/liba.so.meta_lic",
3452 "restricted"),
3453 matchResolution(
3454 "testdata/restricted/bin/bin1.meta_lic",
3455 "testdata/restricted/lib/libc.a.meta_lic",
3456 "testdata/restricted/lib/libc.a.meta_lic",
3457 "reciprocal"),
3458 matchResolution(
3459 "testdata/restricted/bin/bin2.meta_lic",
3460 "testdata/restricted/bin/bin2.meta_lic",
3461 "testdata/restricted/bin/bin2.meta_lic",
3462 "notice"),
3463 matchResolution(
3464 "testdata/restricted/bin/bin2.meta_lic",
3465 "testdata/restricted/bin/bin2.meta_lic",
3466 "testdata/restricted/lib/libb.so.meta_lic",
3467 "restricted"),
3468 matchResolution(
3469 "testdata/restricted/bin/bin2.meta_lic",
3470 "testdata/restricted/lib/libb.so.meta_lic",
3471 "testdata/restricted/lib/libb.so.meta_lic",
3472 "restricted"),
3473 matchResolution(
3474 "testdata/restricted/bin/bin2.meta_lic",
3475 "testdata/restricted/lib/libd.so.meta_lic",
3476 "testdata/restricted/lib/libb.so.meta_lic",
3477 "restricted"),
3478 matchResolution(
3479 "testdata/restricted/container.zip.meta_lic",
3480 "testdata/restricted/bin/bin1.meta_lic",
3481 "testdata/restricted/bin/bin1.meta_lic",
3482 "notice"),
3483 matchResolution(
3484 "testdata/restricted/container.zip.meta_lic",
3485 "testdata/restricted/bin/bin1.meta_lic",
3486 "testdata/restricted/lib/liba.so.meta_lic",
3487 "restricted"),
3488 matchResolution(
3489 "testdata/restricted/container.zip.meta_lic",
3490 "testdata/restricted/bin/bin2.meta_lic",
3491 "testdata/restricted/bin/bin2.meta_lic",
3492 "notice"),
3493 matchResolution(
3494 "testdata/restricted/container.zip.meta_lic",
3495 "testdata/restricted/bin/bin2.meta_lic",
3496 "testdata/restricted/lib/libb.so.meta_lic",
3497 "restricted"),
3498 matchResolution(
3499 "testdata/restricted/container.zip.meta_lic",
3500 "testdata/restricted/container.zip.meta_lic",
3501 "testdata/restricted/container.zip.meta_lic",
3502 "notice"),
3503 matchResolution(
3504 "testdata/restricted/container.zip.meta_lic",
3505 "testdata/restricted/container.zip.meta_lic",
3506 "testdata/restricted/lib/liba.so.meta_lic",
3507 "restricted"),
3508 matchResolution(
3509 "testdata/restricted/container.zip.meta_lic",
3510 "testdata/restricted/container.zip.meta_lic",
3511 "testdata/restricted/lib/libb.so.meta_lic",
3512 "restricted"),
3513 matchResolution(
3514 "testdata/restricted/container.zip.meta_lic",
3515 "testdata/restricted/lib/liba.so.meta_lic",
3516 "testdata/restricted/lib/liba.so.meta_lic",
3517 "restricted"),
3518 matchResolution(
3519 "testdata/restricted/container.zip.meta_lic",
3520 "testdata/restricted/lib/libb.so.meta_lic",
3521 "testdata/restricted/lib/libb.so.meta_lic",
3522 "restricted"),
3523 matchResolution(
3524 "testdata/restricted/container.zip.meta_lic",
3525 "testdata/restricted/lib/libc.a.meta_lic",
3526 "testdata/restricted/lib/liba.so.meta_lic",
3527 "restricted"),
3528 matchResolution(
3529 "testdata/restricted/container.zip.meta_lic",
3530 "testdata/restricted/lib/libc.a.meta_lic",
3531 "testdata/restricted/lib/libc.a.meta_lic",
3532 "reciprocal"),
3533 matchResolution(
3534 "testdata/restricted/container.zip.meta_lic",
3535 "testdata/restricted/lib/libd.so.meta_lic",
3536 "testdata/restricted/lib/libb.so.meta_lic",
3537 "restricted"),
3538 matchResolution(
3539 "testdata/restricted/lib/liba.so.meta_lic",
3540 "testdata/restricted/lib/liba.so.meta_lic",
3541 "testdata/restricted/lib/liba.so.meta_lic",
3542 "restricted"),
3543 matchResolution(
3544 "testdata/restricted/lib/libb.so.meta_lic",
3545 "testdata/restricted/lib/libb.so.meta_lic",
3546 "testdata/restricted/lib/libb.so.meta_lic",
3547 "restricted"),
3548 matchResolution(
3549 "testdata/restricted/lib/libc.a.meta_lic",
3550 "testdata/restricted/lib/libc.a.meta_lic",
3551 "testdata/restricted/lib/libc.a.meta_lic",
3552 "reciprocal"),
3553 matchResolution(
3554 "testdata/restricted/lib/libd.so.meta_lic",
3555 "testdata/restricted/lib/libd.so.meta_lic",
3556 "testdata/restricted/lib/libd.so.meta_lic",
3557 "notice"),
3558 },
3559 },
3560 {
3561 condition: "restricted",
3562 name: "application",
3563 roots: []string{"application.meta_lic"},
3564 expectedOut: []getMatcher{
3565 matchTarget("testdata/restricted/application.meta_lic"),
3566 matchTarget("testdata/restricted/lib/liba.so.meta_lic"),
3567 matchTarget("testdata/restricted/lib/libb.so.meta_lic"),
3568 matchTarget("testdata/restricted/bin/bin3.meta_lic"),
3569 matchResolution(
3570 "testdata/restricted/application.meta_lic",
3571 "testdata/restricted/application.meta_lic",
3572 "testdata/restricted/application.meta_lic",
3573 "notice"),
3574 matchResolution(
3575 "testdata/restricted/application.meta_lic",
3576 "testdata/restricted/application.meta_lic",
3577 "testdata/restricted/lib/liba.so.meta_lic",
3578 "restricted"),
3579 matchResolution(
3580 "testdata/restricted/application.meta_lic",
3581 "testdata/restricted/application.meta_lic",
3582 "testdata/restricted/lib/libb.so.meta_lic",
3583 "restricted"),
3584 matchResolution(
3585 "testdata/restricted/application.meta_lic",
3586 "testdata/restricted/lib/liba.so.meta_lic",
3587 "testdata/restricted/lib/liba.so.meta_lic",
3588 "restricted"),
3589 matchResolution(
3590 "testdata/restricted/application.meta_lic",
3591 "testdata/restricted/lib/liba.so.meta_lic",
3592 "testdata/restricted/lib/libb.so.meta_lic",
3593 "restricted"),
3594 matchResolution(
3595 "testdata/restricted/application.meta_lic",
3596 "testdata/restricted/lib/libb.so.meta_lic",
3597 "testdata/restricted/lib/libb.so.meta_lic",
3598 "restricted"),
3599 matchResolution(
3600 "testdata/restricted/bin/bin3.meta_lic",
3601 "testdata/restricted/bin/bin3.meta_lic",
3602 "testdata/restricted/bin/bin3.meta_lic",
3603 "restricted"),
3604 matchResolution(
3605 "testdata/restricted/lib/liba.so.meta_lic",
3606 "testdata/restricted/lib/liba.so.meta_lic",
3607 "testdata/restricted/lib/liba.so.meta_lic",
3608 "restricted"),
3609 matchResolution(
3610 "testdata/restricted/lib/libb.so.meta_lic",
3611 "testdata/restricted/lib/libb.so.meta_lic",
3612 "testdata/restricted/lib/libb.so.meta_lic",
3613 "restricted"),
3614 },
3615 },
3616 {
3617 condition: "restricted",
3618 name: "binary",
3619 roots: []string{"bin/bin1.meta_lic"},
3620 expectedOut: []getMatcher{
3621 matchTarget("testdata/restricted/bin/bin1.meta_lic"),
3622 matchTarget("testdata/restricted/lib/liba.so.meta_lic"),
3623 matchTarget("testdata/restricted/lib/libc.a.meta_lic"),
3624 matchResolution(
3625 "testdata/restricted/bin/bin1.meta_lic",
3626 "testdata/restricted/bin/bin1.meta_lic",
3627 "testdata/restricted/bin/bin1.meta_lic",
3628 "notice"),
3629 matchResolution(
3630 "testdata/restricted/bin/bin1.meta_lic",
3631 "testdata/restricted/bin/bin1.meta_lic",
3632 "testdata/restricted/lib/liba.so.meta_lic",
3633 "restricted"),
3634 matchResolution(
3635 "testdata/restricted/bin/bin1.meta_lic",
3636 "testdata/restricted/lib/liba.so.meta_lic",
3637 "testdata/restricted/lib/liba.so.meta_lic",
3638 "restricted"),
3639 matchResolution(
3640 "testdata/restricted/bin/bin1.meta_lic",
3641 "testdata/restricted/lib/libc.a.meta_lic",
3642 "testdata/restricted/lib/liba.so.meta_lic",
3643 "restricted"),
3644 matchResolution(
3645 "testdata/restricted/bin/bin1.meta_lic",
3646 "testdata/restricted/lib/libc.a.meta_lic",
3647 "testdata/restricted/lib/libc.a.meta_lic",
3648 "reciprocal"),
3649 matchResolution(
3650 "testdata/restricted/lib/liba.so.meta_lic",
3651 "testdata/restricted/lib/liba.so.meta_lic",
3652 "testdata/restricted/lib/liba.so.meta_lic",
3653 "restricted"),
3654 matchResolution(
3655 "testdata/restricted/lib/libc.a.meta_lic",
3656 "testdata/restricted/lib/libc.a.meta_lic",
3657 "testdata/restricted/lib/libc.a.meta_lic",
3658 "reciprocal"),
3659 },
3660 },
3661 {
3662 condition: "restricted",
3663 name: "library",
3664 roots: []string{"lib/libd.so.meta_lic"},
3665 expectedOut: []getMatcher{
3666 matchTarget("testdata/restricted/lib/libd.so.meta_lic"),
3667 matchResolution(
3668 "testdata/restricted/lib/libd.so.meta_lic",
3669 "testdata/restricted/lib/libd.so.meta_lic",
3670 "testdata/restricted/lib/libd.so.meta_lic",
3671 "notice"),
3672 },
3673 },
3674 {
3675 condition: "proprietary",
3676 name: "apex",
3677 roots: []string{"highest.apex.meta_lic"},
3678 expectedOut: []getMatcher{
3679 matchTarget("testdata/proprietary/bin/bin1.meta_lic"),
3680 matchTarget("testdata/proprietary/lib/liba.so.meta_lic"),
3681 matchTarget("testdata/proprietary/lib/libc.a.meta_lic"),
3682 matchTarget("testdata/proprietary/bin/bin2.meta_lic"),
3683 matchTarget("testdata/proprietary/lib/libb.so.meta_lic"),
3684 matchTarget("testdata/proprietary/lib/libd.so.meta_lic"),
3685 matchTarget("testdata/proprietary/highest.apex.meta_lic"),
3686 matchResolution(
3687 "testdata/proprietary/bin/bin1.meta_lic",
3688 "testdata/proprietary/bin/bin1.meta_lic",
3689 "testdata/proprietary/bin/bin1.meta_lic",
3690 "notice"),
3691 matchResolution(
3692 "testdata/proprietary/bin/bin1.meta_lic",
3693 "testdata/proprietary/lib/liba.so.meta_lic",
3694 "testdata/proprietary/lib/liba.so.meta_lic",
3695 "by_exception_only",
3696 "proprietary"),
3697 matchResolution(
3698 "testdata/proprietary/bin/bin1.meta_lic",
3699 "testdata/proprietary/lib/libc.a.meta_lic",
3700 "testdata/proprietary/lib/libc.a.meta_lic",
3701 "by_exception_only",
3702 "proprietary"),
3703 matchResolution(
3704 "testdata/proprietary/bin/bin2.meta_lic",
3705 "testdata/proprietary/bin/bin2.meta_lic",
3706 "testdata/proprietary/bin/bin2.meta_lic",
3707 "by_exception_only",
3708 "proprietary"),
3709 matchResolution(
3710 "testdata/proprietary/bin/bin2.meta_lic",
3711 "testdata/proprietary/bin/bin2.meta_lic",
3712 "testdata/proprietary/lib/libb.so.meta_lic",
3713 "restricted"),
3714 matchResolution(
3715 "testdata/proprietary/bin/bin2.meta_lic",
3716 "testdata/proprietary/lib/libb.so.meta_lic",
3717 "testdata/proprietary/lib/libb.so.meta_lic",
3718 "restricted"),
3719 matchResolution(
3720 "testdata/proprietary/bin/bin2.meta_lic",
3721 "testdata/proprietary/lib/libd.so.meta_lic",
3722 "testdata/proprietary/lib/libb.so.meta_lic",
3723 "restricted"),
3724 matchResolution(
3725 "testdata/proprietary/highest.apex.meta_lic",
3726 "testdata/proprietary/bin/bin1.meta_lic",
3727 "testdata/proprietary/bin/bin1.meta_lic",
3728 "notice"),
3729 matchResolution(
3730 "testdata/proprietary/highest.apex.meta_lic",
3731 "testdata/proprietary/bin/bin2.meta_lic",
3732 "testdata/proprietary/bin/bin2.meta_lic",
3733 "by_exception_only",
3734 "proprietary"),
3735 matchResolution(
3736 "testdata/proprietary/highest.apex.meta_lic",
3737 "testdata/proprietary/bin/bin2.meta_lic",
3738 "testdata/proprietary/lib/libb.so.meta_lic",
3739 "restricted"),
3740 matchResolution(
3741 "testdata/proprietary/highest.apex.meta_lic",
3742 "testdata/proprietary/highest.apex.meta_lic",
3743 "testdata/proprietary/highest.apex.meta_lic",
3744 "notice"),
3745 matchResolution(
3746 "testdata/proprietary/highest.apex.meta_lic",
3747 "testdata/proprietary/highest.apex.meta_lic",
3748 "testdata/proprietary/lib/libb.so.meta_lic",
3749 "restricted"),
3750 matchResolution(
3751 "testdata/proprietary/highest.apex.meta_lic",
3752 "testdata/proprietary/lib/liba.so.meta_lic",
3753 "testdata/proprietary/lib/liba.so.meta_lic",
3754 "by_exception_only",
3755 "proprietary"),
3756 matchResolution(
3757 "testdata/proprietary/highest.apex.meta_lic",
3758 "testdata/proprietary/lib/libb.so.meta_lic",
3759 "testdata/proprietary/lib/libb.so.meta_lic",
3760 "restricted"),
3761 matchResolution(
3762 "testdata/proprietary/highest.apex.meta_lic",
3763 "testdata/proprietary/lib/libc.a.meta_lic",
3764 "testdata/proprietary/lib/libc.a.meta_lic",
3765 "by_exception_only",
3766 "proprietary"),
3767 matchResolution(
3768 "testdata/proprietary/highest.apex.meta_lic",
3769 "testdata/proprietary/lib/libd.so.meta_lic",
3770 "testdata/proprietary/lib/libb.so.meta_lic",
3771 "restricted"),
3772 matchResolution(
3773 "testdata/proprietary/lib/liba.so.meta_lic",
3774 "testdata/proprietary/lib/liba.so.meta_lic",
3775 "testdata/proprietary/lib/liba.so.meta_lic",
3776 "by_exception_only",
3777 "proprietary"),
3778 matchResolution(
3779 "testdata/proprietary/lib/libb.so.meta_lic",
3780 "testdata/proprietary/lib/libb.so.meta_lic",
3781 "testdata/proprietary/lib/libb.so.meta_lic",
3782 "restricted"),
3783 matchResolution(
3784 "testdata/proprietary/lib/libc.a.meta_lic",
3785 "testdata/proprietary/lib/libc.a.meta_lic",
3786 "testdata/proprietary/lib/libc.a.meta_lic",
3787 "by_exception_only",
3788 "proprietary"),
3789 matchResolution(
3790 "testdata/proprietary/lib/libd.so.meta_lic",
3791 "testdata/proprietary/lib/libd.so.meta_lic",
3792 "testdata/proprietary/lib/libd.so.meta_lic",
3793 "notice"),
3794 },
3795 },
3796 {
3797 condition: "proprietary",
3798 name: "apex_trimmed",
3799 roots: []string{"highest.apex.meta_lic"},
3800 ctx: context{stripPrefix: "testdata/proprietary/"},
3801 expectedOut: []getMatcher{
3802 matchTarget("bin/bin1.meta_lic"),
3803 matchTarget("lib/liba.so.meta_lic"),
3804 matchTarget("lib/libc.a.meta_lic"),
3805 matchTarget("bin/bin2.meta_lic"),
3806 matchTarget("lib/libb.so.meta_lic"),
3807 matchTarget("lib/libd.so.meta_lic"),
3808 matchTarget("highest.apex.meta_lic"),
3809 matchResolution(
3810 "bin/bin1.meta_lic",
3811 "bin/bin1.meta_lic",
3812 "bin/bin1.meta_lic",
3813 "notice"),
3814 matchResolution(
3815 "bin/bin1.meta_lic",
3816 "lib/liba.so.meta_lic",
3817 "lib/liba.so.meta_lic",
3818 "by_exception_only",
3819 "proprietary"),
3820 matchResolution(
3821 "bin/bin1.meta_lic",
3822 "lib/libc.a.meta_lic",
3823 "lib/libc.a.meta_lic",
3824 "by_exception_only",
3825 "proprietary"),
3826 matchResolution(
3827 "bin/bin2.meta_lic",
3828 "bin/bin2.meta_lic",
3829 "bin/bin2.meta_lic",
3830 "by_exception_only",
3831 "proprietary"),
3832 matchResolution(
3833 "bin/bin2.meta_lic",
3834 "bin/bin2.meta_lic",
3835 "lib/libb.so.meta_lic",
3836 "restricted"),
3837 matchResolution(
3838 "bin/bin2.meta_lic",
3839 "lib/libb.so.meta_lic",
3840 "lib/libb.so.meta_lic",
3841 "restricted"),
3842 matchResolution(
3843 "bin/bin2.meta_lic",
3844 "lib/libd.so.meta_lic",
3845 "lib/libb.so.meta_lic",
3846 "restricted"),
3847 matchResolution(
3848 "highest.apex.meta_lic",
3849 "bin/bin1.meta_lic",
3850 "bin/bin1.meta_lic",
3851 "notice"),
3852 matchResolution(
3853 "highest.apex.meta_lic",
3854 "bin/bin2.meta_lic",
3855 "bin/bin2.meta_lic",
3856 "by_exception_only",
3857 "proprietary"),
3858 matchResolution(
3859 "highest.apex.meta_lic",
3860 "bin/bin2.meta_lic",
3861 "lib/libb.so.meta_lic",
3862 "restricted"),
3863 matchResolution(
3864 "highest.apex.meta_lic",
3865 "highest.apex.meta_lic",
3866 "highest.apex.meta_lic",
3867 "notice"),
3868 matchResolution(
3869 "highest.apex.meta_lic",
3870 "highest.apex.meta_lic",
3871 "lib/libb.so.meta_lic",
3872 "restricted"),
3873 matchResolution(
3874 "highest.apex.meta_lic",
3875 "lib/liba.so.meta_lic",
3876 "lib/liba.so.meta_lic",
3877 "by_exception_only",
3878 "proprietary"),
3879 matchResolution(
3880 "highest.apex.meta_lic",
3881 "lib/libb.so.meta_lic",
3882 "lib/libb.so.meta_lic",
3883 "restricted"),
3884 matchResolution(
3885 "highest.apex.meta_lic",
3886 "lib/libc.a.meta_lic",
3887 "lib/libc.a.meta_lic",
3888 "by_exception_only",
3889 "proprietary"),
3890 matchResolution(
3891 "highest.apex.meta_lic",
3892 "lib/libd.so.meta_lic",
3893 "lib/libb.so.meta_lic",
3894 "restricted"),
3895 matchResolution(
3896 "lib/liba.so.meta_lic",
3897 "lib/liba.so.meta_lic",
3898 "lib/liba.so.meta_lic",
3899 "by_exception_only",
3900 "proprietary"),
3901 matchResolution(
3902 "lib/libb.so.meta_lic",
3903 "lib/libb.so.meta_lic",
3904 "lib/libb.so.meta_lic",
3905 "restricted"),
3906 matchResolution(
3907 "lib/libc.a.meta_lic",
3908 "lib/libc.a.meta_lic",
3909 "lib/libc.a.meta_lic",
3910 "by_exception_only",
3911 "proprietary"),
3912 matchResolution(
3913 "lib/libd.so.meta_lic",
3914 "lib/libd.so.meta_lic",
3915 "lib/libd.so.meta_lic",
3916 "notice"),
3917 },
3918 },
3919 {
3920 condition: "proprietary",
3921 name: "apex_trimmed_notice",
3922 roots: []string{"highest.apex.meta_lic"},
3923 ctx: context{
3924 conditions: []string{"notice"},
3925 stripPrefix: "testdata/proprietary/",
3926 },
3927 expectedOut: []getMatcher{
3928 matchTarget("bin/bin1.meta_lic"),
3929 matchTarget("highest.apex.meta_lic"),
3930 matchResolution(
3931 "bin/bin1.meta_lic",
3932 "bin/bin1.meta_lic",
3933 "bin/bin1.meta_lic",
3934 "notice"),
3935 matchResolution(
3936 "highest.apex.meta_lic",
3937 "bin/bin1.meta_lic",
3938 "bin/bin1.meta_lic",
3939 "notice"),
3940 matchResolution(
3941 "highest.apex.meta_lic",
3942 "highest.apex.meta_lic",
3943 "highest.apex.meta_lic",
3944 "notice"),
3945 },
3946 },
3947 {
3948 condition: "proprietary",
3949 name: "apex_trimmed_share",
3950 roots: []string{"highest.apex.meta_lic"},
3951 ctx: context{
3952 conditions: []string{"reciprocal", "restricted"},
3953 stripPrefix: "testdata/proprietary/",
3954 },
3955 expectedOut: []getMatcher{
3956 matchTarget("bin/bin2.meta_lic"),
3957 matchTarget("lib/libb.so.meta_lic"),
3958 matchTarget("highest.apex.meta_lic"),
3959 matchResolution(
3960 "bin/bin2.meta_lic",
3961 "bin/bin2.meta_lic",
3962 "lib/libb.so.meta_lic",
3963 "restricted"),
3964 matchResolution(
3965 "bin/bin2.meta_lic",
3966 "lib/libb.so.meta_lic",
3967 "lib/libb.so.meta_lic",
3968 "restricted"),
3969 matchResolution(
3970 "highest.apex.meta_lic",
3971 "bin/bin2.meta_lic",
3972 "lib/libb.so.meta_lic",
3973 "restricted"),
3974 matchResolution(
3975 "highest.apex.meta_lic",
3976 "highest.apex.meta_lic",
3977 "lib/libb.so.meta_lic",
3978 "restricted"),
3979 matchResolution(
3980 "highest.apex.meta_lic",
3981 "lib/libb.so.meta_lic",
3982 "lib/libb.so.meta_lic",
3983 "restricted"),
3984 matchResolution(
3985 "lib/libb.so.meta_lic",
3986 "lib/libb.so.meta_lic",
3987 "lib/libb.so.meta_lic",
3988 "restricted"),
3989 },
3990 },
3991 {
3992 condition: "proprietary",
3993 name: "apex_trimmed_private",
3994 roots: []string{"highest.apex.meta_lic"},
3995 ctx: context{
3996 conditions: []string{"proprietary"},
3997 stripPrefix: "testdata/proprietary/",
3998 },
3999 expectedOut: []getMatcher{
4000 matchTarget("bin/bin1.meta_lic"),
4001 matchTarget("lib/liba.so.meta_lic"),
4002 matchTarget("lib/libc.a.meta_lic"),
4003 matchTarget("bin/bin2.meta_lic"),
4004 matchTarget("highest.apex.meta_lic"),
4005 matchResolution(
4006 "bin/bin1.meta_lic",
4007 "lib/liba.so.meta_lic",
4008 "lib/liba.so.meta_lic",
4009 "proprietary"),
4010 matchResolution(
4011 "bin/bin1.meta_lic",
4012 "lib/libc.a.meta_lic",
4013 "lib/libc.a.meta_lic",
4014 "proprietary"),
4015 matchResolution(
4016 "bin/bin2.meta_lic",
4017 "bin/bin2.meta_lic",
4018 "bin/bin2.meta_lic",
4019 "proprietary"),
4020 matchResolution(
4021 "highest.apex.meta_lic",
4022 "bin/bin2.meta_lic",
4023 "bin/bin2.meta_lic",
4024 "proprietary"),
4025 matchResolution(
4026 "highest.apex.meta_lic",
4027 "lib/liba.so.meta_lic",
4028 "lib/liba.so.meta_lic",
4029 "proprietary"),
4030 matchResolution(
4031 "highest.apex.meta_lic",
4032 "lib/libc.a.meta_lic",
4033 "lib/libc.a.meta_lic",
4034 "proprietary"),
4035 matchResolution(
4036 "lib/liba.so.meta_lic",
4037 "lib/liba.so.meta_lic",
4038 "lib/liba.so.meta_lic",
4039 "proprietary"),
4040 },
4041 },
4042 {
4043 condition: "proprietary",
4044 name: "apex_trimmed_share_private",
4045 roots: []string{"highest.apex.meta_lic"},
4046 ctx: context{
4047 conditions: []string{"reciprocal", "restricted", "proprietary"},
4048 stripPrefix: "testdata/proprietary/",
4049 },
4050 expectedOut: []getMatcher{
4051 matchTarget("bin/bin1.meta_lic"),
4052 matchTarget("lib/liba.so.meta_lic"),
4053 matchTarget("lib/libc.a.meta_lic"),
4054 matchTarget("bin/bin2.meta_lic"),
4055 matchTarget("lib/libb.so.meta_lic"),
4056 matchTarget("highest.apex.meta_lic"),
4057 matchResolution(
4058 "bin/bin1.meta_lic",
4059 "lib/liba.so.meta_lic",
4060 "lib/liba.so.meta_lic",
4061 "proprietary"),
4062 matchResolution(
4063 "bin/bin1.meta_lic",
4064 "lib/libc.a.meta_lic",
4065 "lib/libc.a.meta_lic",
4066 "proprietary"),
4067 matchResolution(
4068 "bin/bin2.meta_lic",
4069 "bin/bin2.meta_lic",
4070 "bin/bin2.meta_lic",
4071 "proprietary"),
4072 matchResolution(
4073 "bin/bin2.meta_lic",
4074 "bin/bin2.meta_lic",
4075 "lib/libb.so.meta_lic",
4076 "restricted"),
4077 matchResolution(
4078 "bin/bin2.meta_lic",
4079 "lib/libb.so.meta_lic",
4080 "lib/libb.so.meta_lic",
4081 "restricted"),
4082 matchResolution(
4083 "highest.apex.meta_lic",
4084 "bin/bin2.meta_lic",
4085 "bin/bin2.meta_lic",
4086 "proprietary"),
4087 matchResolution(
4088 "highest.apex.meta_lic",
4089 "bin/bin2.meta_lic",
4090 "lib/libb.so.meta_lic",
4091 "restricted"),
4092 matchResolution(
4093 "highest.apex.meta_lic",
4094 "highest.apex.meta_lic",
4095 "lib/libb.so.meta_lic",
4096 "restricted"),
4097 matchResolution(
4098 "highest.apex.meta_lic",
4099 "lib/liba.so.meta_lic",
4100 "lib/liba.so.meta_lic",
4101 "proprietary"),
4102 matchResolution(
4103 "highest.apex.meta_lic",
4104 "lib/libb.so.meta_lic",
4105 "lib/libb.so.meta_lic",
4106 "restricted"),
4107 matchResolution(
4108 "highest.apex.meta_lic",
4109 "lib/libc.a.meta_lic",
4110 "lib/libc.a.meta_lic",
4111 "proprietary"),
4112 matchResolution(
4113 "lib/liba.so.meta_lic",
4114 "lib/liba.so.meta_lic",
4115 "lib/liba.so.meta_lic",
4116 "proprietary"),
4117 matchResolution(
4118 "lib/libb.so.meta_lic",
4119 "lib/libb.so.meta_lic",
4120 "lib/libb.so.meta_lic",
4121 "restricted"),
4122 },
4123 },
4124 {
4125 condition: "proprietary",
4126 name: "apex_trimmed_labelled",
4127 roots: []string{"highest.apex.meta_lic"},
4128 ctx: context{stripPrefix: "testdata/proprietary/", labelConditions: true},
4129 expectedOut: []getMatcher{
4130 matchTarget("bin/bin1.meta_lic", "notice"),
4131 matchTarget("lib/liba.so.meta_lic", "by_exception_only", "proprietary"),
4132 matchTarget("lib/libc.a.meta_lic", "by_exception_only", "proprietary"),
4133 matchTarget("bin/bin2.meta_lic", "by_exception_only", "proprietary"),
4134 matchTarget("lib/libb.so.meta_lic", "restricted"),
4135 matchTarget("lib/libd.so.meta_lic", "notice"),
4136 matchTarget("highest.apex.meta_lic", "notice"),
4137 matchResolution(
4138 "bin/bin1.meta_lic",
4139 "bin/bin1.meta_lic",
4140 "bin/bin1.meta_lic",
4141 "notice"),
4142 matchResolution(
4143 "bin/bin1.meta_lic",
4144 "lib/liba.so.meta_lic",
4145 "lib/liba.so.meta_lic",
4146 "by_exception_only",
4147 "proprietary"),
4148 matchResolution(
4149 "bin/bin1.meta_lic",
4150 "lib/libc.a.meta_lic",
4151 "lib/libc.a.meta_lic",
4152 "by_exception_only",
4153 "proprietary"),
4154 matchResolution(
4155 "bin/bin2.meta_lic",
4156 "bin/bin2.meta_lic",
4157 "bin/bin2.meta_lic",
4158 "by_exception_only",
4159 "proprietary"),
4160 matchResolution(
4161 "bin/bin2.meta_lic",
4162 "bin/bin2.meta_lic",
4163 "lib/libb.so.meta_lic",
4164 "restricted"),
4165 matchResolution(
4166 "bin/bin2.meta_lic",
4167 "lib/libb.so.meta_lic",
4168 "lib/libb.so.meta_lic",
4169 "restricted"),
4170 matchResolution(
4171 "bin/bin2.meta_lic",
4172 "lib/libd.so.meta_lic",
4173 "lib/libb.so.meta_lic",
4174 "restricted"),
4175 matchResolution(
4176 "highest.apex.meta_lic",
4177 "bin/bin1.meta_lic",
4178 "bin/bin1.meta_lic",
4179 "notice"),
4180 matchResolution(
4181 "highest.apex.meta_lic",
4182 "bin/bin2.meta_lic",
4183 "bin/bin2.meta_lic",
4184 "by_exception_only",
4185 "proprietary"),
4186 matchResolution(
4187 "highest.apex.meta_lic",
4188 "bin/bin2.meta_lic",
4189 "lib/libb.so.meta_lic",
4190 "restricted"),
4191 matchResolution(
4192 "highest.apex.meta_lic",
4193 "highest.apex.meta_lic",
4194 "highest.apex.meta_lic",
4195 "notice"),
4196 matchResolution(
4197 "highest.apex.meta_lic",
4198 "highest.apex.meta_lic",
4199 "lib/libb.so.meta_lic",
4200 "restricted"),
4201 matchResolution(
4202 "highest.apex.meta_lic",
4203 "lib/liba.so.meta_lic",
4204 "lib/liba.so.meta_lic",
4205 "by_exception_only",
4206 "proprietary"),
4207 matchResolution(
4208 "highest.apex.meta_lic",
4209 "lib/libb.so.meta_lic",
4210 "lib/libb.so.meta_lic",
4211 "restricted"),
4212 matchResolution(
4213 "highest.apex.meta_lic",
4214 "lib/libc.a.meta_lic",
4215 "lib/libc.a.meta_lic",
4216 "by_exception_only",
4217 "proprietary"),
4218 matchResolution(
4219 "highest.apex.meta_lic",
4220 "lib/libd.so.meta_lic",
4221 "lib/libb.so.meta_lic",
4222 "restricted"),
4223 matchResolution(
4224 "lib/liba.so.meta_lic",
4225 "lib/liba.so.meta_lic",
4226 "lib/liba.so.meta_lic",
4227 "by_exception_only",
4228 "proprietary"),
4229 matchResolution(
4230 "lib/libb.so.meta_lic",
4231 "lib/libb.so.meta_lic",
4232 "lib/libb.so.meta_lic",
4233 "restricted"),
4234 matchResolution(
4235 "lib/libc.a.meta_lic",
4236 "lib/libc.a.meta_lic",
4237 "lib/libc.a.meta_lic",
4238 "by_exception_only",
4239 "proprietary"),
4240 matchResolution(
4241 "lib/libd.so.meta_lic",
4242 "lib/libd.so.meta_lic",
4243 "lib/libd.so.meta_lic",
4244 "notice"),
4245 },
4246 },
4247 {
4248 condition: "proprietary",
4249 name: "container",
4250 roots: []string{"container.zip.meta_lic"},
4251 expectedOut: []getMatcher{
4252 matchTarget("testdata/proprietary/bin/bin1.meta_lic"),
4253 matchTarget("testdata/proprietary/lib/liba.so.meta_lic"),
4254 matchTarget("testdata/proprietary/lib/libc.a.meta_lic"),
4255 matchTarget("testdata/proprietary/bin/bin2.meta_lic"),
4256 matchTarget("testdata/proprietary/lib/libb.so.meta_lic"),
4257 matchTarget("testdata/proprietary/lib/libd.so.meta_lic"),
4258 matchTarget("testdata/proprietary/container.zip.meta_lic"),
4259 matchResolution(
4260 "testdata/proprietary/bin/bin1.meta_lic",
4261 "testdata/proprietary/bin/bin1.meta_lic",
4262 "testdata/proprietary/bin/bin1.meta_lic",
4263 "notice"),
4264 matchResolution(
4265 "testdata/proprietary/bin/bin1.meta_lic",
4266 "testdata/proprietary/lib/liba.so.meta_lic",
4267 "testdata/proprietary/lib/liba.so.meta_lic",
4268 "by_exception_only",
4269 "proprietary"),
4270 matchResolution(
4271 "testdata/proprietary/bin/bin1.meta_lic",
4272 "testdata/proprietary/lib/libc.a.meta_lic",
4273 "testdata/proprietary/lib/libc.a.meta_lic",
4274 "by_exception_only",
4275 "proprietary"),
4276 matchResolution(
4277 "testdata/proprietary/bin/bin2.meta_lic",
4278 "testdata/proprietary/bin/bin2.meta_lic",
4279 "testdata/proprietary/bin/bin2.meta_lic",
4280 "by_exception_only",
4281 "proprietary"),
4282 matchResolution(
4283 "testdata/proprietary/bin/bin2.meta_lic",
4284 "testdata/proprietary/bin/bin2.meta_lic",
4285 "testdata/proprietary/lib/libb.so.meta_lic",
4286 "restricted"),
4287 matchResolution(
4288 "testdata/proprietary/bin/bin2.meta_lic",
4289 "testdata/proprietary/lib/libb.so.meta_lic",
4290 "testdata/proprietary/lib/libb.so.meta_lic",
4291 "restricted"),
4292 matchResolution(
4293 "testdata/proprietary/bin/bin2.meta_lic",
4294 "testdata/proprietary/lib/libd.so.meta_lic",
4295 "testdata/proprietary/lib/libb.so.meta_lic",
4296 "restricted"),
4297 matchResolution(
4298 "testdata/proprietary/container.zip.meta_lic",
4299 "testdata/proprietary/bin/bin1.meta_lic",
4300 "testdata/proprietary/bin/bin1.meta_lic",
4301 "notice"),
4302 matchResolution(
4303 "testdata/proprietary/container.zip.meta_lic",
4304 "testdata/proprietary/bin/bin2.meta_lic",
4305 "testdata/proprietary/bin/bin2.meta_lic",
4306 "by_exception_only",
4307 "proprietary"),
4308 matchResolution(
4309 "testdata/proprietary/container.zip.meta_lic",
4310 "testdata/proprietary/bin/bin2.meta_lic",
4311 "testdata/proprietary/lib/libb.so.meta_lic",
4312 "restricted"),
4313 matchResolution(
4314 "testdata/proprietary/container.zip.meta_lic",
4315 "testdata/proprietary/container.zip.meta_lic",
4316 "testdata/proprietary/container.zip.meta_lic",
4317 "notice"),
4318 matchResolution(
4319 "testdata/proprietary/container.zip.meta_lic",
4320 "testdata/proprietary/container.zip.meta_lic",
4321 "testdata/proprietary/lib/libb.so.meta_lic",
4322 "restricted"),
4323 matchResolution(
4324 "testdata/proprietary/container.zip.meta_lic",
4325 "testdata/proprietary/lib/liba.so.meta_lic",
4326 "testdata/proprietary/lib/liba.so.meta_lic",
4327 "by_exception_only",
4328 "proprietary"),
4329 matchResolution(
4330 "testdata/proprietary/container.zip.meta_lic",
4331 "testdata/proprietary/lib/libb.so.meta_lic",
4332 "testdata/proprietary/lib/libb.so.meta_lic",
4333 "restricted"),
4334 matchResolution(
4335 "testdata/proprietary/container.zip.meta_lic",
4336 "testdata/proprietary/lib/libc.a.meta_lic",
4337 "testdata/proprietary/lib/libc.a.meta_lic",
4338 "by_exception_only",
4339 "proprietary"),
4340 matchResolution(
4341 "testdata/proprietary/container.zip.meta_lic",
4342 "testdata/proprietary/lib/libd.so.meta_lic",
4343 "testdata/proprietary/lib/libb.so.meta_lic",
4344 "restricted"),
4345 matchResolution(
4346 "testdata/proprietary/lib/liba.so.meta_lic",
4347 "testdata/proprietary/lib/liba.so.meta_lic",
4348 "testdata/proprietary/lib/liba.so.meta_lic",
4349 "by_exception_only",
4350 "proprietary"),
4351 matchResolution(
4352 "testdata/proprietary/lib/libb.so.meta_lic",
4353 "testdata/proprietary/lib/libb.so.meta_lic",
4354 "testdata/proprietary/lib/libb.so.meta_lic",
4355 "restricted"),
4356 matchResolution(
4357 "testdata/proprietary/lib/libc.a.meta_lic",
4358 "testdata/proprietary/lib/libc.a.meta_lic",
4359 "testdata/proprietary/lib/libc.a.meta_lic",
4360 "by_exception_only",
4361 "proprietary"),
4362 matchResolution(
4363 "testdata/proprietary/lib/libd.so.meta_lic",
4364 "testdata/proprietary/lib/libd.so.meta_lic",
4365 "testdata/proprietary/lib/libd.so.meta_lic",
4366 "notice"),
4367 },
4368 },
4369 {
4370 condition: "proprietary",
4371 name: "application",
4372 roots: []string{"application.meta_lic"},
4373 expectedOut: []getMatcher{
4374 matchTarget("testdata/proprietary/application.meta_lic"),
4375 matchTarget("testdata/proprietary/lib/liba.so.meta_lic"),
4376 matchTarget("testdata/proprietary/lib/libb.so.meta_lic"),
4377 matchTarget("testdata/proprietary/bin/bin3.meta_lic"),
4378 matchResolution(
4379 "testdata/proprietary/application.meta_lic",
4380 "testdata/proprietary/application.meta_lic",
4381 "testdata/proprietary/application.meta_lic",
4382 "notice"),
4383 matchResolution(
4384 "testdata/proprietary/application.meta_lic",
4385 "testdata/proprietary/application.meta_lic",
4386 "testdata/proprietary/lib/libb.so.meta_lic",
4387 "restricted"),
4388 matchResolution(
4389 "testdata/proprietary/application.meta_lic",
4390 "testdata/proprietary/lib/liba.so.meta_lic",
4391 "testdata/proprietary/lib/liba.so.meta_lic",
4392 "by_exception_only",
4393 "proprietary"),
4394 matchResolution(
4395 "testdata/proprietary/application.meta_lic",
4396 "testdata/proprietary/lib/liba.so.meta_lic",
4397 "testdata/proprietary/lib/libb.so.meta_lic",
4398 "restricted"),
4399 matchResolution(
4400 "testdata/proprietary/application.meta_lic",
4401 "testdata/proprietary/lib/libb.so.meta_lic",
4402 "testdata/proprietary/lib/libb.so.meta_lic",
4403 "restricted"),
4404 matchResolution(
4405 "testdata/proprietary/bin/bin3.meta_lic",
4406 "testdata/proprietary/bin/bin3.meta_lic",
4407 "testdata/proprietary/bin/bin3.meta_lic",
4408 "restricted"),
4409 matchResolution(
4410 "testdata/proprietary/lib/liba.so.meta_lic",
4411 "testdata/proprietary/lib/liba.so.meta_lic",
4412 "testdata/proprietary/lib/liba.so.meta_lic",
4413 "by_exception_only",
4414 "proprietary"),
4415 matchResolution(
4416 "testdata/proprietary/lib/libb.so.meta_lic",
4417 "testdata/proprietary/lib/libb.so.meta_lic",
4418 "testdata/proprietary/lib/libb.so.meta_lic",
4419 "restricted"),
4420 },
4421 },
4422 {
4423 condition: "proprietary",
4424 name: "binary",
4425 roots: []string{"bin/bin1.meta_lic"},
4426 expectedOut: []getMatcher{
4427 matchTarget("testdata/proprietary/bin/bin1.meta_lic"),
4428 matchTarget("testdata/proprietary/lib/liba.so.meta_lic"),
4429 matchTarget("testdata/proprietary/lib/libc.a.meta_lic"),
4430 matchResolution(
4431 "testdata/proprietary/bin/bin1.meta_lic",
4432 "testdata/proprietary/bin/bin1.meta_lic",
4433 "testdata/proprietary/bin/bin1.meta_lic",
4434 "notice"),
4435 matchResolution(
4436 "testdata/proprietary/bin/bin1.meta_lic",
4437 "testdata/proprietary/lib/liba.so.meta_lic",
4438 "testdata/proprietary/lib/liba.so.meta_lic",
4439 "by_exception_only",
4440 "proprietary"),
4441 matchResolution(
4442 "testdata/proprietary/bin/bin1.meta_lic",
4443 "testdata/proprietary/lib/libc.a.meta_lic",
4444 "testdata/proprietary/lib/libc.a.meta_lic",
4445 "by_exception_only",
4446 "proprietary"),
4447 matchResolution(
4448 "testdata/proprietary/lib/liba.so.meta_lic",
4449 "testdata/proprietary/lib/liba.so.meta_lic",
4450 "testdata/proprietary/lib/liba.so.meta_lic",
4451 "by_exception_only",
4452 "proprietary"),
4453 matchResolution(
4454 "testdata/proprietary/lib/libc.a.meta_lic",
4455 "testdata/proprietary/lib/libc.a.meta_lic",
4456 "testdata/proprietary/lib/libc.a.meta_lic",
4457 "by_exception_only",
4458 "proprietary"),
4459 },
4460 },
4461 {
4462 condition: "proprietary",
4463 name: "library",
4464 roots: []string{"lib/libd.so.meta_lic"},
4465 expectedOut: []getMatcher{
4466 matchTarget("testdata/proprietary/lib/libd.so.meta_lic"),
4467 matchResolution(
4468 "testdata/proprietary/lib/libd.so.meta_lic",
4469 "testdata/proprietary/lib/libd.so.meta_lic",
4470 "testdata/proprietary/lib/libd.so.meta_lic",
4471 "notice"),
4472 },
4473 },
4474 }
4475 for _, tt := range tests {
4476 t.Run(tt.condition+" "+tt.name, func(t *testing.T) {
4477 ctx := &testContext{0, make(map[string]string)}
4478
4479 expectedOut := &bytes.Buffer{}
4480 for _, eo := range tt.expectedOut {
4481 m := eo(ctx)
4482 expectedOut.WriteString(m.matchString(ctx))
4483 expectedOut.WriteString("\n")
4484 }
4485
4486 stdout := &bytes.Buffer{}
4487 stderr := &bytes.Buffer{}
4488
4489 rootFiles := make([]string, 0, len(tt.roots))
4490 for _, r := range tt.roots {
4491 rootFiles = append(rootFiles, "testdata/"+tt.condition+"/"+r)
4492 }
4493 tt.ctx.graphViz = true
4494 err := dumpResolutions(&tt.ctx, stdout, stderr, rootFiles...)
4495
4496 if err != nil {
4497 t.Fatalf("dumpresolutions: error = %v, stderr = %v", err, stderr)
4498 return
4499 }
4500 if stderr.Len() > 0 {
4501 t.Errorf("dumpresolutions: gotStderr = %v, want none", stderr)
4502 }
4503 outList := strings.Split(stdout.String(), "\n")
4504 outLine := 0
4505 if outList[outLine] != "strict digraph {" {
4506 t.Errorf("dumpresolutions: got 1st line %v, want strict digraph {")
4507 }
4508 outLine++
4509 if strings.HasPrefix(strings.TrimLeft(outList[outLine], " \t"), "rankdir") {
4510 outLine++
4511 }
4512 endOut := len(outList)
4513 for endOut > 0 && strings.TrimLeft(outList[endOut-1], " \t") == "" {
4514 endOut--
4515 }
4516 if outList[endOut-1] != "}" {
4517 t.Errorf("dumpresolutions: got last line %v, want }", outList[endOut-1])
4518 }
4519 endOut--
4520 if strings.HasPrefix(strings.TrimLeft(outList[endOut-1], " \t"), "{rank=same") {
4521 endOut--
4522 }
4523 expectedList := strings.Split(expectedOut.String(), "\n")
4524 for len(expectedList) > 0 && expectedList[len(expectedList)-1] == "" {
4525 expectedList = expectedList[0 : len(expectedList)-1]
4526 }
4527 matchLine := 0
4528
4529 for outLine < endOut && matchLine < len(expectedList) && strings.TrimLeft(outList[outLine], " \t") == expectedList[matchLine] {
4530 outLine++
4531 matchLine++
4532 }
4533 if outLine < endOut || matchLine < len(expectedList) {
4534 if outLine >= endOut {
4535 t.Errorf("dumpresolutions: missing lines at end of graph, want %d lines %v", len(expectedList)-matchLine, strings.Join(expectedList[matchLine:], "\n"))
4536 } else if matchLine >= len(expectedList) {
4537 t.Errorf("dumpresolutions: unexpected lines at end of graph starting line %d, got %v, want nothing", outLine+1, strings.Join(outList[outLine:], "\n"))
4538 } else {
4539 t.Errorf("dumpresolutions: at line %d, got %v, want %v", outLine+1, strings.Join(outList[outLine:], "\n"), strings.Join(expectedList[matchLine:], "\n"))
4540 }
4541 }
4542 })
4543 }
4544}