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