blob: 6df74e2dcc952da41a34695ab7a1759a469b6ec0 [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 (
Bob Badour928ee9d2023-03-31 14:51:36 +000018 "bufio"
Ibrahim Kanouchebedf1a82022-10-22 01:28:05 +000019 "bytes"
20 "fmt"
21 "os"
22 "reflect"
Bob Badour928ee9d2023-03-31 14:51:36 +000023 "regexp"
Ibrahim Kanouchebedf1a82022-10-22 01:28:05 +000024 "strings"
25 "testing"
26 "time"
27
28 "android/soong/tools/compliance"
Bob Badour928ee9d2023-03-31 14:51:36 +000029)
30
31var (
32 spdxVersionTag = regexp.MustCompile(`^\s*SPDXVersion: SPDX-2.2\s*$`)
33 spdxDataLicenseTag = regexp.MustCompile(`^\s*DataLicense: CC0-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*$`)
Ibrahim Kanouchebedf1a82022-10-22 01:28:05 +000049)
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
Bob Badour928ee9d2023-03-31 14:51:36 +000068 expectedOut []matcher
Ibrahim Kanouchebedf1a82022-10-22 01:28:05 +000069 expectedDeps []string
70 }{
71 {
72 condition: "firstparty",
73 name: "apex",
74 roots: []string{"highest.apex.meta_lic"},
Bob Badour928ee9d2023-03-31 14:51:36 +000075 expectedOut: []matcher{
76 spdxVersion{},
77 spdxDataLicense{},
78 spdxDocumentName{"Android"},
79 spdxID{},
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 ", "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{},
Ibrahim Kanouchebedf1a82022-10-22 01:28:05 +0000131 },
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"},
Bob Badour928ee9d2023-03-31 14:51:36 +0000147 expectedOut: []matcher{
148 spdxVersion{},
149 spdxDataLicense{},
150 spdxDocumentName{"Android"},
151 spdxID{},
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 ", "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{},
Ibrahim Kanouchebedf1a82022-10-22 01:28:05 +0000183 },
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"},
Bob Badour928ee9d2023-03-31 14:51:36 +0000196 expectedOut: []matcher{
197 spdxVersion{},
198 spdxDataLicense{},
199 spdxDocumentName{"Android"},
200 spdxID{},
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 ", "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{},
Ibrahim Kanouchebedf1a82022-10-22 01:28:05 +0000252 },
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"},
Bob Badour928ee9d2023-03-31 14:51:36 +0000268 expectedOut: []matcher{
269 spdxVersion{},
270 spdxDataLicense{},
271 spdxDocumentName{"Android"},
272 spdxID{},
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 ", "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{},
Ibrahim Kanouchebedf1a82022-10-22 01:28:05 +0000298 },
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"},
Bob Badour928ee9d2023-03-31 14:51:36 +0000310 expectedOut: []matcher{
311 spdxVersion{},
312 spdxDataLicense{},
313 spdxDocumentName{"Android"},
314 spdxID{},
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 ", "testdata/firstparty/lib/libd.so.meta_lic", "DESCRIBES"},
324 spdxLicense{},
325 spdxLicenseID{"testdata-firstparty-FIRST_PARTY_LICENSE"},
326 spdxExtractedText{"&&&First Party License&&&"},
327 spdxExtractedClosingText{},
Ibrahim Kanouchebedf1a82022-10-22 01:28:05 +0000328 },
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"},
Bob Badour928ee9d2023-03-31 14:51:36 +0000338 expectedOut: []matcher{
339 spdxVersion{},
340 spdxDataLicense{},
341 spdxDocumentName{"Android"},
342 spdxID{},
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 ", "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{},
Ibrahim Kanouchebedf1a82022-10-22 01:28:05 +0000397 },
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"},
Bob Badour928ee9d2023-03-31 14:51:36 +0000414 expectedOut: []matcher{
415 spdxVersion{},
416 spdxDataLicense{},
417 spdxDocumentName{"Android"},
418 spdxID{},
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 ", "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{},
Ibrahim Kanouchebedf1a82022-10-22 01:28:05 +0000473 },
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"},
Bob Badour928ee9d2023-03-31 14:51:36 +0000490 expectedOut: []matcher{
491 spdxVersion{},
492 spdxDataLicense{},
493 spdxDocumentName{"Android"},
494 spdxID{},
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 ", "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{},
Ibrahim Kanouchebedf1a82022-10-22 01:28:05 +0000529 },
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"},
Bob Badour928ee9d2023-03-31 14:51:36 +0000543 expectedOut: []matcher{
544 spdxVersion{},
545 spdxDataLicense{},
546 spdxDocumentName{"Android"},
547 spdxID{},
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 ", "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{},
Ibrahim Kanouchebedf1a82022-10-22 01:28:05 +0000576 },
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"},
Bob Badour928ee9d2023-03-31 14:51:36 +0000589 expectedOut: []matcher{
590 spdxVersion{},
591 spdxDataLicense{},
592 spdxDocumentName{"Android"},
593 spdxID{},
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 ", "testdata/notice/lib/libd.so.meta_lic", "DESCRIBES"},
603 spdxLicense{},
604 spdxLicenseID{"testdata-notice-NOTICE_LICENSE"},
605 spdxExtractedText{"%%%Notice License%%%"},
606 spdxExtractedClosingText{},
Ibrahim Kanouchebedf1a82022-10-22 01:28:05 +0000607 },
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"},
Bob Badour928ee9d2023-03-31 14:51:36 +0000617 expectedOut: []matcher{
618 spdxVersion{},
619 spdxDataLicense{},
620 spdxDocumentName{"Android"},
621 spdxID{},
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 ", "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{},
Ibrahim Kanouchebedf1a82022-10-22 01:28:05 +0000679 },
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",
Bob Badour928ee9d2023-03-31 14:51:36 +0000695 name: "container",
696 roots: []string{"container.zip.meta_lic"},
697 expectedOut: []matcher{
698 spdxVersion{},
699 spdxDataLicense{},
700 spdxDocumentName{"Android"},
701 spdxID{},
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 ", "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",
764 "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",
771 },
772 },
773 {
774 condition: "reciprocal",
Ibrahim Kanouchebedf1a82022-10-22 01:28:05 +0000775 name: "application",
776 roots: []string{"application.meta_lic"},
Bob Badour928ee9d2023-03-31 14:51:36 +0000777 expectedOut: []matcher{
778 spdxVersion{},
779 spdxDataLicense{},
780 spdxDocumentName{"Android"},
781 spdxID{},
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 ", "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{},
Ibrahim Kanouchebedf1a82022-10-22 01:28:05 +0000819 },
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"},
Bob Badour928ee9d2023-03-31 14:51:36 +0000834 expectedOut: []matcher{
835 spdxVersion{},
836 spdxDataLicense{},
837 spdxDocumentName{"Android"},
838 spdxID{},
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 ", "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{},
Ibrahim Kanouchebedf1a82022-10-22 01:28:05 +0000867 },
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"},
Bob Badour928ee9d2023-03-31 14:51:36 +0000880 expectedOut: []matcher{
881 spdxVersion{},
882 spdxDataLicense{},
883 spdxDocumentName{"Android"},
884 spdxID{},
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 ", "testdata/reciprocal/lib/libd.so.meta_lic", "DESCRIBES"},
894 spdxLicense{},
895 spdxLicenseID{"testdata-notice-NOTICE_LICENSE"},
896 spdxExtractedText{"%%%Notice License%%%"},
897 spdxExtractedClosingText{},
Ibrahim Kanouchebedf1a82022-10-22 01:28:05 +0000898 },
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 {
Bob Badour928ee9d2023-03-31 14:51:36 +0000905 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{},
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 ", "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{},
Ibrahim Kanouchebedf1a82022-10-22 01:28:05 +0000974 },
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 {
Bob Badour928ee9d2023-03-31 14:51:36 +0000990 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{},
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 ", "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{},
Ibrahim Kanouchebedf1a82022-10-22 01:28:05 +00001059 },
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"},
Bob Badour928ee9d2023-03-31 14:51:36 +00001078 expectedOut: []matcher{
1079 spdxVersion{},
1080 spdxDataLicense{},
1081 spdxDocumentName{"Android"},
1082 spdxID{},
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 ", "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{},
Ibrahim Kanouchebedf1a82022-10-22 01:28:05 +00001114 },
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"},
Bob Badour928ee9d2023-03-31 14:51:36 +00001128 expectedOut: []matcher{
1129 spdxVersion{},
1130 spdxDataLicense{},
1131 spdxDocumentName{"Android"},
1132 spdxID{},
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 ", "testdata/restricted/lib/libd.so.meta_lic", "DESCRIBES"},
1142 spdxLicense{},
1143 spdxLicenseID{"testdata-notice-NOTICE_LICENSE"},
1144 spdxExtractedText{"%%%Notice License%%%"},
1145 spdxExtractedClosingText{},
Ibrahim Kanouchebedf1a82022-10-22 01:28:05 +00001146 },
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"},
Bob Badour928ee9d2023-03-31 14:51:36 +00001156 expectedOut: []matcher{
1157 spdxVersion{},
1158 spdxDataLicense{},
1159 spdxDocumentName{"Android"},
1160 spdxID{},
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 ", "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{},
Ibrahim Kanouchebedf1a82022-10-22 01:28:05 +00001221 },
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"},
Bob Badour928ee9d2023-03-31 14:51:36 +00001240 expectedOut: []matcher{
1241 spdxVersion{},
1242 spdxDataLicense{},
1243 spdxDocumentName{"Android"},
1244 spdxID{},
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 ", "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{},
Ibrahim Kanouchebedf1a82022-10-22 01:28:05 +00001305 },
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"},
Bob Badour928ee9d2023-03-31 14:51:36 +00001324 expectedOut: []matcher{
1325 spdxVersion{},
1326 spdxDataLicense{},
1327 spdxDocumentName{"Android"},
1328 spdxID{},
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 ", "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{},
Ibrahim Kanouchebedf1a82022-10-22 01:28:05 +00001366 },
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"},
Bob Badour928ee9d2023-03-31 14:51:36 +00001381 expectedOut: []matcher{
1382 spdxVersion{},
1383 spdxDataLicense{},
1384 spdxDocumentName{"Android"},
1385 spdxID{},
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 ", "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{},
Ibrahim Kanouchebedf1a82022-10-22 01:28:05 +00001414 },
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"},
Bob Badour928ee9d2023-03-31 14:51:36 +00001427 expectedOut: []matcher{
1428 spdxVersion{},
1429 spdxDataLicense{},
1430 spdxDocumentName{"Android"},
1431 spdxID{},
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 ", "testdata/proprietary/lib/libd.so.meta_lic", "DESCRIBES"},
1441 spdxLicense{},
1442 spdxLicenseID{"testdata-notice-NOTICE_LICENSE"},
1443 spdxExtractedText{"%%%Notice License%%%"},
1444 spdxExtractedClosingText{},
Ibrahim Kanouchebedf1a82022-10-22 01:28:05 +00001445 },
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
Bob Badour928ee9d2023-03-31 14:51:36 +00001464 deps, err := sbomGenerator(&ctx, rootFiles...)
Ibrahim Kanouchebedf1a82022-10-22 01:28:05 +00001465 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
Bob Badour928ee9d2023-03-31 14:51:36 +00001473 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])
Ibrahim Kanouchebedf1a82022-10-22 01:28:05 +00001493 }
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
Bob Badour928ee9d2023-03-31 14:51:36 +00001507type matcher interface {
1508 isMatch(line string) bool
1509 String() string
Ibrahim Kanouchebedf1a82022-10-22 01:28:05 +00001510}
1511
Bob Badour928ee9d2023-03-31 14:51:36 +00001512type packageTag struct {
1513 name string
Ibrahim Kanouchebedf1a82022-10-22 01:28:05 +00001514}
1515
Bob Badour928ee9d2023-03-31 14:51:36 +00001516func (m packageTag) isMatch(line string) bool {
1517 groups := spdxPackageTag.FindStringSubmatch(line)
1518 if len(groups) != 2 {
1519 return false
Ibrahim Kanouchee97adc52023-03-20 16:42:09 +00001520 }
Bob Badour928ee9d2023-03-31 14:51:36 +00001521 return groups[1] == m.name
Ibrahim Kanouchee97adc52023-03-20 16:42:09 +00001522}
1523
Bob Badour928ee9d2023-03-31 14:51:36 +00001524func (m packageTag) String() string {
1525 return "##### Package: " + m.name
Ibrahim Kanouchebedf1a82022-10-22 01:28:05 +00001526}
1527
Bob Badour928ee9d2023-03-31 14:51:36 +00001528type packageName struct {
1529 name string
Ibrahim Kanouchebedf1a82022-10-22 01:28:05 +00001530}
1531
Bob Badour928ee9d2023-03-31 14:51:36 +00001532func (m packageName) isMatch(line string) bool {
1533 groups := spdxPackageNameTag.FindStringSubmatch(line)
1534 if len(groups) != 2 {
Ibrahim Kanouchee97adc52023-03-20 16:42:09 +00001535 return false
1536 }
Bob Badour928ee9d2023-03-31 14:51:36 +00001537 return groups[1] == replaceSlashes(m.name)
1538}
Ibrahim Kanouchebedf1a82022-10-22 01:28:05 +00001539
Bob Badour928ee9d2023-03-31 14:51:36 +00001540func (m packageName) String() string {
1541 return "PackageName: " + replaceSlashes(m.name)
1542}
Ibrahim Kanouchebedf1a82022-10-22 01:28:05 +00001543
Bob Badour928ee9d2023-03-31 14:51:36 +00001544type spdxID struct {}
Ibrahim Kanouchebedf1a82022-10-22 01:28:05 +00001545
Bob Badour928ee9d2023-03-31 14:51:36 +00001546func (m spdxID) isMatch(line string) bool {
1547 return spdxIDTag.MatchString(line)
1548}
1549
1550func (m spdxID) String() string {
1551 return "SPDXID: SPDXRef-DOCUMENT"
1552}
1553
1554type spdxPkgID struct {
1555 name string
1556}
1557
1558func (m spdxPkgID) isMatch(line string) bool {
1559 groups := spdxPkgIDTag.FindStringSubmatch(line)
1560 if len(groups) != 2 {
Ibrahim Kanouchee97adc52023-03-20 16:42:09 +00001561 return false
1562 }
Bob Badour928ee9d2023-03-31 14:51:36 +00001563 return groups[1] == replaceSlashes(m.name)
1564}
1565
1566func (m spdxPkgID) String() string {
1567 return "SPDXID: SPDXRef-Package-" + replaceSlashes(m.name)
1568}
1569
1570type spdxVersion struct{}
1571
1572func (m spdxVersion) isMatch(line string) bool {
1573 return spdxVersionTag.MatchString(line)
1574}
1575
1576func (m spdxVersion) String() string {
1577 return "SPDXVersion: SPDX-2.2"
1578}
1579
1580type spdxDataLicense struct{}
1581
1582func (m spdxDataLicense) isMatch(line string) bool {
1583 return spdxDataLicenseTag.MatchString(line)
1584}
1585
1586func (m spdxDataLicense) String() string {
1587 return "DataLicense: CC0-1.0"
1588}
1589
1590type spdxDocumentName struct {
1591 name string
1592}
1593
1594func (m spdxDocumentName) isMatch(line string) bool {
1595 return spdxDocumentNameTag.MatchString(line)
1596}
1597
1598func (m spdxDocumentName) String() string {
1599 return "DocumentName: " + m.name
1600}
1601
1602type spdxDocumentNameSpace struct {
1603 name string
1604}
1605
1606func (m spdxDocumentNameSpace) isMatch(line string) bool {
1607 return spdxDocumentNameSpaceTag.MatchString(line)
1608}
1609
1610func (m spdxDocumentNameSpace) String() string {
1611 return "DocumentNameSpace: Android"
1612}
1613
1614type spdxCreatorOrganization struct{}
1615
1616func (m spdxCreatorOrganization) isMatch(line string) bool {
1617 return spdxCreatorOrganizationTag.MatchString(line)
1618}
1619
1620func (m spdxCreatorOrganization) String() string {
1621 return "Creator: Organization: Google LLC"
Ibrahim Kanouchebedf1a82022-10-22 01:28:05 +00001622}
1623
1624func fakeTime() time.Time {
Maciej Żenczykowski458f9022022-11-02 02:05:19 +00001625 return time.UnixMicro(0).UTC()
Ibrahim Kanouchebedf1a82022-10-22 01:28:05 +00001626}
Bob Badour928ee9d2023-03-31 14:51:36 +00001627
1628type spdxCreatedTime struct{}
1629
1630func (m spdxCreatedTime) isMatch(line string) bool {
1631 return spdxCreatedTimeTag.MatchString(line)
1632}
1633
1634func (m spdxCreatedTime) String() string {
1635 return "Created: 1970-01-01T00:00:00Z"
1636}
1637
1638type spdxPkgDownloadLocation struct {
1639 name string
1640}
1641
1642func (m spdxPkgDownloadLocation) isMatch(line string) bool {
1643 return spdxPkgDownloadLocationTag.MatchString(line)
1644}
1645
1646func (m spdxPkgDownloadLocation) String() string {
1647 return "PackageDownloadLocation: " + m.name
1648}
1649
1650type spdxPkgLicenseDeclared struct {
1651 name string
1652}
1653
1654func (m spdxPkgLicenseDeclared) isMatch(line string) bool {
1655 groups := spdxPkgLicenseDeclaredTag.FindStringSubmatch(line)
1656 if len(groups) != 2 {
1657 return false
1658 }
1659 return groups[1] == replaceSlashes(m.name)
1660}
1661
1662func (m spdxPkgLicenseDeclared) String() string {
1663 return "PackageLicenseConcluded: LicenseRef-" + m.name
1664}
1665
1666type spdxRelationship struct {
1667 pkg1 string
1668 pkg2 string
1669 relation string
1670}
1671
1672func (m spdxRelationship) isMatch(line string) bool {
1673 groups := spdxRelationshipTag.FindStringSubmatch(line)
1674 if len(groups) != 4 {
1675 return false
1676 }
1677 return groups[1] == replaceSlashes(m.pkg1) && groups[2] == m.relation && groups[3] == replaceSlashes(m.pkg2)
1678}
1679
1680func (m spdxRelationship) String() string {
1681 return "Relationship: SPDXRef-" + replaceSlashes(m.pkg1) + " " + m.relation + " SPDXRef-Package-" + replaceSlashes(m.pkg2)
1682}
1683
1684type spdxLicense struct{}
1685
1686func (m spdxLicense) isMatch(line string) bool {
1687 return spdxLicenseTag.MatchString(line)
1688}
1689
1690func (m spdxLicense) String() string {
1691 return "##### Non-standard license:"
1692}
1693
1694type spdxLicenseID struct {
1695 name string
1696}
1697
1698func (m spdxLicenseID) isMatch(line string) bool {
1699 groups := spdxLicenseIDTag.FindStringSubmatch(line)
1700 if len(groups) != 2 {
1701 return false
1702 }
1703 return groups[1] == replaceSlashes(m.name)
1704}
1705
1706func (m spdxLicenseID) String() string {
1707 return "LicenseID: LicenseRef-" + m.name
1708}
1709
1710type spdxExtractedText struct {
1711 name string
1712}
1713
1714func (m spdxExtractedText) isMatch(line string) bool {
1715 groups := spdxExtractedTextTag.FindStringSubmatch(line)
1716 if len(groups) != 2 {
1717 return false
1718 }
1719 return groups[1] == replaceSlashes(m.name)
1720}
1721
1722func (m spdxExtractedText) String() string {
1723 return "ExtractedText: <text>" + m.name
1724}
1725
1726type spdxExtractedClosingText struct{}
1727
1728func (m spdxExtractedClosingText) isMatch(line string) bool {
1729 return spdxExtractedClosingTextTag.MatchString(line)
1730}
1731
1732func (m spdxExtractedClosingText) String() string {
1733 return "</text>"
1734}
1735
1736type matcherList []matcher
1737
1738func (l matcherList) String() string {
1739 var sb strings.Builder
1740 for _, m := range l {
1741 s := m.String()
1742 fmt.Fprintf(&sb, "%s\n", s)
1743 }
1744 return sb.String()
1745}