blob: 4d623ce5a75e55f1406d14d621d615094141fd53 [file] [log] [blame]
Ibrahim Kanouchebedf1a82022-10-22 01:28:05 +00001// Copyright 2022 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 "bufio"
19 "bytes"
20 "fmt"
21 "os"
22 "reflect"
23 "regexp"
24 "strings"
25 "testing"
26 "time"
27
28 "android/soong/tools/compliance"
29)
30
31var (
32 spdxVersionTag = regexp.MustCompile(`^\s*SPDXVersion: SPDX-2.2\s*$`)
33 spdxDataLicenseTag = regexp.MustCompile(`^\s*DataLicense: CC-1.0\s*$`)
34 spdxDocumentNameTag = regexp.MustCompile(`^\s*DocumentName:\s*Android*\s*$`)
35 spdxIDTag = regexp.MustCompile(`^\s*SPDXID:\s*SPDXRef-DOCUMENT-(.*)\s*$`)
36 spdxDocumentNameSpaceTag = regexp.MustCompile(`^\s*DocumentNamespace:\s*Android\s*$`)
37 spdxCreatorOrganizationTag = regexp.MustCompile(`^\s*Creator:\s*Organization:\s*Google LLC\s*$`)
38 spdxCreatedTimeTag = regexp.MustCompile(`^\s*Created: 1970-01-01T00:00:00Z\s*$`)
39 spdxPackageTag = regexp.MustCompile(`^\s*#####\s*Package:\s*(.*)\s*$`)
40 spdxPackageNameTag = regexp.MustCompile(`^\s*PackageName:\s*(.*)\s*$`)
41 spdxPkgIDTag = regexp.MustCompile(`^\s*SPDXID:\s*SPDXRef-Package-(.*)\s*$`)
42 spdxPkgDownloadLocationTag = regexp.MustCompile(`^\s*PackageDownloadLocation:\s*NOASSERTION\s*$`)
43 spdxPkgLicenseDeclaredTag = regexp.MustCompile(`^\s*PackageLicenseConcluded:\s*LicenseRef-(.*)\s*$`)
44 spdxRelationshipTag = regexp.MustCompile(`^\s*Relationship:\s*SPDXRef-(.*)\s*(DESCRIBES|CONTAINS|BUILD_TOOL_OF|RUNTIME_DEPENDENCY_OF)\s*SPDXRef-Package-(.*)\s*$`)
45 spdxLicenseTag = regexp.MustCompile(`^\s*##### Non-standard license:\s*$`)
46 spdxLicenseIDTag = regexp.MustCompile(`^\s*LicenseID: LicenseRef-(.*)\s*$`)
47 spdxExtractedTextTag = regexp.MustCompile(`^\s*ExtractedText:\s*<text>(.*)\s*$`)
48 spdxExtractedClosingTextTag = regexp.MustCompile(`^\s*</text>\s*$`)
49)
50
51func TestMain(m *testing.M) {
52 // Change into the parent directory before running the tests
53 // so they can find the testdata directory.
54 if err := os.Chdir(".."); err != nil {
55 fmt.Printf("failed to change to testdata directory: %s\n", err)
56 os.Exit(1)
57 }
58 os.Exit(m.Run())
59}
60
61func Test(t *testing.T) {
62 tests := []struct {
63 condition string
64 name string
65 outDir string
66 roots []string
67 stripPrefix string
68 expectedOut []matcher
69 expectedDeps []string
70 }{
71 {
72 condition: "firstparty",
73 name: "apex",
74 roots: []string{"highest.apex.meta_lic"},
75 expectedOut: []matcher{
76 spdxVersion{},
77 spdxDataLicense{},
78 spdxDocumentName{"Android"},
79 spdxID{"Android"},
80 spdxDocumentNameSpace{},
81 spdxCreatorOrganization{},
82 spdxCreatedTime{},
83 packageTag{"testdata/firstparty/highest.apex.meta_lic"},
84 packageName{"testdata/firstparty/highest.apex.meta_lic"},
85 spdxPkgID{"testdata/firstparty/highest.apex.meta_lic"},
86 spdxPkgDownloadLocation{"NOASSERTION"},
87 spdxPkgLicenseDeclared{"testdata-firstparty-FIRST_PARTY_LICENSE"},
88 spdxRelationship{"DOCUMENT-Android ", "testdata-firstparty-highest.apex.meta_lic", "DESCRIBES"},
89 packageTag{"testdata/firstparty/bin/bin1.meta_lic"},
90 packageName{"testdata/firstparty/bin/bin1.meta_lic"},
91 spdxPkgID{"testdata/firstparty/bin/bin1.meta_lic"},
92 spdxPkgDownloadLocation{"NOASSERTION"},
93 spdxPkgLicenseDeclared{"testdata-firstparty-FIRST_PARTY_LICENSE"},
94 spdxRelationship{"Package-testdata/firstparty/highest.apex.meta_lic ", "testdata/firstparty/bin/bin1.meta_lic", "CONTAINS"},
95 packageTag{"testdata/firstparty/bin/bin2.meta_lic"},
96 packageName{"testdata/firstparty/bin/bin2.meta_lic"},
97 spdxPkgID{"testdata/firstparty/bin/bin2.meta_lic"},
98 spdxPkgDownloadLocation{"NOASSERTION"},
99 spdxPkgLicenseDeclared{"testdata-firstparty-FIRST_PARTY_LICENSE"},
100 spdxRelationship{"Package-testdata/firstparty/highest.apex.meta_lic ", "testdata-firstparty-bin-bin2.meta_lic", "CONTAINS"},
101 packageTag{"testdata/firstparty/lib/liba.so.meta_lic"},
102 packageName{"testdata/firstparty/lib/liba.so.meta_lic"},
103 spdxPkgID{"testdata/firstparty/lib/liba.so.meta_lic"},
104 spdxPkgDownloadLocation{"NOASSERTION"},
105 spdxPkgLicenseDeclared{"testdata-firstparty-FIRST_PARTY_LICENSE"},
106 spdxRelationship{"Package-testdata/firstparty/highest.apex.meta_lic ", "testdata/firstparty/lib/liba.so.meta_lic", "CONTAINS"},
107 packageTag{"testdata/firstparty/lib/libb.so.meta_lic"},
108 packageName{"testdata/firstparty/lib/libb.so.meta_lic"},
109 spdxPkgID{"testdata/firstparty/lib/libb.so.meta_lic"},
110 spdxPkgDownloadLocation{"NOASSERTION"},
111 spdxPkgLicenseDeclared{"testdata-firstparty-FIRST_PARTY_LICENSE"},
112 spdxRelationship{"Package-testdata/firstparty/highest.apex.meta_lic ", "testdata/firstparty/lib/libb.so.meta_lic", "CONTAINS"},
113 spdxRelationship{"Package-testdata/firstparty/bin/bin1.meta_lic ", "testdata/firstparty/lib/liba.so.meta_lic", "CONTAINS"},
114 packageTag{"testdata/firstparty/lib/libc.a.meta_lic"},
115 packageName{"testdata/firstparty/lib/libc.a.meta_lic"},
116 spdxPkgID{"testdata/firstparty/lib/libc.a.meta_lic"},
117 spdxPkgDownloadLocation{"NOASSERTION"},
118 spdxPkgLicenseDeclared{"testdata-firstparty-FIRST_PARTY_LICENSE"},
119 spdxRelationship{"Package-testdata-firstparty-bin-bin1.meta_lic ", "testdata/firstparty/lib/libc.a.meta_lic", "CONTAINS"},
120 spdxRelationship{"Package-testdata/firstparty/lib/libb.so.meta_lic ", "testdata/firstparty/bin/bin2.meta_lic", "RUNTIME_DEPENDENCY_OF"},
121 packageTag{"testdata/firstparty/lib/libd.so.meta_lic"},
122 packageName{"testdata/firstparty/lib/libd.so.meta_lic"},
123 spdxPkgID{"testdata/firstparty/lib/libd.so.meta_lic"},
124 spdxPkgDownloadLocation{"NOASSERTION"},
125 spdxPkgLicenseDeclared{"testdata-firstparty-FIRST_PARTY_LICENSE"},
126 spdxRelationship{"Package-testdata/firstparty/lib/libd.so.meta_lic ", "testdata/firstparty/bin/bin2.meta_lic", "RUNTIME_DEPENDENCY_OF"},
127 spdxLicense{},
128 spdxLicenseID{"testdata-firstparty-FIRST_PARTY_LICENSE"},
129 spdxExtractedText{"&&&First Party License&&&"},
130 spdxExtractedClosingText{},
131 },
Ibrahim Kanouche649b4d72022-11-12 05:46:12 +0000132 expectedDeps: []string{
133 "testdata/firstparty/FIRST_PARTY_LICENSE",
134 "testdata/firstparty/bin/bin1.meta_lic",
135 "testdata/firstparty/bin/bin2.meta_lic",
136 "testdata/firstparty/highest.apex.meta_lic",
137 "testdata/firstparty/lib/liba.so.meta_lic",
138 "testdata/firstparty/lib/libb.so.meta_lic",
139 "testdata/firstparty/lib/libc.a.meta_lic",
140 "testdata/firstparty/lib/libd.so.meta_lic",
141 },
Ibrahim Kanouchebedf1a82022-10-22 01:28:05 +0000142 },
143 {
144 condition: "firstparty",
145 name: "application",
146 roots: []string{"application.meta_lic"},
147 expectedOut: []matcher{
148 spdxVersion{},
149 spdxDataLicense{},
150 spdxDocumentName{"Android"},
151 spdxID{"Android"},
152 spdxDocumentNameSpace{},
153 spdxCreatorOrganization{},
154 spdxCreatedTime{},
155 packageTag{"testdata/firstparty/application.meta_lic"},
156 packageName{"testdata/firstparty/application.meta_lic"},
157 spdxPkgID{"testdata/firstparty/application.meta_lic"},
158 spdxPkgDownloadLocation{"NOASSERTION"},
159 spdxPkgLicenseDeclared{"testdata-firstparty-FIRST_PARTY_LICENSE"},
160 spdxRelationship{"DOCUMENT-Android ", "testdata/firstparty/application.meta_lic", "DESCRIBES"},
161 packageTag{"testdata/firstparty/bin/bin3.meta_lic"},
162 packageName{"testdata/firstparty/bin/bin3.meta_lic"},
163 spdxPkgID{"testdata/firstparty/bin/bin3.meta_lic"},
164 spdxPkgDownloadLocation{"NOASSERTION"},
165 spdxPkgLicenseDeclared{"testdata-firstparty-FIRST_PARTY_LICENSE"},
166 spdxRelationship{"Package-testdata/firstparty/bin/bin3.meta_lic ", "testdata-firstparty-application.meta_lic", "BUILD_TOOL_OF"},
167 packageTag{"testdata/firstparty/lib/liba.so.meta_lic"},
168 packageName{"testdata/firstparty/lib/liba.so.meta_lic"},
169 spdxPkgID{"testdata/firstparty/lib/liba.so.meta_lic"},
170 spdxPkgDownloadLocation{"NOASSERTION"},
171 spdxPkgLicenseDeclared{"testdata-firstparty-FIRST_PARTY_LICENSE"},
172 spdxRelationship{"Package-testdata/firstparty/application.meta_lic ", "testdata/firstparty/lib/liba.so.meta_lic", "CONTAINS"},
173 packageTag{"testdata/firstparty/lib/libb.so.meta_lic"},
174 packageName{"testdata/firstparty/lib/libb.so.meta_lic"},
175 spdxPkgID{"testdata/firstparty/lib/libb.so.meta_lic"},
176 spdxPkgDownloadLocation{"NOASSERTION"},
177 spdxPkgLicenseDeclared{"testdata-firstparty-FIRST_PARTY_LICENSE"},
178 spdxRelationship{"Package-testdata/firstparty/lib/libb.so.meta_lic ", "testdata-firstparty-application.meta_lic", "RUNTIME_DEPENDENCY_OF"},
179 spdxLicense{},
180 spdxLicenseID{"testdata-firstparty-FIRST_PARTY_LICENSE"},
181 spdxExtractedText{"&&&First Party License&&&"},
182 spdxExtractedClosingText{},
183 },
Ibrahim Kanouche649b4d72022-11-12 05:46:12 +0000184 expectedDeps: []string{
185 "testdata/firstparty/FIRST_PARTY_LICENSE",
186 "testdata/firstparty/application.meta_lic",
187 "testdata/firstparty/bin/bin3.meta_lic",
188 "testdata/firstparty/lib/liba.so.meta_lic",
189 "testdata/firstparty/lib/libb.so.meta_lic",
190 },
Ibrahim Kanouchebedf1a82022-10-22 01:28:05 +0000191 },
192 {
193 condition: "firstparty",
194 name: "container",
195 roots: []string{"container.zip.meta_lic"},
196 expectedOut: []matcher{
197 spdxVersion{},
198 spdxDataLicense{},
199 spdxDocumentName{"Android"},
200 spdxID{"Android"},
201 spdxDocumentNameSpace{},
202 spdxCreatorOrganization{},
203 spdxCreatedTime{},
204 packageTag{"testdata/firstparty/container.zip.meta_lic"},
205 packageName{"testdata/firstparty/container.zip.meta_lic"},
206 spdxPkgID{"testdata/firstparty/container.zip.meta_lic"},
207 spdxPkgDownloadLocation{"NOASSERTION"},
208 spdxPkgLicenseDeclared{"testdata-firstparty-FIRST_PARTY_LICENSE"},
209 spdxRelationship{"DOCUMENT-Android ", "testdata/firstparty/container.zip.meta_lic", "DESCRIBES"},
210 packageTag{"testdata/firstparty/bin/bin1.meta_lic"},
211 packageName{"testdata/firstparty/bin/bin1.meta_lic"},
212 spdxPkgID{"testdata/firstparty/bin/bin1.meta_lic"},
213 spdxPkgDownloadLocation{"NOASSERTION"},
214 spdxPkgLicenseDeclared{"testdata-firstparty-FIRST_PARTY_LICENSE"},
215 spdxRelationship{"Package-testdata/firstparty/container.zip.meta_lic ", "testdata/firstparty/bin/bin1.meta_lic", "CONTAINS"},
216 packageTag{"testdata/firstparty/bin/bin2.meta_lic"},
217 packageName{"testdata/firstparty/bin/bin2.meta_lic"},
218 spdxPkgID{"testdata/firstparty/bin/bin2.meta_lic"},
219 spdxPkgDownloadLocation{"NOASSERTION"},
220 spdxPkgLicenseDeclared{"testdata-firstparty-FIRST_PARTY_LICENSE"},
221 spdxRelationship{"Package-testdata/firstparty/container.zip.meta_lic ", "testdata/firstparty/bin/bin2.meta_lic", "CONTAINS"},
222 packageTag{"testdata/firstparty/lib/liba.so.meta_lic"},
223 packageName{"testdata/firstparty/lib/liba.so.meta_lic"},
224 spdxPkgID{"testdata/firstparty/lib/liba.so.meta_lic"},
225 spdxPkgDownloadLocation{"NOASSERTION"},
226 spdxPkgLicenseDeclared{"testdata-firstparty-FIRST_PARTY_LICENSE"},
227 spdxRelationship{"Package-testdata/firstparty/container.zip.meta_lic ", "testdata/firstparty/lib/liba.so.meta_lic", "CONTAINS"},
228 packageTag{"testdata/firstparty/lib/libb.so.meta_lic"},
229 packageName{"testdata/firstparty/lib/libb.so.meta_lic"},
230 spdxPkgID{"testdata/firstparty/lib/libb.so.meta_lic"},
231 spdxPkgDownloadLocation{"NOASSERTION"},
232 spdxPkgLicenseDeclared{"testdata-firstparty-FIRST_PARTY_LICENSE"},
233 spdxRelationship{"Package-testdata/firstparty/container.zip.meta_lic ", "testdata/firstparty/lib/libb.so.meta_lic", "CONTAINS"},
234 spdxRelationship{"Package-testdata/firstparty/bin/bin1.meta_lic ", "testdata/firstparty/lib/liba.so.meta_lic", "CONTAINS"},
235 packageTag{"testdata/firstparty/lib/libc.a.meta_lic"},
236 packageName{"testdata/firstparty/lib/libc.a.meta_lic"},
237 spdxPkgID{"testdata/firstparty/lib/libc.a.meta_lic"},
238 spdxPkgDownloadLocation{"NOASSERTION"},
239 spdxPkgLicenseDeclared{"testdata-firstparty-FIRST_PARTY_LICENSE"},
240 spdxRelationship{"Package-testdata/firstparty/bin/bin1.meta_lic ", "testdata/firstparty/lib/libc.a.meta_lic", "CONTAINS"},
241 spdxRelationship{"Package-testdata/firstparty/lib/libb.so.meta_lic ", "testdata/firstparty/bin/bin2.meta_lic", "RUNTIME_DEPENDENCY_OF"},
242 packageTag{"testdata/firstparty/lib/libd.so.meta_lic"},
243 packageName{"testdata/firstparty/lib/libd.so.meta_lic"},
244 spdxPkgID{"testdata/firstparty/lib/libd.so.meta_lic"},
245 spdxPkgDownloadLocation{"NOASSERTION"},
246 spdxPkgLicenseDeclared{"testdata-firstparty-FIRST_PARTY_LICENSE"},
247 spdxRelationship{"Package-testdata/firstparty/lib/libd.so.meta_lic ", "testdata/firstparty/bin/bin2.meta_lic", "RUNTIME_DEPENDENCY_OF"},
248 spdxLicense{},
249 spdxLicenseID{"testdata-firstparty-FIRST_PARTY_LICENSE"},
250 spdxExtractedText{"&&&First Party License&&&"},
251 spdxExtractedClosingText{},
252 },
Ibrahim Kanouche649b4d72022-11-12 05:46:12 +0000253 expectedDeps: []string{
254 "testdata/firstparty/FIRST_PARTY_LICENSE",
255 "testdata/firstparty/bin/bin1.meta_lic",
256 "testdata/firstparty/bin/bin2.meta_lic",
257 "testdata/firstparty/container.zip.meta_lic",
258 "testdata/firstparty/lib/liba.so.meta_lic",
259 "testdata/firstparty/lib/libb.so.meta_lic",
260 "testdata/firstparty/lib/libc.a.meta_lic",
261 "testdata/firstparty/lib/libd.so.meta_lic",
262 },
Ibrahim Kanouchebedf1a82022-10-22 01:28:05 +0000263 },
264 {
265 condition: "firstparty",
266 name: "binary",
267 roots: []string{"bin/bin1.meta_lic"},
268 expectedOut: []matcher{
269 spdxVersion{},
270 spdxDataLicense{},
271 spdxDocumentName{"Android"},
272 spdxID{"Android"},
273 spdxDocumentNameSpace{},
274 spdxCreatorOrganization{},
275 spdxCreatedTime{},
276 packageTag{"testdata/firstparty/bin/bin1.meta_lic"},
277 packageName{"testdata/firstparty/bin/bin1.meta_lic"},
278 spdxPkgID{"testdata/firstparty/bin/bin1.meta_lic"},
279 spdxPkgDownloadLocation{"NOASSERTION"},
280 spdxPkgLicenseDeclared{"testdata-firstparty-FIRST_PARTY_LICENSE"},
281 spdxRelationship{"DOCUMENT-Android ", "testdata/firstparty/bin/bin1.meta_lic", "DESCRIBES"},
282 packageTag{"testdata/firstparty/lib/liba.so.meta_lic"},
283 packageName{"testdata/firstparty/lib/liba.so.meta_lic"},
284 spdxPkgID{"testdata/firstparty/lib/liba.so.meta_lic"},
285 spdxPkgDownloadLocation{"NOASSERTION"},
286 spdxPkgLicenseDeclared{"testdata-firstparty-FIRST_PARTY_LICENSE"},
287 spdxRelationship{"Package-testdata/firstparty/bin/bin1.meta_lic ", "testdata/firstparty/lib/liba.so.meta_lic", "CONTAINS"},
288 packageTag{"testdata/firstparty/lib/libc.a.meta_lic"},
289 packageName{"testdata/firstparty/lib/libc.a.meta_lic"},
290 spdxPkgID{"testdata/firstparty/lib/libc.a.meta_lic"},
291 spdxPkgDownloadLocation{"NOASSERTION"},
292 spdxPkgLicenseDeclared{"testdata-firstparty-FIRST_PARTY_LICENSE"},
293 spdxRelationship{"Package-testdata/firstparty/bin/bin1.meta_lic ", "testdata/firstparty/lib/libc.a.meta_lic", "CONTAINS"},
294 spdxLicense{},
295 spdxLicenseID{"testdata-firstparty-FIRST_PARTY_LICENSE"},
296 spdxExtractedText{"&&&First Party License&&&"},
297 spdxExtractedClosingText{},
298 },
Ibrahim Kanouche649b4d72022-11-12 05:46:12 +0000299 expectedDeps: []string{
300 "testdata/firstparty/FIRST_PARTY_LICENSE",
301 "testdata/firstparty/bin/bin1.meta_lic",
302 "testdata/firstparty/lib/liba.so.meta_lic",
303 "testdata/firstparty/lib/libc.a.meta_lic",
304 },
Ibrahim Kanouchebedf1a82022-10-22 01:28:05 +0000305 },
306 {
307 condition: "firstparty",
308 name: "library",
309 roots: []string{"lib/libd.so.meta_lic"},
310 expectedOut: []matcher{
311 spdxVersion{},
312 spdxDataLicense{},
313 spdxDocumentName{"Android"},
314 spdxID{"Android"},
315 spdxDocumentNameSpace{},
316 spdxCreatorOrganization{},
317 spdxCreatedTime{},
318 packageTag{"testdata/firstparty/lib/libd.so.meta_lic"},
319 packageName{"testdata/firstparty/lib/libd.so.meta_lic"},
320 spdxPkgID{"testdata/firstparty/lib/libd.so.meta_lic"},
321 spdxPkgDownloadLocation{"NOASSERTION"},
322 spdxPkgLicenseDeclared{"testdata-firstparty-FIRST_PARTY_LICENSE"},
323 spdxRelationship{"DOCUMENT-Android ", "testdata/firstparty/lib/libd.so.meta_lic", "DESCRIBES"},
324 spdxLicense{},
325 spdxLicenseID{"testdata-firstparty-FIRST_PARTY_LICENSE"},
326 spdxExtractedText{"&&&First Party License&&&"},
327 spdxExtractedClosingText{},
328 },
Ibrahim Kanouche649b4d72022-11-12 05:46:12 +0000329 expectedDeps: []string{
330 "testdata/firstparty/FIRST_PARTY_LICENSE",
331 "testdata/firstparty/lib/libd.so.meta_lic",
332 },
Ibrahim Kanouchebedf1a82022-10-22 01:28:05 +0000333 },
334 {
335 condition: "notice",
336 name: "apex",
337 roots: []string{"highest.apex.meta_lic"},
338 expectedOut: []matcher{
339 spdxVersion{},
340 spdxDataLicense{},
341 spdxDocumentName{"Android"},
342 spdxID{"Android"},
343 spdxDocumentNameSpace{},
344 spdxCreatorOrganization{},
345 spdxCreatedTime{},
346 packageTag{"testdata/notice/highest.apex.meta_lic"},
347 packageName{"testdata/notice/highest.apex.meta_lic"},
348 spdxPkgID{"testdata/notice/highest.apex.meta_lic"},
349 spdxPkgDownloadLocation{"NOASSERTION"},
350 spdxPkgLicenseDeclared{"testdata-firstparty-FIRST_PARTY_LICENSE"},
351 spdxRelationship{"DOCUMENT-Android ", "testdata/notice/highest.apex.meta_lic", "DESCRIBES"},
352 packageTag{"testdata/notice/bin/bin1.meta_lic"},
353 packageName{"testdata/notice/bin/bin1.meta_lic"},
354 spdxPkgID{"testdata/notice/bin/bin1.meta_lic"},
355 spdxPkgDownloadLocation{"NOASSERTION"},
356 spdxPkgLicenseDeclared{"testdata-firstparty-FIRST_PARTY_LICENSE"},
357 spdxRelationship{"Package-testdata/notice/highest.apex.meta_lic ", "testdata/notice/bin/bin1.meta_lic", "CONTAINS"},
358 packageTag{"testdata/notice/bin/bin2.meta_lic"},
359 packageName{"testdata/notice/bin/bin2.meta_lic"},
360 spdxPkgID{"testdata/notice/bin/bin2.meta_lic"},
361 spdxPkgDownloadLocation{"NOASSERTION"},
362 spdxPkgLicenseDeclared{"testdata-firstparty-FIRST_PARTY_LICENSE"},
363 spdxRelationship{"Package-testdata/notice/highest.apex.meta_lic ", "testdata/notice/bin/bin2.meta_lic", "CONTAINS"},
364 packageTag{"testdata/notice/lib/liba.so.meta_lic"},
365 packageName{"testdata/notice/lib/liba.so.meta_lic"},
366 spdxPkgID{"testdata/notice/lib/liba.so.meta_lic"},
367 spdxPkgDownloadLocation{"NOASSERTION"},
368 spdxPkgLicenseDeclared{"testdata-notice-NOTICE_LICENSE"},
369 spdxRelationship{"Package-testdata/notice/highest.apex.meta_lic ", "testdata/notice/lib/liba.so.meta_lic", "CONTAINS"},
370 packageTag{"testdata/notice/lib/libb.so.meta_lic"},
371 packageName{"testdata/notice/lib/libb.so.meta_lic"},
372 spdxPkgID{"testdata/notice/lib/libb.so.meta_lic"},
373 spdxPkgDownloadLocation{"NOASSERTION"},
374 spdxPkgLicenseDeclared{"testdata-firstparty-FIRST_PARTY_LICENSE"},
375 spdxRelationship{"Package-testdata/notice/highest.apex.meta_lic ", "testdata/notice/lib/libb.so.meta_lic", "CONTAINS"},
376 spdxRelationship{"Package-testdata/notice/bin/bin1.meta_lic ", "testdata/notice/lib/liba.so.meta_lic", "CONTAINS"},
377 packageTag{"testdata/notice/lib/libc.a.meta_lic"},
378 packageName{"testdata/notice/lib/libc.a.meta_lic"},
379 spdxPkgID{"testdata/notice/lib/libc.a.meta_lic"},
380 spdxPkgDownloadLocation{"NOASSERTION"},
381 spdxPkgLicenseDeclared{"testdata-notice-NOTICE_LICENSE"},
382 spdxRelationship{"Package-testdata/notice/bin/bin1.meta_lic ", "testdata/notice/lib/libc.a.meta_lic", "CONTAINS"},
383 spdxRelationship{"Package-testdata/notice/lib/libb.so.meta_lic ", "testdata/notice/bin/bin2.meta_lic", "RUNTIME_DEPENDENCY_OF"},
384 packageTag{"testdata/notice/lib/libd.so.meta_lic"},
385 packageName{"testdata/notice/lib/libd.so.meta_lic"},
386 spdxPkgID{"testdata/notice/lib/libd.so.meta_lic"},
387 spdxPkgDownloadLocation{"NOASSERTION"},
388 spdxPkgLicenseDeclared{"testdata-notice-NOTICE_LICENSE"},
389 spdxRelationship{"Package-testdata/notice/lib/libd.so.meta_lic ", "testdata/notice/bin/bin2.meta_lic", "RUNTIME_DEPENDENCY_OF"},
390 spdxLicense{},
391 spdxLicenseID{"testdata-firstparty-FIRST_PARTY_LICENSE"},
392 spdxExtractedText{"&&&First Party License&&&"},
393 spdxExtractedClosingText{},
394 spdxLicenseID{"testdata-notice-NOTICE_LICENSE"},
395 spdxExtractedText{"%%%Notice License%%%"},
396 spdxExtractedClosingText{},
397 },
398 expectedDeps: []string{
399 "testdata/firstparty/FIRST_PARTY_LICENSE",
400 "testdata/notice/NOTICE_LICENSE",
Ibrahim Kanouche649b4d72022-11-12 05:46:12 +0000401 "testdata/notice/bin/bin1.meta_lic",
402 "testdata/notice/bin/bin2.meta_lic",
403 "testdata/notice/highest.apex.meta_lic",
404 "testdata/notice/lib/liba.so.meta_lic",
405 "testdata/notice/lib/libb.so.meta_lic",
406 "testdata/notice/lib/libc.a.meta_lic",
407 "testdata/notice/lib/libd.so.meta_lic",
Ibrahim Kanouchebedf1a82022-10-22 01:28:05 +0000408 },
409 },
410 {
411 condition: "notice",
412 name: "container",
413 roots: []string{"container.zip.meta_lic"},
414 expectedOut: []matcher{
415 spdxVersion{},
416 spdxDataLicense{},
417 spdxDocumentName{"Android"},
418 spdxID{"Android"},
419 spdxDocumentNameSpace{},
420 spdxCreatorOrganization{},
421 spdxCreatedTime{},
422 packageTag{"testdata/notice/container.zip.meta_lic"},
423 packageName{"testdata/notice/container.zip.meta_lic"},
424 spdxPkgID{"testdata/notice/container.zip.meta_lic"},
425 spdxPkgDownloadLocation{"NOASSERTION"},
426 spdxPkgLicenseDeclared{"testdata-firstparty-FIRST_PARTY_LICENSE"},
427 spdxRelationship{"DOCUMENT-Android ", "testdata/notice/container.zip.meta_lic", "DESCRIBES"},
428 packageTag{"testdata/notice/bin/bin1.meta_lic"},
429 packageName{"testdata/notice/bin/bin1.meta_lic"},
430 spdxPkgID{"testdata/notice/bin/bin1.meta_lic"},
431 spdxPkgDownloadLocation{"NOASSERTION"},
432 spdxPkgLicenseDeclared{"testdata-firstparty-FIRST_PARTY_LICENSE"},
433 spdxRelationship{"Package-testdata/notice/container.zip.meta_lic ", "testdata/notice/bin/bin1.meta_lic", "CONTAINS"},
434 packageTag{"testdata/notice/bin/bin2.meta_lic"},
435 packageName{"testdata/notice/bin/bin2.meta_lic"},
436 spdxPkgID{"testdata/notice/bin/bin2.meta_lic"},
437 spdxPkgDownloadLocation{"NOASSERTION"},
438 spdxPkgLicenseDeclared{"testdata-firstparty-FIRST_PARTY_LICENSE"},
439 spdxRelationship{"Package-testdata/notice/container.zip.meta_lic ", "testdata/notice/bin/bin2.meta_lic", "CONTAINS"},
440 packageTag{"testdata/notice/lib/liba.so.meta_lic"},
441 packageName{"testdata/notice/lib/liba.so.meta_lic"},
442 spdxPkgID{"testdata/notice/lib/liba.so.meta_lic"},
443 spdxPkgDownloadLocation{"NOASSERTION"},
444 spdxPkgLicenseDeclared{"testdata-notice-NOTICE_LICENSE"},
445 spdxRelationship{"Package-testdata/notice/container.zip.meta_lic ", "testdata/notice/lib/liba.so.meta_lic", "CONTAINS"},
446 packageTag{"testdata/notice/lib/libb.so.meta_lic"},
447 packageName{"testdata/notice/lib/libb.so.meta_lic"},
448 spdxPkgID{"testdata/notice/lib/libb.so.meta_lic"},
449 spdxPkgDownloadLocation{"NOASSERTION"},
450 spdxPkgLicenseDeclared{"testdata-firstparty-FIRST_PARTY_LICENSE"},
451 spdxRelationship{"Package-testdata/notice/container.zip.meta_lic ", "testdata/notice/lib/libb.so.meta_lic", "CONTAINS"},
452 spdxRelationship{"Package-testdata/notice/bin/bin1.meta_lic ", "testdata/notice/lib/liba.so.meta_lic", "CONTAINS"},
453 packageTag{"testdata/notice/lib/libc.a.meta_lic"},
454 packageName{"testdata/notice/lib/libc.a.meta_lic"},
455 spdxPkgID{"testdata/notice/lib/libc.a.meta_lic"},
456 spdxPkgDownloadLocation{"NOASSERTION"},
457 spdxPkgLicenseDeclared{"testdata-notice-NOTICE_LICENSE"},
458 spdxRelationship{"Package-testdata/notice/bin/bin1.meta_lic ", "testdata/notice/lib/libc.a.meta_lic", "CONTAINS"},
459 spdxRelationship{"Package-testdata/notice/lib/libb.so.meta_lic ", "testdata/notice/bin/bin2.meta_lic", "RUNTIME_DEPENDENCY_OF"},
460 packageTag{"testdata/notice/lib/libd.so.meta_lic"},
461 packageName{"testdata/notice/lib/libd.so.meta_lic"},
462 spdxPkgID{"testdata/notice/lib/libd.so.meta_lic"},
463 spdxPkgDownloadLocation{"NOASSERTION"},
464 spdxPkgLicenseDeclared{"testdata-notice-NOTICE_LICENSE"},
465 spdxRelationship{"Package-testdata/notice/lib/libd.so.meta_lic ", "testdata/notice/bin/bin2.meta_lic", "RUNTIME_DEPENDENCY_OF"},
466 spdxLicense{},
467 spdxLicenseID{"testdata-firstparty-FIRST_PARTY_LICENSE"},
468 spdxExtractedText{"&&&First Party License&&&"},
469 spdxExtractedClosingText{},
470 spdxLicenseID{"testdata-notice-NOTICE_LICENSE"},
471 spdxExtractedText{"%%%Notice License%%%"},
472 spdxExtractedClosingText{},
473 },
474 expectedDeps: []string{
475 "testdata/firstparty/FIRST_PARTY_LICENSE",
476 "testdata/notice/NOTICE_LICENSE",
Ibrahim Kanouche649b4d72022-11-12 05:46:12 +0000477 "testdata/notice/bin/bin1.meta_lic",
478 "testdata/notice/bin/bin2.meta_lic",
479 "testdata/notice/container.zip.meta_lic",
480 "testdata/notice/lib/liba.so.meta_lic",
481 "testdata/notice/lib/libb.so.meta_lic",
482 "testdata/notice/lib/libc.a.meta_lic",
483 "testdata/notice/lib/libd.so.meta_lic",
Ibrahim Kanouchebedf1a82022-10-22 01:28:05 +0000484 },
485 },
486 {
487 condition: "notice",
488 name: "application",
489 roots: []string{"application.meta_lic"},
490 expectedOut: []matcher{
491 spdxVersion{},
492 spdxDataLicense{},
493 spdxDocumentName{"Android"},
494 spdxID{"Android"},
495 spdxDocumentNameSpace{},
496 spdxCreatorOrganization{},
497 spdxCreatedTime{},
498 packageTag{"testdata/notice/application.meta_lic"},
499 packageName{"testdata/notice/application.meta_lic"},
500 spdxPkgID{"testdata/notice/application.meta_lic"},
501 spdxPkgDownloadLocation{"NOASSERTION"},
502 spdxPkgLicenseDeclared{"testdata-firstparty-FIRST_PARTY_LICENSE"},
503 spdxRelationship{"DOCUMENT-Android ", "testdata-notice-application.meta_lic", "DESCRIBES"},
504 packageTag{"testdata/notice/bin/bin3.meta_lic"},
505 packageName{"testdata/notice/bin/bin3.meta_lic"},
506 spdxPkgID{"testdata/notice/bin/bin3.meta_lic"},
507 spdxPkgDownloadLocation{"NOASSERTION"},
508 spdxPkgLicenseDeclared{"testdata-notice-NOTICE_LICENSE"},
509 spdxRelationship{"Package-testdata-notice-bin-bin3.meta_lic ", "testdata/notice/application.meta_lic", "BUILD_TOOL_OF"},
510 packageTag{"testdata/notice/lib/liba.so.meta_lic"},
511 packageName{"testdata/notice/lib/liba.so.meta_lic"},
512 spdxPkgID{"testdata/notice/lib/liba.so.meta_lic"},
513 spdxPkgDownloadLocation{"NOASSERTION"},
514 spdxPkgLicenseDeclared{"testdata-notice-NOTICE_LICENSE"},
515 spdxRelationship{"Package-testdata/notice/application.meta_lic ", "testdata-notice-lib-liba.so.meta_lic", "CONTAINS"},
516 packageTag{"testdata/notice/lib/libb.so.meta_lic"},
517 packageName{"testdata/notice/lib/libb.so.meta_lic"},
518 spdxPkgID{"testdata/notice/lib/libb.so.meta_lic"},
519 spdxPkgDownloadLocation{"NOASSERTION"},
520 spdxPkgLicenseDeclared{"testdata-firstparty-FIRST_PARTY_LICENSE"},
521 spdxRelationship{"Package-testdata-notice-lib-libb.so.meta_lic ", "testdata/notice/application.meta_lic", "RUNTIME_DEPENDENCY_OF"},
522 spdxLicense{},
523 spdxLicenseID{"testdata-firstparty-FIRST_PARTY_LICENSE"},
524 spdxExtractedText{"&&&First Party License&&&"},
525 spdxExtractedClosingText{},
526 spdxLicenseID{"testdata-notice-NOTICE_LICENSE"},
527 spdxExtractedText{"%%%Notice License%%%"},
528 spdxExtractedClosingText{},
529 },
530 expectedDeps: []string{
531 "testdata/firstparty/FIRST_PARTY_LICENSE",
532 "testdata/notice/NOTICE_LICENSE",
Ibrahim Kanouche649b4d72022-11-12 05:46:12 +0000533 "testdata/notice/application.meta_lic",
534 "testdata/notice/bin/bin3.meta_lic",
535 "testdata/notice/lib/liba.so.meta_lic",
536 "testdata/notice/lib/libb.so.meta_lic",
Ibrahim Kanouchebedf1a82022-10-22 01:28:05 +0000537 },
538 },
539 {
540 condition: "notice",
541 name: "binary",
542 roots: []string{"bin/bin1.meta_lic"},
543 expectedOut: []matcher{
544 spdxVersion{},
545 spdxDataLicense{},
546 spdxDocumentName{"Android"},
547 spdxID{"Android"},
548 spdxDocumentNameSpace{},
549 spdxCreatorOrganization{},
550 spdxCreatedTime{},
551 packageTag{"testdata/notice/bin/bin1.meta_lic"},
552 packageName{"testdata/notice/bin/bin1.meta_lic"},
553 spdxPkgID{"testdata/notice/bin/bin1.meta_lic"},
554 spdxPkgDownloadLocation{"NOASSERTION"},
555 spdxPkgLicenseDeclared{"testdata-firstparty-FIRST_PARTY_LICENSE"},
556 spdxRelationship{"DOCUMENT-Android ", "testdata/notice/bin/bin1.meta_lic", "DESCRIBES"},
557 packageTag{"testdata/notice/lib/liba.so.meta_lic"},
558 packageName{"testdata/notice/lib/liba.so.meta_lic"},
559 spdxPkgID{"testdata/notice/lib/liba.so.meta_lic"},
560 spdxPkgDownloadLocation{"NOASSERTION"},
561 spdxPkgLicenseDeclared{"testdata-notice-NOTICE_LICENSE"},
562 spdxRelationship{"Package-testdata/notice/bin/bin1.meta_lic ", "testdata/notice/lib/liba.so.meta_lic", "CONTAINS"},
563 packageTag{"testdata/notice/lib/libc.a.meta_lic"},
564 packageName{"testdata/notice/lib/libc.a.meta_lic"},
565 spdxPkgID{"testdata/notice/lib/libc.a.meta_lic"},
566 spdxPkgDownloadLocation{"NOASSERTION"},
567 spdxPkgLicenseDeclared{"testdata-notice-NOTICE_LICENSE"},
568 spdxRelationship{"Package-testdata/notice/bin/bin1.meta_lic ", "testdata/notice/lib/libc.a.meta_lic", "CONTAINS"},
569 spdxLicense{},
570 spdxLicenseID{"testdata-firstparty-FIRST_PARTY_LICENSE"},
571 spdxExtractedText{"&&&First Party License&&&"},
572 spdxExtractedClosingText{},
573 spdxLicenseID{"testdata-notice-NOTICE_LICENSE"},
574 spdxExtractedText{"%%%Notice License%%%"},
575 spdxExtractedClosingText{},
576 },
577 expectedDeps: []string{
578 "testdata/firstparty/FIRST_PARTY_LICENSE",
579 "testdata/notice/NOTICE_LICENSE",
Ibrahim Kanouche649b4d72022-11-12 05:46:12 +0000580 "testdata/notice/bin/bin1.meta_lic",
581 "testdata/notice/lib/liba.so.meta_lic",
582 "testdata/notice/lib/libc.a.meta_lic",
Ibrahim Kanouchebedf1a82022-10-22 01:28:05 +0000583 },
584 },
585 {
586 condition: "notice",
587 name: "library",
588 roots: []string{"lib/libd.so.meta_lic"},
589 expectedOut: []matcher{
590 spdxVersion{},
591 spdxDataLicense{},
592 spdxDocumentName{"Android"},
593 spdxID{"Android"},
594 spdxDocumentNameSpace{},
595 spdxCreatorOrganization{},
596 spdxCreatedTime{},
597 packageTag{"testdata/notice/lib/libd.so.meta_lic"},
598 packageName{"testdata/notice/lib/libd.so.meta_lic"},
599 spdxPkgID{"testdata/notice/lib/libd.so.meta_lic"},
600 spdxPkgDownloadLocation{"NOASSERTION"},
601 spdxPkgLicenseDeclared{"testdata-notice-NOTICE_LICENSE"},
602 spdxRelationship{"DOCUMENT-Android ", "testdata/notice/lib/libd.so.meta_lic", "DESCRIBES"},
603 spdxLicense{},
604 spdxLicenseID{"testdata-notice-NOTICE_LICENSE"},
605 spdxExtractedText{"%%%Notice License%%%"},
606 spdxExtractedClosingText{},
607 },
Ibrahim Kanouche649b4d72022-11-12 05:46:12 +0000608 expectedDeps: []string{
609 "testdata/notice/NOTICE_LICENSE",
610 "testdata/notice/lib/libd.so.meta_lic",
611 },
Ibrahim Kanouchebedf1a82022-10-22 01:28:05 +0000612 },
613 {
614 condition: "reciprocal",
615 name: "apex",
616 roots: []string{"highest.apex.meta_lic"},
617 expectedOut: []matcher{
618 spdxVersion{},
619 spdxDataLicense{},
620 spdxDocumentName{"Android"},
621 spdxID{"Android"},
622 spdxDocumentNameSpace{},
623 spdxCreatorOrganization{},
624 spdxCreatedTime{},
625 packageTag{"testdata/reciprocal/highest.apex.meta_lic"},
626 packageName{"testdata/reciprocal/highest.apex.meta_lic"},
627 spdxPkgID{"testdata/reciprocal/highest.apex.meta_lic"},
628 spdxPkgDownloadLocation{"NOASSERTION"},
629 spdxPkgLicenseDeclared{"testdata-firstparty-FIRST_PARTY_LICENSE"},
630 spdxRelationship{"DOCUMENT-Android ", "testdata/reciprocal/highest.apex.meta_lic", "DESCRIBES"},
631 packageTag{"testdata/reciprocal/bin/bin1.meta_lic"},
632 packageName{"testdata/reciprocal/bin/bin1.meta_lic"},
633 spdxPkgID{"testdata/reciprocal/bin/bin1.meta_lic"},
634 spdxPkgDownloadLocation{"NOASSERTION"},
635 spdxPkgLicenseDeclared{"testdata-firstparty-FIRST_PARTY_LICENSE"},
636 spdxRelationship{"Package-testdata/reciprocal/highest.apex.meta_lic ", "testdata-reciprocal-bin-bin1.meta_lic", "CONTAINS"},
637 packageTag{"testdata/reciprocal/bin/bin2.meta_lic"},
638 packageName{"testdata/reciprocal/bin/bin2.meta_lic"},
639 spdxPkgID{"testdata/reciprocal/bin/bin2.meta_lic"},
640 spdxPkgDownloadLocation{"NOASSERTION"},
641 spdxPkgLicenseDeclared{"testdata-firstparty-FIRST_PARTY_LICENSE"},
642 spdxRelationship{"Package-testdata/reciprocal/highest.apex.meta_lic ", "testdata-reciprocal-bin-bin2.meta_lic", "CONTAINS"},
643 packageTag{"testdata/reciprocal/lib/liba.so.meta_lic"},
644 packageName{"testdata/reciprocal/lib/liba.so.meta_lic"},
645 spdxPkgID{"testdata/reciprocal/lib/liba.so.meta_lic"},
646 spdxPkgDownloadLocation{"NOASSERTION"},
647 spdxPkgLicenseDeclared{"testdata-reciprocal-RECIPROCAL_LICENSE"},
648 spdxRelationship{"Package-testdata/reciprocal/highest.apex.meta_lic ", "testdata/reciprocal/lib/liba.so.meta_lic", "CONTAINS"},
649 packageTag{"testdata/reciprocal/lib/libb.so.meta_lic"},
650 packageName{"testdata/reciprocal/lib/libb.so.meta_lic"},
651 spdxPkgID{"testdata/reciprocal/lib/libb.so.meta_lic"},
652 spdxPkgDownloadLocation{"NOASSERTION"},
653 spdxPkgLicenseDeclared{"testdata-firstparty-FIRST_PARTY_LICENSE"},
654 spdxRelationship{"Package-testdata/reciprocal/highest.apex.meta_lic ", "testdata/reciprocal/lib/libb.so.meta_lic", "CONTAINS"},
655 spdxRelationship{"Package-testdata/reciprocal/bin/bin1.meta_lic ", "testdata/reciprocal/lib/liba.so.meta_lic", "CONTAINS"},
656 packageTag{"testdata/reciprocal/lib/libc.a.meta_lic"},
657 packageName{"testdata/reciprocal/lib/libc.a.meta_lic"},
658 spdxPkgID{"testdata/reciprocal/lib/libc.a.meta_lic"},
659 spdxPkgDownloadLocation{"NOASSERTION"},
660 spdxPkgLicenseDeclared{"testdata-reciprocal-RECIPROCAL_LICENSE"},
661 spdxRelationship{"Package-testdata/reciprocal/bin/bin1.meta_lic ", "testdata/reciprocal/lib/libc.a.meta_lic", "CONTAINS"},
662 spdxRelationship{"Package-testdata/reciprocal/lib/libb.so.meta_lic ", "testdata/reciprocal/bin/bin2.meta_lic", "RUNTIME_DEPENDENCY_OF"},
663 packageTag{"testdata/reciprocal/lib/libd.so.meta_lic"},
664 packageName{"testdata/reciprocal/lib/libd.so.meta_lic"},
665 spdxPkgID{"testdata/reciprocal/lib/libd.so.meta_lic"},
666 spdxPkgDownloadLocation{"NOASSERTION"},
667 spdxPkgLicenseDeclared{"testdata-notice-NOTICE_LICENSE"},
668 spdxRelationship{"Package-testdata/reciprocal/lib/libd.so.meta_lic ", "testdata/reciprocal/bin/bin2.meta_lic", "RUNTIME_DEPENDENCY_OF"},
669 spdxLicense{},
670 spdxLicenseID{"testdata-firstparty-FIRST_PARTY_LICENSE"},
671 spdxExtractedText{"&&&First Party License&&&"},
672 spdxExtractedClosingText{},
673 spdxLicenseID{"testdata-notice-NOTICE_LICENSE"},
674 spdxExtractedText{"%%%Notice License%%%"},
675 spdxExtractedClosingText{},
676 spdxLicenseID{"testdata-reciprocal-RECIPROCAL_LICENSE"},
677 spdxExtractedText{"$$$Reciprocal License$$$"},
678 spdxExtractedClosingText{},
679 },
680 expectedDeps: []string{
681 "testdata/firstparty/FIRST_PARTY_LICENSE",
682 "testdata/notice/NOTICE_LICENSE",
683 "testdata/reciprocal/RECIPROCAL_LICENSE",
Ibrahim Kanouche649b4d72022-11-12 05:46:12 +0000684 "testdata/reciprocal/bin/bin1.meta_lic",
685 "testdata/reciprocal/bin/bin2.meta_lic",
686 "testdata/reciprocal/highest.apex.meta_lic",
687 "testdata/reciprocal/lib/liba.so.meta_lic",
688 "testdata/reciprocal/lib/libb.so.meta_lic",
689 "testdata/reciprocal/lib/libc.a.meta_lic",
690 "testdata/reciprocal/lib/libd.so.meta_lic",
Ibrahim Kanouchebedf1a82022-10-22 01:28:05 +0000691 },
692 },
693 {
694 condition: "reciprocal",
695 name: "container",
696 roots: []string{"container.zip.meta_lic"},
697 expectedOut: []matcher{
698 spdxVersion{},
699 spdxDataLicense{},
700 spdxDocumentName{"Android"},
701 spdxID{"Android"},
702 spdxDocumentNameSpace{},
703 spdxCreatorOrganization{},
704 spdxCreatedTime{},
705 packageTag{"testdata/reciprocal/container.zip.meta_lic"},
706 packageName{"testdata/reciprocal/container.zip.meta_lic"},
707 spdxPkgID{"testdata/reciprocal/container.zip.meta_lic"},
708 spdxPkgDownloadLocation{"NOASSERTION"},
709 spdxPkgLicenseDeclared{"testdata-firstparty-FIRST_PARTY_LICENSE"},
710 spdxRelationship{"DOCUMENT-Android ", "testdata/reciprocal/container.zip.meta_lic", "DESCRIBES"},
711 packageTag{"testdata/reciprocal/bin/bin1.meta_lic"},
712 packageName{"testdata/reciprocal/bin/bin1.meta_lic"},
713 spdxPkgID{"testdata/reciprocal/bin/bin1.meta_lic"},
714 spdxPkgDownloadLocation{"NOASSERTION"},
715 spdxPkgLicenseDeclared{"testdata-firstparty-FIRST_PARTY_LICENSE"},
716 spdxRelationship{"Package-testdata/reciprocal/container.zip.meta_lic ", "testdata-reciprocal-bin-bin1.meta_lic", "CONTAINS"},
717 packageTag{"testdata/reciprocal/bin/bin2.meta_lic"},
718 packageName{"testdata/reciprocal/bin/bin2.meta_lic"},
719 spdxPkgID{"testdata/reciprocal/bin/bin2.meta_lic"},
720 spdxPkgDownloadLocation{"NOASSERTION"},
721 spdxPkgLicenseDeclared{"testdata-firstparty-FIRST_PARTY_LICENSE"},
722 spdxRelationship{"Package-testdata/reciprocal/container.zip.meta_lic ", "testdata-reciprocal-bin-bin2.meta_lic", "CONTAINS"},
723 packageTag{"testdata/reciprocal/lib/liba.so.meta_lic"},
724 packageName{"testdata/reciprocal/lib/liba.so.meta_lic"},
725 spdxPkgID{"testdata/reciprocal/lib/liba.so.meta_lic"},
726 spdxPkgDownloadLocation{"NOASSERTION"},
727 spdxPkgLicenseDeclared{"testdata-reciprocal-RECIPROCAL_LICENSE"},
728 spdxRelationship{"Package-testdata/reciprocal/container.zip.meta_lic ", "testdata/reciprocal/lib/liba.so.meta_lic", "CONTAINS"},
729 packageTag{"testdata/reciprocal/lib/libb.so.meta_lic"},
730 packageName{"testdata/reciprocal/lib/libb.so.meta_lic"},
731 spdxPkgID{"testdata/reciprocal/lib/libb.so.meta_lic"},
732 spdxPkgDownloadLocation{"NOASSERTION"},
733 spdxPkgLicenseDeclared{"testdata-firstparty-FIRST_PARTY_LICENSE"},
734 spdxRelationship{"Package-testdata/reciprocal/container.zip.meta_lic ", "testdata/reciprocal/lib/libb.so.meta_lic", "CONTAINS"},
735 spdxRelationship{"Package-testdata/reciprocal/bin/bin1.meta_lic ", "testdata/reciprocal/lib/liba.so.meta_lic", "CONTAINS"},
736 packageTag{"testdata/reciprocal/lib/libc.a.meta_lic"},
737 packageName{"testdata/reciprocal/lib/libc.a.meta_lic"},
738 spdxPkgID{"testdata/reciprocal/lib/libc.a.meta_lic"},
739 spdxPkgDownloadLocation{"NOASSERTION"},
740 spdxPkgLicenseDeclared{"testdata-reciprocal-RECIPROCAL_LICENSE"},
741 spdxRelationship{"Package-testdata/reciprocal/bin/bin1.meta_lic ", "testdata/reciprocal/lib/libc.a.meta_lic", "CONTAINS"},
742 spdxRelationship{"Package-testdata/reciprocal/lib/libb.so.meta_lic ", "testdata/reciprocal/bin/bin2.meta_lic", "RUNTIME_DEPENDENCY_OF"},
743 packageTag{"testdata/reciprocal/lib/libd.so.meta_lic"},
744 packageName{"testdata/reciprocal/lib/libd.so.meta_lic"},
745 spdxPkgID{"testdata/reciprocal/lib/libd.so.meta_lic"},
746 spdxPkgDownloadLocation{"NOASSERTION"},
747 spdxPkgLicenseDeclared{"testdata-notice-NOTICE_LICENSE"},
748 spdxRelationship{"Package-testdata/reciprocal/lib/libd.so.meta_lic ", "testdata/reciprocal/bin/bin2.meta_lic", "RUNTIME_DEPENDENCY_OF"},
749 spdxLicense{},
750 spdxLicenseID{"testdata-firstparty-FIRST_PARTY_LICENSE"},
751 spdxExtractedText{"&&&First Party License&&&"},
752 spdxExtractedClosingText{},
753 spdxLicenseID{"testdata-notice-NOTICE_LICENSE"},
754 spdxExtractedText{"%%%Notice License%%%"},
755 spdxExtractedClosingText{},
756 spdxLicenseID{"testdata-reciprocal-RECIPROCAL_LICENSE"},
757 spdxExtractedText{"$$$Reciprocal License$$$"},
758 spdxExtractedClosingText{},
759 },
760 expectedDeps: []string{
761 "testdata/firstparty/FIRST_PARTY_LICENSE",
762 "testdata/notice/NOTICE_LICENSE",
763 "testdata/reciprocal/RECIPROCAL_LICENSE",
Ibrahim Kanouche649b4d72022-11-12 05:46:12 +0000764 "testdata/reciprocal/bin/bin1.meta_lic",
765 "testdata/reciprocal/bin/bin2.meta_lic",
766 "testdata/reciprocal/container.zip.meta_lic",
767 "testdata/reciprocal/lib/liba.so.meta_lic",
768 "testdata/reciprocal/lib/libb.so.meta_lic",
769 "testdata/reciprocal/lib/libc.a.meta_lic",
770 "testdata/reciprocal/lib/libd.so.meta_lic",
Ibrahim Kanouchebedf1a82022-10-22 01:28:05 +0000771 },
772 },
773 {
774 condition: "reciprocal",
775 name: "application",
776 roots: []string{"application.meta_lic"},
777 expectedOut: []matcher{
778 spdxVersion{},
779 spdxDataLicense{},
780 spdxDocumentName{"Android"},
781 spdxID{"Android"},
782 spdxDocumentNameSpace{},
783 spdxCreatorOrganization{},
784 spdxCreatedTime{},
785 packageTag{"testdata/reciprocal/application.meta_lic"},
786 packageName{"testdata/reciprocal/application.meta_lic"},
787 spdxPkgID{"testdata/reciprocal/application.meta_lic"},
788 spdxPkgDownloadLocation{"NOASSERTION"},
789 spdxPkgLicenseDeclared{"testdata-firstparty-FIRST_PARTY_LICENSE"},
790 spdxRelationship{"DOCUMENT-Android ", "testdata/reciprocal/application.meta_lic", "DESCRIBES"},
791 packageTag{"testdata/reciprocal/bin/bin3.meta_lic"},
792 packageName{"testdata/reciprocal/bin/bin3.meta_lic"},
793 spdxPkgID{"testdata/reciprocal/bin/bin3.meta_lic"},
794 spdxPkgDownloadLocation{"NOASSERTION"},
795 spdxPkgLicenseDeclared{"testdata-notice-NOTICE_LICENSE"},
796 spdxRelationship{"Package-testdata-reciprocal-bin-bin3.meta_lic ", "testdata/reciprocal/application.meta_lic", "BUILD_TOOL_OF"},
797 packageTag{"testdata/reciprocal/lib/liba.so.meta_lic"},
798 packageName{"testdata/reciprocal/lib/liba.so.meta_lic"},
799 spdxPkgID{"testdata/reciprocal/lib/liba.so.meta_lic"},
800 spdxPkgDownloadLocation{"NOASSERTION"},
801 spdxPkgLicenseDeclared{"testdata-reciprocal-RECIPROCAL_LICENSE"},
802 spdxRelationship{"Package-testdata/reciprocal/application.meta_lic ", "testdata/reciprocal/lib/liba.so.meta_lic", "CONTAINS"},
803 packageTag{"testdata/reciprocal/lib/libb.so.meta_lic"},
804 packageName{"testdata/reciprocal/lib/libb.so.meta_lic"},
805 spdxPkgID{"testdata/reciprocal/lib/libb.so.meta_lic"},
806 spdxPkgDownloadLocation{"NOASSERTION"},
807 spdxPkgLicenseDeclared{"testdata-firstparty-FIRST_PARTY_LICENSE"},
808 spdxRelationship{"Package-testdata/reciprocal/lib/libb.so.meta_lic ", "testdata/reciprocal/application.meta_lic", "RUNTIME_DEPENDENCY_OF"},
809 spdxLicense{},
810 spdxLicenseID{"testdata-firstparty-FIRST_PARTY_LICENSE"},
811 spdxExtractedText{"&&&First Party License&&&"},
812 spdxExtractedClosingText{},
813 spdxLicenseID{"testdata-notice-NOTICE_LICENSE"},
814 spdxExtractedText{"%%%Notice License%%%"},
815 spdxExtractedClosingText{},
816 spdxLicenseID{"testdata-reciprocal-RECIPROCAL_LICENSE"},
817 spdxExtractedText{"$$$Reciprocal License$$$"},
818 spdxExtractedClosingText{},
819 },
820 expectedDeps: []string{
821 "testdata/firstparty/FIRST_PARTY_LICENSE",
822 "testdata/notice/NOTICE_LICENSE",
823 "testdata/reciprocal/RECIPROCAL_LICENSE",
Ibrahim Kanouche649b4d72022-11-12 05:46:12 +0000824 "testdata/reciprocal/application.meta_lic",
825 "testdata/reciprocal/bin/bin3.meta_lic",
826 "testdata/reciprocal/lib/liba.so.meta_lic",
827 "testdata/reciprocal/lib/libb.so.meta_lic",
Ibrahim Kanouchebedf1a82022-10-22 01:28:05 +0000828 },
829 },
830 {
831 condition: "reciprocal",
832 name: "binary",
833 roots: []string{"bin/bin1.meta_lic"},
834 expectedOut: []matcher{
835 spdxVersion{},
836 spdxDataLicense{},
837 spdxDocumentName{"Android"},
838 spdxID{"Android"},
839 spdxDocumentNameSpace{},
840 spdxCreatorOrganization{},
841 spdxCreatedTime{},
842 packageTag{"testdata/reciprocal/bin/bin1.meta_lic"},
843 packageName{"testdata/reciprocal/bin/bin1.meta_lic"},
844 spdxPkgID{"testdata/reciprocal/bin/bin1.meta_lic"},
845 spdxPkgDownloadLocation{"NOASSERTION"},
846 spdxPkgLicenseDeclared{"testdata-firstparty-FIRST_PARTY_LICENSE"},
847 spdxRelationship{"DOCUMENT-Android ", "testdata/reciprocal/bin/bin1.meta_lic", "DESCRIBES"},
848 packageTag{"testdata/reciprocal/lib/liba.so.meta_lic"},
849 packageName{"testdata/reciprocal/lib/liba.so.meta_lic"},
850 spdxPkgID{"testdata/reciprocal/lib/liba.so.meta_lic"},
851 spdxPkgDownloadLocation{"NOASSERTION"},
852 spdxPkgLicenseDeclared{"testdata-reciprocal-RECIPROCAL_LICENSE"},
853 spdxRelationship{"Package-testdata/reciprocal/bin/bin1.meta_lic ", "testdata/reciprocal/lib/liba.so.meta_lic", "CONTAINS"},
854 packageTag{"testdata/reciprocal/lib/libc.a.meta_lic"},
855 packageName{"testdata/reciprocal/lib/libc.a.meta_lic"},
856 spdxPkgID{"testdata/reciprocal/lib/libc.a.meta_lic"},
857 spdxPkgDownloadLocation{"NOASSERTION"},
858 spdxPkgLicenseDeclared{"testdata-reciprocal-RECIPROCAL_LICENSE"},
859 spdxRelationship{"Package-testdata/reciprocal/bin/bin1.meta_lic ", "testdata/reciprocal/lib/libc.a.meta_lic", "CONTAINS"},
860 spdxLicense{},
861 spdxLicenseID{"testdata-firstparty-FIRST_PARTY_LICENSE"},
862 spdxExtractedText{"&&&First Party License&&&"},
863 spdxExtractedClosingText{},
864 spdxLicenseID{"testdata-reciprocal-RECIPROCAL_LICENSE"},
865 spdxExtractedText{"$$$Reciprocal License$$$"},
866 spdxExtractedClosingText{},
867 },
868 expectedDeps: []string{
869 "testdata/firstparty/FIRST_PARTY_LICENSE",
870 "testdata/reciprocal/RECIPROCAL_LICENSE",
Ibrahim Kanouche649b4d72022-11-12 05:46:12 +0000871 "testdata/reciprocal/bin/bin1.meta_lic",
872 "testdata/reciprocal/lib/liba.so.meta_lic",
873 "testdata/reciprocal/lib/libc.a.meta_lic",
Ibrahim Kanouchebedf1a82022-10-22 01:28:05 +0000874 },
875 },
876 {
877 condition: "reciprocal",
878 name: "library",
879 roots: []string{"lib/libd.so.meta_lic"},
880 expectedOut: []matcher{
881 spdxVersion{},
882 spdxDataLicense{},
883 spdxDocumentName{"Android"},
884 spdxID{"Android"},
885 spdxDocumentNameSpace{},
886 spdxCreatorOrganization{},
887 spdxCreatedTime{},
888 packageTag{"testdata/reciprocal/lib/libd.so.meta_lic"},
889 packageName{"testdata/reciprocal/lib/libd.so.meta_lic"},
890 spdxPkgID{"testdata/reciprocal/lib/libd.so.meta_lic"},
891 spdxPkgDownloadLocation{"NOASSERTION"},
892 spdxPkgLicenseDeclared{"testdata-notice-NOTICE_LICENSE"},
893 spdxRelationship{"DOCUMENT-Android ", "testdata/reciprocal/lib/libd.so.meta_lic", "DESCRIBES"},
894 spdxLicense{},
895 spdxLicenseID{"testdata-notice-NOTICE_LICENSE"},
896 spdxExtractedText{"%%%Notice License%%%"},
897 spdxExtractedClosingText{},
898 },
899 expectedDeps: []string{
900 "testdata/notice/NOTICE_LICENSE",
Ibrahim Kanouche649b4d72022-11-12 05:46:12 +0000901 "testdata/reciprocal/lib/libd.so.meta_lic",
Ibrahim Kanouchebedf1a82022-10-22 01:28:05 +0000902 },
903 },
904 {
905 condition: "restricted",
906 name: "apex",
907 roots: []string{"highest.apex.meta_lic"},
908 stripPrefix: "out/target/product/fictional/system/apex/",
909 expectedOut: []matcher{
910 spdxVersion{},
911 spdxDataLicense{},
912 spdxDocumentName{"Android"},
913 spdxID{"Android"},
914 spdxDocumentNameSpace{},
915 spdxCreatorOrganization{},
916 spdxCreatedTime{},
917 packageTag{"testdata/restricted/highest.apex.meta_lic"},
918 packageName{"testdata/restricted/highest.apex.meta_lic"},
919 spdxPkgID{"testdata/restricted/highest.apex.meta_lic"},
920 spdxPkgDownloadLocation{"NOASSERTION"},
921 spdxPkgLicenseDeclared{"testdata-firstparty-FIRST_PARTY_LICENSE"},
922 spdxRelationship{"DOCUMENT-Android ", "testdata/restricted/highest.apex.meta_lic", "DESCRIBES"},
923 packageTag{"testdata/restricted/bin/bin1.meta_lic"},
924 packageName{"testdata/restricted/bin/bin1.meta_lic"},
925 spdxPkgID{"testdata/restricted/bin/bin1.meta_lic"},
926 spdxPkgDownloadLocation{"NOASSERTION"},
927 spdxPkgLicenseDeclared{"testdata-firstparty-FIRST_PARTY_LICENSE"},
928 spdxRelationship{"Package-testdata/restricted/highest.apex.meta_lic ", "testdata/restricted/bin/bin1.meta_lic", "CONTAINS"},
929 packageTag{"testdata/restricted/bin/bin2.meta_lic"},
930 packageName{"testdata/restricted/bin/bin2.meta_lic"},
931 spdxPkgID{"testdata/restricted/bin/bin2.meta_lic"},
932 spdxPkgDownloadLocation{"NOASSERTION"},
933 spdxPkgLicenseDeclared{"testdata-firstparty-FIRST_PARTY_LICENSE"},
934 spdxRelationship{"Package-testdata/restricted/highest.apex.meta_lic ", "testdata/restricted/bin/bin2.meta_lic", "CONTAINS"},
935 packageTag{"testdata/restricted/lib/liba.so.meta_lic"},
936 packageName{"testdata/restricted/lib/liba.so.meta_lic"},
937 spdxPkgID{"testdata/restricted/lib/liba.so.meta_lic"},
938 spdxPkgDownloadLocation{"NOASSERTION"},
939 spdxPkgLicenseDeclared{"testdata-restricted-RESTRICTED_LICENSE"},
940 spdxRelationship{"Package-testdata/restricted/highest.apex.meta_lic ", "testdata/restricted/lib/liba.so.meta_lic", "CONTAINS"},
941 packageTag{"testdata/restricted/lib/libb.so.meta_lic"},
942 packageName{"testdata/restricted/lib/libb.so.meta_lic"},
943 spdxPkgID{"testdata/restricted/lib/libb.so.meta_lic"},
944 spdxPkgDownloadLocation{"NOASSERTION"},
945 spdxPkgLicenseDeclared{"testdata-restricted-RESTRICTED_LICENSE"},
946 spdxRelationship{"Package-testdata/restricted/highest.apex.meta_lic ", "testdata/restricted/lib/libb.so.meta_lic", "CONTAINS"},
947 spdxRelationship{"Package-testdata/restricted/bin/bin1.meta_lic ", "testdata/restricted/lib/liba.so.meta_lic", "CONTAINS"},
948 packageTag{"testdata/restricted/lib/libc.a.meta_lic"},
949 packageName{"testdata/restricted/lib/libc.a.meta_lic"},
950 spdxPkgID{"testdata/restricted/lib/libc.a.meta_lic"},
951 spdxPkgDownloadLocation{"NOASSERTION"},
952 spdxPkgLicenseDeclared{"testdata-reciprocal-RECIPROCAL_LICENSE"},
953 spdxRelationship{"Package-testdata/restricted/bin/bin1.meta_lic ", "testdata/restricted/lib/libc.a.meta_lic", "CONTAINS"},
954 spdxRelationship{"Package-testdata/restricted/lib/libb.so.meta_lic ", "testdata/restricted/bin/bin2.meta_lic", "RUNTIME_DEPENDENCY_OF"},
955 packageTag{"testdata/restricted/lib/libd.so.meta_lic"},
956 packageName{"testdata/restricted/lib/libd.so.meta_lic"},
957 spdxPkgID{"testdata/restricted/lib/libd.so.meta_lic"},
958 spdxPkgDownloadLocation{"NOASSERTION"},
959 spdxPkgLicenseDeclared{"testdata-notice-NOTICE_LICENSE"},
960 spdxRelationship{"Package-testdata/restricted/lib/libd.so.meta_lic ", "testdata/restricted/bin/bin2.meta_lic", "RUNTIME_DEPENDENCY_OF"},
961 spdxLicense{},
962 spdxLicenseID{"testdata-firstparty-FIRST_PARTY_LICENSE"},
963 spdxExtractedText{"&&&First Party License&&&"},
964 spdxExtractedClosingText{},
965 spdxLicenseID{"testdata-notice-NOTICE_LICENSE"},
966 spdxExtractedText{"%%%Notice License%%%"},
967 spdxExtractedClosingText{},
968 spdxLicenseID{"testdata-reciprocal-RECIPROCAL_LICENSE"},
969 spdxExtractedText{"$$$Reciprocal License$$$"},
970 spdxExtractedClosingText{},
971 spdxLicenseID{"testdata-restricted-RESTRICTED_LICENSE"},
972 spdxExtractedText{"###Restricted License###"},
973 spdxExtractedClosingText{},
974 },
975 expectedDeps: []string{
976 "testdata/firstparty/FIRST_PARTY_LICENSE",
977 "testdata/notice/NOTICE_LICENSE",
978 "testdata/reciprocal/RECIPROCAL_LICENSE",
979 "testdata/restricted/RESTRICTED_LICENSE",
Ibrahim Kanouche649b4d72022-11-12 05:46:12 +0000980 "testdata/restricted/bin/bin1.meta_lic",
981 "testdata/restricted/bin/bin2.meta_lic",
982 "testdata/restricted/highest.apex.meta_lic",
983 "testdata/restricted/lib/liba.so.meta_lic",
984 "testdata/restricted/lib/libb.so.meta_lic",
985 "testdata/restricted/lib/libc.a.meta_lic",
986 "testdata/restricted/lib/libd.so.meta_lic",
Ibrahim Kanouchebedf1a82022-10-22 01:28:05 +0000987 },
988 },
989 {
990 condition: "restricted",
991 name: "container",
992 roots: []string{"container.zip.meta_lic"},
993 stripPrefix: "out/target/product/fictional/system/apex/",
994 expectedOut: []matcher{
995 spdxVersion{},
996 spdxDataLicense{},
997 spdxDocumentName{"Android"},
998 spdxID{"Android"},
999 spdxDocumentNameSpace{},
1000 spdxCreatorOrganization{},
1001 spdxCreatedTime{},
1002 packageTag{"testdata/restricted/container.zip.meta_lic"},
1003 packageName{"testdata/restricted/container.zip.meta_lic"},
1004 spdxPkgID{"testdata/restricted/container.zip.meta_lic"},
1005 spdxPkgDownloadLocation{"NOASSERTION"},
1006 spdxPkgLicenseDeclared{"testdata-firstparty-FIRST_PARTY_LICENSE"},
1007 spdxRelationship{"DOCUMENT-Android ", "testdata/restricted/container.zip.meta_lic", "DESCRIBES"},
1008 packageTag{"testdata/restricted/bin/bin1.meta_lic"},
1009 packageName{"testdata/restricted/bin/bin1.meta_lic"},
1010 spdxPkgID{"testdata/restricted/bin/bin1.meta_lic"},
1011 spdxPkgDownloadLocation{"NOASSERTION"},
1012 spdxPkgLicenseDeclared{"testdata-firstparty-FIRST_PARTY_LICENSE"},
1013 spdxRelationship{"Package-testdata/restricted/container.zip.meta_lic ", "testdata/restricted/bin/bin1.meta_lic", "CONTAINS"},
1014 packageTag{"testdata/restricted/bin/bin2.meta_lic"},
1015 packageName{"testdata/restricted/bin/bin2.meta_lic"},
1016 spdxPkgID{"testdata/restricted/bin/bin2.meta_lic"},
1017 spdxPkgDownloadLocation{"NOASSERTION"},
1018 spdxPkgLicenseDeclared{"testdata-firstparty-FIRST_PARTY_LICENSE"},
1019 spdxRelationship{"Package-testdata/restricted/container.zip.meta_lic ", "testdata/restricted/bin/bin2.meta_lic", "CONTAINS"},
1020 packageTag{"testdata/restricted/lib/liba.so.meta_lic"},
1021 packageName{"testdata/restricted/lib/liba.so.meta_lic"},
1022 spdxPkgID{"testdata/restricted/lib/liba.so.meta_lic"},
1023 spdxPkgDownloadLocation{"NOASSERTION"},
1024 spdxPkgLicenseDeclared{"testdata-restricted-RESTRICTED_LICENSE"},
1025 spdxRelationship{"Package-testdata/restricted/container.zip.meta_lic ", "testdata/restricted/lib/liba.so.meta_lic", "CONTAINS"},
1026 packageTag{"testdata/restricted/lib/libb.so.meta_lic"},
1027 packageName{"testdata/restricted/lib/libb.so.meta_lic"},
1028 spdxPkgID{"testdata/restricted/lib/libb.so.meta_lic"},
1029 spdxPkgDownloadLocation{"NOASSERTION"},
1030 spdxPkgLicenseDeclared{"testdata-restricted-RESTRICTED_LICENSE"},
1031 spdxRelationship{"Package-testdata/restricted/container.zip.meta_lic ", "testdata/restricted/lib/libb.so.meta_lic", "CONTAINS"},
1032 spdxRelationship{"Package-testdata/restricted/bin/bin1.meta_lic ", "testdata/restricted/lib/liba.so.meta_lic", "CONTAINS"},
1033 packageTag{"testdata/restricted/lib/libc.a.meta_lic"},
1034 packageName{"testdata/restricted/lib/libc.a.meta_lic"},
1035 spdxPkgID{"testdata/restricted/lib/libc.a.meta_lic"},
1036 spdxPkgDownloadLocation{"NOASSERTION"},
1037 spdxPkgLicenseDeclared{"testdata-reciprocal-RECIPROCAL_LICENSE"},
1038 spdxRelationship{"Package-testdata/restricted/bin/bin1.meta_lic ", "testdata/restricted/lib/libc.a.meta_lic", "CONTAINS"},
1039 spdxRelationship{"Package-testdata/restricted/lib/libb.so.meta_lic ", "testdata/restricted/bin/bin2.meta_lic", "RUNTIME_DEPENDENCY_OF"},
1040 packageTag{"testdata/restricted/lib/libd.so.meta_lic"},
1041 packageName{"testdata/restricted/lib/libd.so.meta_lic"},
1042 spdxPkgID{"testdata/restricted/lib/libd.so.meta_lic"},
1043 spdxPkgDownloadLocation{"NOASSERTION"},
1044 spdxPkgLicenseDeclared{"testdata-notice-NOTICE_LICENSE"},
1045 spdxRelationship{"Package-testdata/restricted/lib/libd.so.meta_lic ", "testdata/restricted/bin/bin2.meta_lic", "RUNTIME_DEPENDENCY_OF"},
1046 spdxLicense{},
1047 spdxLicenseID{"testdata-firstparty-FIRST_PARTY_LICENSE"},
1048 spdxExtractedText{"&&&First Party License&&&"},
1049 spdxExtractedClosingText{},
1050 spdxLicenseID{"testdata-notice-NOTICE_LICENSE"},
1051 spdxExtractedText{"%%%Notice License%%%"},
1052 spdxExtractedClosingText{},
1053 spdxLicenseID{"testdata-reciprocal-RECIPROCAL_LICENSE"},
1054 spdxExtractedText{"$$$Reciprocal License$$$"},
1055 spdxExtractedClosingText{},
1056 spdxLicenseID{"testdata-restricted-RESTRICTED_LICENSE"},
1057 spdxExtractedText{"###Restricted License###"},
1058 spdxExtractedClosingText{},
1059 },
1060 expectedDeps: []string{
1061 "testdata/firstparty/FIRST_PARTY_LICENSE",
1062 "testdata/notice/NOTICE_LICENSE",
1063 "testdata/reciprocal/RECIPROCAL_LICENSE",
1064 "testdata/restricted/RESTRICTED_LICENSE",
Ibrahim Kanouche649b4d72022-11-12 05:46:12 +00001065 "testdata/restricted/bin/bin1.meta_lic",
1066 "testdata/restricted/bin/bin2.meta_lic",
1067 "testdata/restricted/container.zip.meta_lic",
1068 "testdata/restricted/lib/liba.so.meta_lic",
1069 "testdata/restricted/lib/libb.so.meta_lic",
1070 "testdata/restricted/lib/libc.a.meta_lic",
1071 "testdata/restricted/lib/libd.so.meta_lic",
Ibrahim Kanouchebedf1a82022-10-22 01:28:05 +00001072 },
1073 },
1074 {
1075 condition: "restricted",
1076 name: "binary",
1077 roots: []string{"bin/bin1.meta_lic"},
1078 expectedOut: []matcher{
1079 spdxVersion{},
1080 spdxDataLicense{},
1081 spdxDocumentName{"Android"},
1082 spdxID{"Android"},
1083 spdxDocumentNameSpace{},
1084 spdxCreatorOrganization{},
1085 spdxCreatedTime{},
1086 packageTag{"testdata/restricted/bin/bin1.meta_lic"},
1087 packageName{"testdata/restricted/bin/bin1.meta_lic"},
1088 spdxPkgID{"testdata/restricted/bin/bin1.meta_lic"},
1089 spdxPkgDownloadLocation{"NOASSERTION"},
1090 spdxPkgLicenseDeclared{"testdata-firstparty-FIRST_PARTY_LICENSE"},
1091 spdxRelationship{"DOCUMENT-Android ", "testdata/restricted/bin/bin1.meta_lic", "DESCRIBES"},
1092 packageTag{"testdata/restricted/lib/liba.so.meta_lic"},
1093 packageName{"testdata/restricted/lib/liba.so.meta_lic"},
1094 spdxPkgID{"testdata/restricted/lib/liba.so.meta_lic"},
1095 spdxPkgDownloadLocation{"NOASSERTION"},
1096 spdxPkgLicenseDeclared{"testdata-restricted-RESTRICTED_LICENSE"},
1097 spdxRelationship{"Package-testdata/restricted/bin/bin1.meta_lic ", "testdata/restricted/lib/liba.so.meta_lic", "CONTAINS"},
1098 packageTag{"testdata/restricted/lib/libc.a.meta_lic"},
1099 packageName{"testdata/restricted/lib/libc.a.meta_lic"},
1100 spdxPkgID{"testdata/restricted/lib/libc.a.meta_lic"},
1101 spdxPkgDownloadLocation{"NOASSERTION"},
1102 spdxPkgLicenseDeclared{"testdata-reciprocal-RECIPROCAL_LICENSE"},
1103 spdxRelationship{"Package-testdata/restricted/bin/bin1.meta_lic ", "testdata/restricted/lib/libc.a.meta_lic", "CONTAINS"},
1104 spdxLicense{},
1105 spdxLicenseID{"testdata-firstparty-FIRST_PARTY_LICENSE"},
1106 spdxExtractedText{"&&&First Party License&&&"},
1107 spdxExtractedClosingText{},
1108 spdxLicenseID{"testdata-reciprocal-RECIPROCAL_LICENSE"},
1109 spdxExtractedText{"$$$Reciprocal License$$$"},
1110 spdxExtractedClosingText{},
1111 spdxLicenseID{"testdata-restricted-RESTRICTED_LICENSE"},
1112 spdxExtractedText{"###Restricted License###"},
1113 spdxExtractedClosingText{},
1114 },
1115 expectedDeps: []string{
1116 "testdata/firstparty/FIRST_PARTY_LICENSE",
1117 "testdata/reciprocal/RECIPROCAL_LICENSE",
1118 "testdata/restricted/RESTRICTED_LICENSE",
Ibrahim Kanouche649b4d72022-11-12 05:46:12 +00001119 "testdata/restricted/bin/bin1.meta_lic",
1120 "testdata/restricted/lib/liba.so.meta_lic",
1121 "testdata/restricted/lib/libc.a.meta_lic",
Ibrahim Kanouchebedf1a82022-10-22 01:28:05 +00001122 },
1123 },
1124 {
1125 condition: "restricted",
1126 name: "library",
1127 roots: []string{"lib/libd.so.meta_lic"},
1128 expectedOut: []matcher{
1129 spdxVersion{},
1130 spdxDataLicense{},
1131 spdxDocumentName{"Android"},
1132 spdxID{"Android"},
1133 spdxDocumentNameSpace{},
1134 spdxCreatorOrganization{},
1135 spdxCreatedTime{},
1136 packageTag{"testdata/restricted/lib/libd.so.meta_lic"},
1137 packageName{"testdata/restricted/lib/libd.so.meta_lic"},
1138 spdxPkgID{"testdata/restricted/lib/libd.so.meta_lic"},
1139 spdxPkgDownloadLocation{"NOASSERTION"},
1140 spdxPkgLicenseDeclared{"testdata-notice-NOTICE_LICENSE"},
1141 spdxRelationship{"DOCUMENT-Android ", "testdata/restricted/lib/libd.so.meta_lic", "DESCRIBES"},
1142 spdxLicense{},
1143 spdxLicenseID{"testdata-notice-NOTICE_LICENSE"},
1144 spdxExtractedText{"%%%Notice License%%%"},
1145 spdxExtractedClosingText{},
1146 },
Ibrahim Kanouche649b4d72022-11-12 05:46:12 +00001147 expectedDeps: []string{
1148 "testdata/notice/NOTICE_LICENSE",
1149 "testdata/restricted/lib/libd.so.meta_lic",
1150 },
Ibrahim Kanouchebedf1a82022-10-22 01:28:05 +00001151 },
1152 {
1153 condition: "proprietary",
1154 name: "apex",
1155 roots: []string{"highest.apex.meta_lic"},
1156 expectedOut: []matcher{
1157 spdxVersion{},
1158 spdxDataLicense{},
1159 spdxDocumentName{"Android"},
1160 spdxID{"Android"},
1161 spdxDocumentNameSpace{},
1162 spdxCreatorOrganization{},
1163 spdxCreatedTime{},
1164 packageTag{"testdata/proprietary/highest.apex.meta_lic"},
1165 packageName{"testdata/proprietary/highest.apex.meta_lic"},
1166 spdxPkgID{"testdata/proprietary/highest.apex.meta_lic"},
1167 spdxPkgDownloadLocation{"NOASSERTION"},
1168 spdxPkgLicenseDeclared{"testdata-firstparty-FIRST_PARTY_LICENSE"},
1169 spdxRelationship{"DOCUMENT-Android ", "testdata/proprietary/highest.apex.meta_lic", "DESCRIBES"},
1170 packageTag{"testdata/proprietary/bin/bin1.meta_lic"},
1171 packageName{"testdata/proprietary/bin/bin1.meta_lic"},
1172 spdxPkgID{"testdata/proprietary/bin/bin1.meta_lic"},
1173 spdxPkgDownloadLocation{"NOASSERTION"},
1174 spdxPkgLicenseDeclared{"testdata-firstparty-FIRST_PARTY_LICENSE"},
1175 spdxRelationship{"Package-testdata/proprietary/highest.apex.meta_lic ", "testdata/proprietary/bin/bin1.meta_lic", "CONTAINS"},
1176 packageTag{"testdata/proprietary/bin/bin2.meta_lic"},
1177 packageName{"testdata/proprietary/bin/bin2.meta_lic"},
1178 spdxPkgID{"testdata/proprietary/bin/bin2.meta_lic"},
1179 spdxPkgDownloadLocation{"NOASSERTION"},
1180 spdxPkgLicenseDeclared{"testdata-proprietary-PROPRIETARY_LICENSE"},
1181 spdxRelationship{"Package-testdata/proprietary/highest.apex.meta_lic ", "testdata/proprietary/bin/bin2.meta_lic", "CONTAINS"},
1182 packageTag{"testdata/proprietary/lib/liba.so.meta_lic"},
1183 packageName{"testdata/proprietary/lib/liba.so.meta_lic"},
1184 spdxPkgID{"testdata/proprietary/lib/liba.so.meta_lic"},
1185 spdxPkgDownloadLocation{"NOASSERTION"},
1186 spdxPkgLicenseDeclared{"testdata-proprietary-PROPRIETARY_LICENSE"},
1187 spdxRelationship{"Package-testdata/proprietary/highest.apex.meta_lic ", "testdata/proprietary/lib/liba.so.meta_lic", "CONTAINS"},
1188 packageTag{"testdata/proprietary/lib/libb.so.meta_lic"},
1189 packageName{"testdata/proprietary/lib/libb.so.meta_lic"},
1190 spdxPkgID{"testdata/proprietary/lib/libb.so.meta_lic"},
1191 spdxPkgDownloadLocation{"NOASSERTION"},
1192 spdxPkgLicenseDeclared{"testdata-restricted-RESTRICTED_LICENSE"},
1193 spdxRelationship{"Package-testdata/proprietary/highest.apex.meta_lic ", "testdata/proprietary/lib/libb.so.meta_lic", "CONTAINS"},
1194 spdxRelationship{"Package-testdata/proprietary/bin/bin1.meta_lic ", "testdata/proprietary/lib/liba.so.meta_lic", "CONTAINS"},
1195 packageTag{"testdata/proprietary/lib/libc.a.meta_lic"},
1196 packageName{"testdata/proprietary/lib/libc.a.meta_lic"},
1197 spdxPkgID{"testdata/proprietary/lib/libc.a.meta_lic"},
1198 spdxPkgDownloadLocation{"NOASSERTION"},
1199 spdxPkgLicenseDeclared{"testdata-proprietary-PROPRIETARY_LICENSE"},
1200 spdxRelationship{"Package-testdata/proprietary/bin/bin1.meta_lic ", "testdata/proprietary/lib/libc.a.meta_lic", "CONTAINS"},
1201 spdxRelationship{"Package-testdata-proprietary-lib-libb.so.meta_lic ", "testdata/proprietary/bin/bin2.meta_lic", "RUNTIME_DEPENDENCY_OF"},
1202 packageTag{"testdata/proprietary/lib/libd.so.meta_lic"},
1203 packageName{"testdata/proprietary/lib/libd.so.meta_lic"},
1204 spdxPkgID{"testdata/proprietary/lib/libd.so.meta_lic"},
1205 spdxPkgDownloadLocation{"NOASSERTION"},
1206 spdxPkgLicenseDeclared{"testdata-notice-NOTICE_LICENSE"},
1207 spdxRelationship{"Package-testdata-proprietary-lib-libd.so.meta_lic ", "testdata/proprietary/bin/bin2.meta_lic", "RUNTIME_DEPENDENCY_OF"},
1208 spdxLicense{},
1209 spdxLicenseID{"testdata-firstparty-FIRST_PARTY_LICENSE"},
1210 spdxExtractedText{"&&&First Party License&&&"},
1211 spdxExtractedClosingText{},
1212 spdxLicenseID{"testdata-notice-NOTICE_LICENSE"},
1213 spdxExtractedText{"%%%Notice License%%%"},
1214 spdxExtractedClosingText{},
1215 spdxLicenseID{"testdata-proprietary-PROPRIETARY_LICENSE"},
1216 spdxExtractedText{"@@@Proprietary License@@@"},
1217 spdxExtractedClosingText{},
1218 spdxLicenseID{"testdata-restricted-RESTRICTED_LICENSE"},
1219 spdxExtractedText{"###Restricted License###"},
1220 spdxExtractedClosingText{},
1221 },
1222 expectedDeps: []string{
1223 "testdata/firstparty/FIRST_PARTY_LICENSE",
1224 "testdata/notice/NOTICE_LICENSE",
1225 "testdata/proprietary/PROPRIETARY_LICENSE",
Ibrahim Kanouche649b4d72022-11-12 05:46:12 +00001226 "testdata/proprietary/bin/bin1.meta_lic",
1227 "testdata/proprietary/bin/bin2.meta_lic",
1228 "testdata/proprietary/highest.apex.meta_lic",
1229 "testdata/proprietary/lib/liba.so.meta_lic",
1230 "testdata/proprietary/lib/libb.so.meta_lic",
1231 "testdata/proprietary/lib/libc.a.meta_lic",
1232 "testdata/proprietary/lib/libd.so.meta_lic",
Ibrahim Kanouchebedf1a82022-10-22 01:28:05 +00001233 "testdata/restricted/RESTRICTED_LICENSE",
1234 },
1235 },
1236 {
1237 condition: "proprietary",
1238 name: "container",
1239 roots: []string{"container.zip.meta_lic"},
1240 expectedOut: []matcher{
1241 spdxVersion{},
1242 spdxDataLicense{},
1243 spdxDocumentName{"Android"},
1244 spdxID{"Android"},
1245 spdxDocumentNameSpace{},
1246 spdxCreatorOrganization{},
1247 spdxCreatedTime{},
1248 packageTag{"testdata/proprietary/container.zip.meta_lic"},
1249 packageName{"testdata/proprietary/container.zip.meta_lic"},
1250 spdxPkgID{"testdata/proprietary/container.zip.meta_lic"},
1251 spdxPkgDownloadLocation{"NOASSERTION"},
1252 spdxPkgLicenseDeclared{"testdata-firstparty-FIRST_PARTY_LICENSE"},
1253 spdxRelationship{"DOCUMENT-Android ", "testdata/proprietary/container.zip.meta_lic", "DESCRIBES"},
1254 packageTag{"testdata/proprietary/bin/bin1.meta_lic"},
1255 packageName{"testdata/proprietary/bin/bin1.meta_lic"},
1256 spdxPkgID{"testdata/proprietary/bin/bin1.meta_lic"},
1257 spdxPkgDownloadLocation{"NOASSERTION"},
1258 spdxPkgLicenseDeclared{"testdata-firstparty-FIRST_PARTY_LICENSE"},
1259 spdxRelationship{"Package-testdata/proprietary/container.zip.meta_lic ", "testdata/proprietary/bin/bin1.meta_lic", "CONTAINS"},
1260 packageTag{"testdata/proprietary/bin/bin2.meta_lic"},
1261 packageName{"testdata/proprietary/bin/bin2.meta_lic"},
1262 spdxPkgID{"testdata/proprietary/bin/bin2.meta_lic"},
1263 spdxPkgDownloadLocation{"NOASSERTION"},
1264 spdxPkgLicenseDeclared{"testdata-proprietary-PROPRIETARY_LICENSE"},
1265 spdxRelationship{"Package-testdata/proprietary/container.zip.meta_lic ", "testdata/proprietary/bin/bin2.meta_lic", "CONTAINS"},
1266 packageTag{"testdata/proprietary/lib/liba.so.meta_lic"},
1267 packageName{"testdata/proprietary/lib/liba.so.meta_lic"},
1268 spdxPkgID{"testdata/proprietary/lib/liba.so.meta_lic"},
1269 spdxPkgDownloadLocation{"NOASSERTION"},
1270 spdxPkgLicenseDeclared{"testdata-proprietary-PROPRIETARY_LICENSE"},
1271 spdxRelationship{"Package-testdata/proprietary/container.zip.meta_lic ", "testdata/proprietary/lib/liba.so.meta_lic", "CONTAINS"},
1272 packageTag{"testdata/proprietary/lib/libb.so.meta_lic"},
1273 packageName{"testdata/proprietary/lib/libb.so.meta_lic"},
1274 spdxPkgID{"testdata/proprietary/lib/libb.so.meta_lic"},
1275 spdxPkgDownloadLocation{"NOASSERTION"},
1276 spdxPkgLicenseDeclared{"testdata-restricted-RESTRICTED_LICENSE"},
1277 spdxRelationship{"Package-testdata/proprietary/container.zip.meta_lic ", "testdata/proprietary/lib/libb.so.meta_lic", "CONTAINS"},
1278 spdxRelationship{"Package-testdata/proprietary/bin/bin1.meta_lic ", "testdata/proprietary/lib/liba.so.meta_lic", "CONTAINS"},
1279 packageTag{"testdata/proprietary/lib/libc.a.meta_lic"},
1280 packageName{"testdata/proprietary/lib/libc.a.meta_lic"},
1281 spdxPkgID{"testdata/proprietary/lib/libc.a.meta_lic"},
1282 spdxPkgDownloadLocation{"NOASSERTION"},
1283 spdxPkgLicenseDeclared{"testdata-proprietary-PROPRIETARY_LICENSE"},
1284 spdxRelationship{"Package-testdata/proprietary/bin/bin1.meta_lic ", "testdata/proprietary/lib/libc.a.meta_lic", "CONTAINS"},
1285 spdxRelationship{"Package-testdata-proprietary-lib-libb.so.meta_lic ", "testdata/proprietary/bin/bin2.meta_lic", "RUNTIME_DEPENDENCY_OF"},
1286 packageTag{"testdata/proprietary/lib/libd.so.meta_lic"},
1287 packageName{"testdata/proprietary/lib/libd.so.meta_lic"},
1288 spdxPkgID{"testdata/proprietary/lib/libd.so.meta_lic"},
1289 spdxPkgDownloadLocation{"NOASSERTION"},
1290 spdxPkgLicenseDeclared{"testdata-notice-NOTICE_LICENSE"},
1291 spdxRelationship{"Package-testdata-proprietary-lib-libd.so.meta_lic ", "testdata/proprietary/bin/bin2.meta_lic", "RUNTIME_DEPENDENCY_OF"},
1292 spdxLicense{},
1293 spdxLicenseID{"testdata-firstparty-FIRST_PARTY_LICENSE"},
1294 spdxExtractedText{"&&&First Party License&&&"},
1295 spdxExtractedClosingText{},
1296 spdxLicenseID{"testdata-notice-NOTICE_LICENSE"},
1297 spdxExtractedText{"%%%Notice License%%%"},
1298 spdxExtractedClosingText{},
1299 spdxLicenseID{"testdata-proprietary-PROPRIETARY_LICENSE"},
1300 spdxExtractedText{"@@@Proprietary License@@@"},
1301 spdxExtractedClosingText{},
1302 spdxLicenseID{"testdata-restricted-RESTRICTED_LICENSE"},
1303 spdxExtractedText{"###Restricted License###"},
1304 spdxExtractedClosingText{},
1305 },
1306 expectedDeps: []string{
1307 "testdata/firstparty/FIRST_PARTY_LICENSE",
1308 "testdata/notice/NOTICE_LICENSE",
1309 "testdata/proprietary/PROPRIETARY_LICENSE",
Ibrahim Kanouche649b4d72022-11-12 05:46:12 +00001310 "testdata/proprietary/bin/bin1.meta_lic",
1311 "testdata/proprietary/bin/bin2.meta_lic",
1312 "testdata/proprietary/container.zip.meta_lic",
1313 "testdata/proprietary/lib/liba.so.meta_lic",
1314 "testdata/proprietary/lib/libb.so.meta_lic",
1315 "testdata/proprietary/lib/libc.a.meta_lic",
1316 "testdata/proprietary/lib/libd.so.meta_lic",
Ibrahim Kanouchebedf1a82022-10-22 01:28:05 +00001317 "testdata/restricted/RESTRICTED_LICENSE",
1318 },
1319 },
1320 {
1321 condition: "proprietary",
1322 name: "application",
1323 roots: []string{"application.meta_lic"},
1324 expectedOut: []matcher{
1325 spdxVersion{},
1326 spdxDataLicense{},
1327 spdxDocumentName{"Android"},
1328 spdxID{"Android"},
1329 spdxDocumentNameSpace{},
1330 spdxCreatorOrganization{},
1331 spdxCreatedTime{},
1332 packageTag{"testdata/proprietary/application.meta_lic"},
1333 packageName{"testdata/proprietary/application.meta_lic"},
1334 spdxPkgID{"testdata/proprietary/application.meta_lic"},
1335 spdxPkgDownloadLocation{"NOASSERTION"},
1336 spdxPkgLicenseDeclared{"testdata-firstparty-FIRST_PARTY_LICENSE"},
1337 spdxRelationship{"DOCUMENT-Android ", "testdata/proprietary/application.meta_lic", "DESCRIBES"},
1338 packageTag{"testdata/proprietary/bin/bin3.meta_lic"},
1339 packageName{"testdata/proprietary/bin/bin3.meta_lic"},
1340 spdxPkgID{"testdata/proprietary/bin/bin3.meta_lic"},
1341 spdxPkgDownloadLocation{"NOASSERTION"},
1342 spdxPkgLicenseDeclared{"testdata-restricted-RESTRICTED_LICENSE"},
1343 spdxRelationship{"Package-testdata/proprietary/bin/bin3.meta_lic ", "testdata/proprietary/application.meta_lic", "BUILD_TOOL_OF"},
1344 packageTag{"testdata/proprietary/lib/liba.so.meta_lic"},
1345 packageName{"testdata/proprietary/lib/liba.so.meta_lic"},
1346 spdxPkgID{"testdata/proprietary/lib/liba.so.meta_lic"},
1347 spdxPkgDownloadLocation{"NOASSERTION"},
1348 spdxPkgLicenseDeclared{"testdata-proprietary-PROPRIETARY_LICENSE"},
1349 spdxRelationship{"Package-testdata/proprietary/application.meta_lic ", "testdata/proprietary/lib/liba.so.meta_lic", "CONTAINS"},
1350 packageTag{"testdata/proprietary/lib/libb.so.meta_lic"},
1351 packageName{"testdata/proprietary/lib/libb.so.meta_lic"},
1352 spdxPkgID{"testdata/proprietary/lib/libb.so.meta_lic"},
1353 spdxPkgDownloadLocation{"NOASSERTION"},
1354 spdxPkgLicenseDeclared{"testdata-restricted-RESTRICTED_LICENSE"},
1355 spdxRelationship{"Package-testdata/proprietary/lib/libb.so.meta_lic ", "testdata/proprietary/application.meta_lic", "RUNTIME_DEPENDENCY_OF"},
1356 spdxLicense{},
1357 spdxLicenseID{"testdata-firstparty-FIRST_PARTY_LICENSE"},
1358 spdxExtractedText{"&&&First Party License&&&"},
1359 spdxExtractedClosingText{},
1360 spdxLicenseID{"testdata-proprietary-PROPRIETARY_LICENSE"},
1361 spdxExtractedText{"@@@Proprietary License@@@"},
1362 spdxExtractedClosingText{},
1363 spdxLicenseID{"testdata-restricted-RESTRICTED_LICENSE"},
1364 spdxExtractedText{"###Restricted License###"},
1365 spdxExtractedClosingText{},
1366 },
1367 expectedDeps: []string{
1368 "testdata/firstparty/FIRST_PARTY_LICENSE",
1369 "testdata/proprietary/PROPRIETARY_LICENSE",
Ibrahim Kanouche649b4d72022-11-12 05:46:12 +00001370 "testdata/proprietary/application.meta_lic",
1371 "testdata/proprietary/bin/bin3.meta_lic",
1372 "testdata/proprietary/lib/liba.so.meta_lic",
1373 "testdata/proprietary/lib/libb.so.meta_lic",
Ibrahim Kanouchebedf1a82022-10-22 01:28:05 +00001374 "testdata/restricted/RESTRICTED_LICENSE",
1375 },
1376 },
1377 {
1378 condition: "proprietary",
1379 name: "binary",
1380 roots: []string{"bin/bin1.meta_lic"},
1381 expectedOut: []matcher{
1382 spdxVersion{},
1383 spdxDataLicense{},
1384 spdxDocumentName{"Android"},
1385 spdxID{"Android"},
1386 spdxDocumentNameSpace{},
1387 spdxCreatorOrganization{},
1388 spdxCreatedTime{},
1389 packageTag{"testdata/proprietary/bin/bin1.meta_lic"},
1390 packageName{"testdata/proprietary/bin/bin1.meta_lic"},
1391 spdxPkgID{"testdata/proprietary/bin/bin1.meta_lic"},
1392 spdxPkgDownloadLocation{"NOASSERTION"},
1393 spdxPkgLicenseDeclared{"testdata-firstparty-FIRST_PARTY_LICENSE"},
1394 spdxRelationship{"DOCUMENT-Android ", "testdata/proprietary/bin/bin1.meta_lic", "DESCRIBES"},
1395 packageTag{"testdata/proprietary/lib/liba.so.meta_lic"},
1396 packageName{"testdata/proprietary/lib/liba.so.meta_lic"},
1397 spdxPkgID{"testdata/proprietary/lib/liba.so.meta_lic"},
1398 spdxPkgDownloadLocation{"NOASSERTION"},
1399 spdxPkgLicenseDeclared{"testdata-proprietary-PROPRIETARY_LICENSE"},
1400 spdxRelationship{"Package-testdata/proprietary/bin/bin1.meta_lic ", "testdata/proprietary/lib/liba.so.meta_lic", "CONTAINS"},
1401 packageTag{"testdata/proprietary/lib/libc.a.meta_lic"},
1402 packageName{"testdata/proprietary/lib/libc.a.meta_lic"},
1403 spdxPkgID{"testdata/proprietary/lib/libc.a.meta_lic"},
1404 spdxPkgDownloadLocation{"NOASSERTION"},
1405 spdxPkgLicenseDeclared{"testdata-proprietary-PROPRIETARY_LICENSE"},
1406 spdxRelationship{"Package-testdata/proprietary/bin/bin1.meta_lic ", "testdata/proprietary/lib/libc.a.meta_lic", "CONTAINS"},
1407 spdxLicense{},
1408 spdxLicenseID{"testdata-firstparty-FIRST_PARTY_LICENSE"},
1409 spdxExtractedText{"&&&First Party License&&&"},
1410 spdxExtractedClosingText{},
1411 spdxLicenseID{"testdata-proprietary-PROPRIETARY_LICENSE"},
1412 spdxExtractedText{"@@@Proprietary License@@@"},
1413 spdxExtractedClosingText{},
1414 },
1415 expectedDeps: []string{
1416 "testdata/firstparty/FIRST_PARTY_LICENSE",
1417 "testdata/proprietary/PROPRIETARY_LICENSE",
Ibrahim Kanouche649b4d72022-11-12 05:46:12 +00001418 "testdata/proprietary/bin/bin1.meta_lic",
1419 "testdata/proprietary/lib/liba.so.meta_lic",
1420 "testdata/proprietary/lib/libc.a.meta_lic",
Ibrahim Kanouchebedf1a82022-10-22 01:28:05 +00001421 },
1422 },
1423 {
1424 condition: "proprietary",
1425 name: "library",
1426 roots: []string{"lib/libd.so.meta_lic"},
1427 expectedOut: []matcher{
1428 spdxVersion{},
1429 spdxDataLicense{},
1430 spdxDocumentName{"Android"},
1431 spdxID{"Android"},
1432 spdxDocumentNameSpace{},
1433 spdxCreatorOrganization{},
1434 spdxCreatedTime{},
1435 packageTag{"testdata/proprietary/lib/libd.so.meta_lic"},
1436 packageName{"testdata/proprietary/lib/libd.so.meta_lic"},
1437 spdxPkgID{"testdata/proprietary/lib/libd.so.meta_lic"},
1438 spdxPkgDownloadLocation{"NOASSERTION"},
1439 spdxPkgLicenseDeclared{"testdata-notice-NOTICE_LICENSE"},
1440 spdxRelationship{"DOCUMENT-Android ", "testdata/proprietary/lib/libd.so.meta_lic", "DESCRIBES"},
1441 spdxLicense{},
1442 spdxLicenseID{"testdata-notice-NOTICE_LICENSE"},
1443 spdxExtractedText{"%%%Notice License%%%"},
1444 spdxExtractedClosingText{},
1445 },
Ibrahim Kanouche649b4d72022-11-12 05:46:12 +00001446 expectedDeps: []string{
1447 "testdata/notice/NOTICE_LICENSE",
1448 "testdata/proprietary/lib/libd.so.meta_lic",
1449 },
Ibrahim Kanouchebedf1a82022-10-22 01:28:05 +00001450 },
1451 }
1452 for _, tt := range tests {
1453 t.Run(tt.condition+" "+tt.name, func(t *testing.T) {
1454 stdout := &bytes.Buffer{}
1455 stderr := &bytes.Buffer{}
1456
1457 rootFiles := make([]string, 0, len(tt.roots))
1458 for _, r := range tt.roots {
1459 rootFiles = append(rootFiles, "testdata/"+tt.condition+"/"+r)
1460 }
1461
1462 ctx := context{stdout, stderr, compliance.GetFS(tt.outDir), "Android", []string{tt.stripPrefix}, fakeTime}
1463
1464 deps, err := sbomGenerator(&ctx, rootFiles...)
1465 if err != nil {
1466 t.Fatalf("sbom: error = %v, stderr = %v", err, stderr)
1467 return
1468 }
1469 if stderr.Len() > 0 {
1470 t.Errorf("sbom: gotStderr = %v, want none", stderr)
1471 }
1472
1473 t.Logf("got stdout: %s", stdout.String())
1474
1475 t.Logf("want stdout: %s", matcherList(tt.expectedOut).String())
1476
1477 out := bufio.NewScanner(stdout)
1478 lineno := 0
1479 for out.Scan() {
1480 line := out.Text()
1481 if strings.TrimLeft(line, " ") == "" {
1482 continue
1483 }
1484 if len(tt.expectedOut) <= lineno {
1485 t.Errorf("sbom: unexpected output at line %d: got %q, want nothing (wanted %d lines)", lineno+1, line, len(tt.expectedOut))
1486 } else if !tt.expectedOut[lineno].isMatch(line) {
1487 t.Errorf("sbom: unexpected output at line %d: got %q, want %q", lineno+1, line, tt.expectedOut[lineno])
1488 }
1489 lineno++
1490 }
1491 for ; lineno < len(tt.expectedOut); lineno++ {
1492 t.Errorf("bom: missing output line %d: ended early, want %q", lineno+1, tt.expectedOut[lineno])
1493 }
1494
1495 t.Logf("got deps: %q", deps)
1496
1497 t.Logf("want deps: %q", tt.expectedDeps)
1498
1499 if g, w := deps, tt.expectedDeps; !reflect.DeepEqual(g, w) {
1500 t.Errorf("unexpected deps, wanted:\n%s\ngot:\n%s\n",
1501 strings.Join(w, "\n"), strings.Join(g, "\n"))
1502 }
1503 })
1504 }
1505}
1506
1507type matcher interface {
1508 isMatch(line string) bool
1509 String() string
1510}
1511
1512type packageTag struct {
1513 name string
1514}
1515
1516func (m packageTag) isMatch(line string) bool {
1517 groups := spdxPackageTag.FindStringSubmatch(line)
1518 if len(groups) != 2 {
1519 return false
1520 }
1521 return groups[1] == m.name
1522}
1523
1524func (m packageTag) String() string {
1525 return "##### Package: " + m.name
1526}
1527
1528type packageName struct {
1529 name string
1530}
1531
1532func (m packageName) isMatch(line string) bool {
1533 groups := spdxPackageNameTag.FindStringSubmatch(line)
1534 if len(groups) != 2 {
1535 return false
1536 }
1537 return groups[1] == replaceSlashes(m.name)
1538}
1539
1540func (m packageName) String() string {
1541 return "PackageName: " + replaceSlashes(m.name)
1542}
1543
1544type spdxID struct {
1545 name string
1546}
1547
1548func (m spdxID) isMatch(line string) bool {
1549 groups := spdxIDTag.FindStringSubmatch(line)
1550 if len(groups) != 2 {
1551 return false
1552 }
1553 return groups[1] == replaceSlashes(m.name)
1554}
1555
1556func (m spdxID) String() string {
1557 return "SPDXID: SPDXRef-DOCUMENT-" + replaceSlashes(m.name)
1558}
1559
1560type spdxPkgID struct {
1561 name string
1562}
1563
1564func (m spdxPkgID) isMatch(line string) bool {
1565 groups := spdxPkgIDTag.FindStringSubmatch(line)
1566 if len(groups) != 2 {
1567 return false
1568 }
1569 return groups[1] == replaceSlashes(m.name)
1570}
1571
1572func (m spdxPkgID) String() string {
1573 return "SPDXID: SPDXRef-Package-" + replaceSlashes(m.name)
1574}
1575
1576type spdxVersion struct{}
1577
1578func (m spdxVersion) isMatch(line string) bool {
1579 return spdxVersionTag.MatchString(line)
1580}
1581
1582func (m spdxVersion) String() string {
1583 return "SPDXVersion: SPDX-2.2"
1584}
1585
1586type spdxDataLicense struct{}
1587
1588func (m spdxDataLicense) isMatch(line string) bool {
1589 return spdxDataLicenseTag.MatchString(line)
1590}
1591
1592func (m spdxDataLicense) String() string {
1593 return "DataLicense: CC-1.0"
1594}
1595
1596type spdxDocumentName struct {
1597 name string
1598}
1599
1600func (m spdxDocumentName) isMatch(line string) bool {
1601 return spdxDocumentNameTag.MatchString(line)
1602}
1603
1604func (m spdxDocumentName) String() string {
1605 return "DocumentName: " + m.name
1606}
1607
1608type spdxDocumentNameSpace struct {
1609 name string
1610}
1611
1612func (m spdxDocumentNameSpace) isMatch(line string) bool {
1613 return spdxDocumentNameSpaceTag.MatchString(line)
1614}
1615
1616func (m spdxDocumentNameSpace) String() string {
1617 return "DocumentNameSpace: Android"
1618}
1619
1620type spdxCreatorOrganization struct{}
1621
1622func (m spdxCreatorOrganization) isMatch(line string) bool {
1623 return spdxCreatorOrganizationTag.MatchString(line)
1624}
1625
1626func (m spdxCreatorOrganization) String() string {
1627 return "Creator: Organization: Google LLC"
1628}
1629
1630func fakeTime() time.Time {
Maciej Żenczykowski458f9022022-11-02 02:05:19 +00001631 return time.UnixMicro(0).UTC()
Ibrahim Kanouchebedf1a82022-10-22 01:28:05 +00001632}
1633
1634type spdxCreatedTime struct{}
1635
1636func (m spdxCreatedTime) isMatch(line string) bool {
1637 return spdxCreatedTimeTag.MatchString(line)
1638}
1639
1640func (m spdxCreatedTime) String() string {
1641 return "Created: 1970-01-01T00:00:00Z"
1642}
1643
1644type spdxPkgDownloadLocation struct {
1645 name string
1646}
1647
1648func (m spdxPkgDownloadLocation) isMatch(line string) bool {
1649 return spdxPkgDownloadLocationTag.MatchString(line)
1650}
1651
1652func (m spdxPkgDownloadLocation) String() string {
1653 return "PackageDownloadLocation: " + m.name
1654}
1655
1656type spdxPkgLicenseDeclared struct {
1657 name string
1658}
1659
1660func (m spdxPkgLicenseDeclared) isMatch(line string) bool {
1661 groups := spdxPkgLicenseDeclaredTag.FindStringSubmatch(line)
1662 if len(groups) != 2 {
1663 return false
1664 }
1665 return groups[1] == replaceSlashes(m.name)
1666}
1667
1668func (m spdxPkgLicenseDeclared) String() string {
1669 return "PackageLicenseConcluded: LicenseRef-" + m.name
1670}
1671
1672type spdxRelationship struct {
1673 pkg1 string
1674 pkg2 string
1675 relation string
1676}
1677
1678func (m spdxRelationship) isMatch(line string) bool {
1679 groups := spdxRelationshipTag.FindStringSubmatch(line)
1680 if len(groups) != 4 {
1681 return false
1682 }
1683 return groups[1] == replaceSlashes(m.pkg1) && groups[2] == m.relation && groups[3] == replaceSlashes(m.pkg2)
1684}
1685
1686func (m spdxRelationship) String() string {
1687 return "Relationship: SPDXRef-" + replaceSlashes(m.pkg1) + " " + m.relation + " SPDXRef-Package-" + replaceSlashes(m.pkg2)
1688}
1689
1690type spdxLicense struct{}
1691
1692func (m spdxLicense) isMatch(line string) bool {
1693 return spdxLicenseTag.MatchString(line)
1694}
1695
1696func (m spdxLicense) String() string {
1697 return "##### Non-standard license:"
1698}
1699
1700type spdxLicenseID struct {
1701 name string
1702}
1703
1704func (m spdxLicenseID) isMatch(line string) bool {
1705 groups := spdxLicenseIDTag.FindStringSubmatch(line)
1706 if len(groups) != 2 {
1707 return false
1708 }
1709 return groups[1] == replaceSlashes(m.name)
1710}
1711
1712func (m spdxLicenseID) String() string {
1713 return "LicenseID: LicenseRef-" + m.name
1714}
1715
1716type spdxExtractedText struct {
1717 name string
1718}
1719
1720func (m spdxExtractedText) isMatch(line string) bool {
1721 groups := spdxExtractedTextTag.FindStringSubmatch(line)
1722 if len(groups) != 2 {
1723 return false
1724 }
1725 return groups[1] == replaceSlashes(m.name)
1726}
1727
1728func (m spdxExtractedText) String() string {
1729 return "ExtractedText: <text>" + m.name
1730}
1731
1732type spdxExtractedClosingText struct{}
1733
1734func (m spdxExtractedClosingText) isMatch(line string) bool {
1735 return spdxExtractedClosingTextTag.MatchString(line)
1736}
1737
1738func (m spdxExtractedClosingText) String() string {
1739 return "</text>"
1740}
1741
1742type matcherList []matcher
1743
1744func (l matcherList) String() string {
1745 var sb strings.Builder
1746 for _, m := range l {
1747 s := m.String()
1748 fmt.Fprintf(&sb, "%s\n", s)
1749 }
1750 return sb.String()
1751}