Revert "Revert "Updated SBOM generator module to generate JSON spdx utility bill of""
This reverts commit 928ee9d9f7ca091054a14c7dcffb2cc406eda2b4.
Reason for revert: Fixed the initial cause of the revert. Added spdx-tools to the missing branches. See b/276427351
Change-Id: I7bd0b3f194b27dc9a255ccadeb2a9a12a3d59f66
diff --git a/tools/compliance/Android.bp b/tools/compliance/Android.bp
index 8e13f2f..f85a46f 100644
--- a/tools/compliance/Android.bp
+++ b/tools/compliance/Android.bp
@@ -138,6 +138,10 @@
"compliance-module",
"blueprint-deptools",
"soong-response",
+ "spdx-tools-spdxv2_2",
+ "spdx-tools-builder2v2",
+ "spdx-tools-spdxcommon",
+ "spdx-tools-spdx-json",
],
testSrcs: ["cmd/sbom/sbom_test.go"],
}
diff --git a/tools/compliance/cmd/sbom/sbom.go b/tools/compliance/cmd/sbom/sbom.go
index 0f8a876..1477ca5 100644
--- a/tools/compliance/cmd/sbom/sbom.go
+++ b/tools/compliance/cmd/sbom/sbom.go
@@ -31,6 +31,11 @@
"android/soong/tools/compliance/projectmetadata"
"github.com/google/blueprint/deptools"
+
+ "github.com/spdx/tools-golang/builder/builder2v2"
+ "github.com/spdx/tools-golang/json"
+ "github.com/spdx/tools-golang/spdx/common"
+ spdx "github.com/spdx/tools-golang/spdx/v2_2"
)
var (
@@ -38,6 +43,8 @@
failNoLicenses = fmt.Errorf("No licenses found")
)
+const NOASSERTION = "NOASSERTION"
+
type context struct {
stdout io.Writer
stderr io.Writer
@@ -154,7 +161,8 @@
ctx := &context{ofile, os.Stderr, compliance.FS, *product, *stripPrefix, actualTime}
- deps, err := sbomGenerator(ctx, flags.Args()...)
+ spdxDoc, deps, err := sbomGenerator(ctx, flags.Args()...)
+
if err != nil {
if err == failNoneRequested {
flags.Usage()
@@ -163,6 +171,11 @@
os.Exit(1)
}
+ if err := spdx_json.Save2_2(spdxDoc, ofile); err != nil {
+ fmt.Fprintf(os.Stderr, "failed to write document to %v: %v", *outputFile, err)
+ os.Exit(1)
+ }
+
if *outputFile != "-" {
err := os.WriteFile(*outputFile, obuf.Bytes(), 0666)
if err != nil {
@@ -218,17 +231,17 @@
// or NOASSERTION if not available, none determined or ambiguous
func getDownloadUrl(_ *context, pm *projectmetadata.ProjectMetadata) string {
if pm == nil {
- return "NOASSERTION"
+ return NOASSERTION
}
urlsByTypeName := pm.UrlsByTypeName()
if urlsByTypeName == nil {
- return "NOASSERTION"
+ return NOASSERTION
}
url := urlsByTypeName.DownloadUrl()
if url == "" {
- return "NOASSERTION"
+ return NOASSERTION
}
return url
}
@@ -274,7 +287,7 @@
// inputFiles returns the complete list of files read
func inputFiles(lg *compliance.LicenseGraph, pmix *projectmetadata.Index, licenseTexts []string) []string {
projectMeta := pmix.AllMetadataFiles()
- targets := lg.TargetNames()
+ targets := lg.TargetNames()
files := make([]string, 0, len(licenseTexts)+len(targets)+len(projectMeta))
files = append(files, licenseTexts...)
files = append(files, targets...)
@@ -289,10 +302,10 @@
// sbomGenerator uses the SPDX standard, see the SPDX specification (https://spdx.github.io/spdx-spec/)
// sbomGenerator is also following the internal google SBOM styleguide (http://goto.google.com/spdx-style-guide)
-func sbomGenerator(ctx *context, files ...string) ([]string, error) {
+func sbomGenerator(ctx *context, files ...string) (*spdx.Document, []string, error) {
// Must be at least one root file.
if len(files) < 1 {
- return nil, failNoneRequested
+ return nil, nil, failNoneRequested
}
pmix := projectmetadata.NewIndex(ctx.rootFS)
@@ -300,9 +313,21 @@
lg, err := compliance.ReadLicenseGraph(ctx.rootFS, ctx.stderr, files)
if err != nil {
- return nil, fmt.Errorf("Unable to read license text file(s) for %q: %v\n", files, err)
+ return nil, nil, fmt.Errorf("Unable to read license text file(s) for %q: %v\n", files, err)
}
+ // creating the packages section
+ pkgs := []*spdx.Package{}
+
+ // creating the relationship section
+ relationships := []*spdx.Relationship{}
+
+ // creating the license section
+ otherLicenses := []*spdx.OtherLicense{}
+
+ // main package name
+ var mainPkgName string
+
// implementing the licenses references for the packages
licenses := make(map[string]string)
concludedLicenses := func(licenseTexts []string) string {
@@ -325,7 +350,6 @@
}
isMainPackage := true
- var mainPackage string
visitedNodes := make(map[*compliance.TargetNode]struct{})
// performing a Breadth-first top down walk of licensegraph and building package information
@@ -341,45 +365,50 @@
}
if isMainPackage {
- mainPackage = getDocumentName(ctx, tn, pm)
- fmt.Fprintf(ctx.stdout, "SPDXVersion: SPDX-2.2\n")
- fmt.Fprintf(ctx.stdout, "DataLicense: CC0-1.0\n")
- fmt.Fprintf(ctx.stdout, "DocumentName: %s\n", mainPackage)
- fmt.Fprintf(ctx.stdout, "SPDXID: SPDXRef-DOCUMENT\n")
- fmt.Fprintf(ctx.stdout, "DocumentNamespace: Android\n")
- fmt.Fprintf(ctx.stdout, "Creator: Organization: Google LLC\n")
- fmt.Fprintf(ctx.stdout, "Created: %s\n", ctx.creationTime().Format("2006-01-02T15:04:05Z"))
+ mainPkgName = replaceSlashes(getPackageName(ctx, tn))
isMainPackage = false
}
- relationships := make([]string, 0, 1)
- defer func() {
- if r := recover(); r != nil {
- panic(r)
- }
- for _, relationship := range relationships {
- fmt.Fprintln(ctx.stdout, relationship)
- }
- }()
if len(path) == 0 {
- relationships = append(relationships,
- fmt.Sprintf("Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-Package-%s",
- getPackageName(ctx, tn)))
+ // Add the describe relationship for the main package
+ rln := &spdx.Relationship{
+ RefA: common.MakeDocElementID("" /* this document */, "DOCUMENT"),
+ RefB: common.MakeDocElementID("", mainPkgName),
+ Relationship: "DESCRIBES",
+ }
+ relationships = append(relationships, rln)
+
} else {
// Check parent and identify annotation
parent := path[len(path)-1]
targetEdge := parent.Edge()
if targetEdge.IsRuntimeDependency() {
// Adding the dynamic link annotation RUNTIME_DEPENDENCY_OF relationship
- relationships = append(relationships, fmt.Sprintf("Relationship: SPDXRef-Package-%s RUNTIME_DEPENDENCY_OF SPDXRef-Package-%s", getPackageName(ctx, tn), getPackageName(ctx, targetEdge.Target())))
+ rln := &spdx.Relationship{
+ RefA: common.MakeDocElementID("", replaceSlashes(getPackageName(ctx, tn))),
+ RefB: common.MakeDocElementID("", replaceSlashes(getPackageName(ctx, targetEdge.Target()))),
+ Relationship: "RUNTIME_DEPENDENCY_OF",
+ }
+ relationships = append(relationships, rln)
} else if targetEdge.IsDerivation() {
// Adding the derivation annotation as a CONTAINS relationship
- relationships = append(relationships, fmt.Sprintf("Relationship: SPDXRef-Package-%s CONTAINS SPDXRef-Package-%s", getPackageName(ctx, targetEdge.Target()), getPackageName(ctx, tn)))
+ rln := &spdx.Relationship{
+ RefA: common.MakeDocElementID("", replaceSlashes(getPackageName(ctx, targetEdge.Target()))),
+ RefB: common.MakeDocElementID("", replaceSlashes(getPackageName(ctx, tn))),
+ Relationship: "CONTAINS",
+ }
+ relationships = append(relationships, rln)
} else if targetEdge.IsBuildTool() {
// Adding the toolchain annotation as a BUILD_TOOL_OF relationship
- relationships = append(relationships, fmt.Sprintf("Relationship: SPDXRef-Package-%s BUILD_TOOL_OF SPDXRef-Package-%s", getPackageName(ctx, tn), getPackageName(ctx, targetEdge.Target())))
+ rln := &spdx.Relationship{
+ RefA: common.MakeDocElementID("", replaceSlashes(getPackageName(ctx, tn))),
+ RefB: common.MakeDocElementID("", replaceSlashes(getPackageName(ctx, targetEdge.Target()))),
+ Relationship: "BUILD_TOOL_OF",
+ }
+ relationships = append(relationships, rln)
+
} else {
panic(fmt.Errorf("Unknown dependency type: %v", targetEdge.Annotations()))
}
@@ -390,18 +419,27 @@
}
visitedNodes[tn] = struct{}{}
pkgName := getPackageName(ctx, tn)
- fmt.Fprintf(ctx.stdout, "##### Package: %s\n", strings.Replace(pkgName, "-", "/", -2))
- fmt.Fprintf(ctx.stdout, "PackageName: %s\n", pkgName)
- if pm != nil && pm.Version() != "" {
- fmt.Fprintf(ctx.stdout, "PackageVersion: %s\n", pm.Version())
+
+ // Making an spdx package and adding it to pkgs
+ pkg := &spdx.Package{
+ PackageName: replaceSlashes(pkgName),
+ PackageDownloadLocation: getDownloadUrl(ctx, pm),
+ PackageSPDXIdentifier: common.ElementID(replaceSlashes(pkgName)),
+ PackageLicenseConcluded: concludedLicenses(tn.LicenseTexts()),
}
- fmt.Fprintf(ctx.stdout, "SPDXID: SPDXRef-Package-%s\n", pkgName)
- fmt.Fprintf(ctx.stdout, "PackageDownloadLocation: %s\n", getDownloadUrl(ctx, pm))
- fmt.Fprintf(ctx.stdout, "PackageLicenseConcluded: %s\n", concludedLicenses(tn.LicenseTexts()))
+
+ if pm != nil && pm.Version() != "" {
+ pkg.PackageVersion = pm.Version()
+ } else {
+ pkg.PackageVersion = NOASSERTION
+ }
+
+ pkgs = append(pkgs, pkg)
+
return true
})
- fmt.Fprintf(ctx.stdout, "##### Non-standard license:\n")
+ // Adding Non-standard licenses
licenseTexts := make([]string, 0, len(licenses))
@@ -412,23 +450,39 @@
sort.Strings(licenseTexts)
for _, licenseText := range licenseTexts {
- fmt.Fprintf(ctx.stdout, "LicenseID: %s\n", licenses[licenseText])
// open the file
f, err := ctx.rootFS.Open(filepath.Clean(licenseText))
if err != nil {
- return nil, fmt.Errorf("error opening license text file %q: %w", licenseText, err)
+ return nil, nil, fmt.Errorf("error opening license text file %q: %w", licenseText, err)
}
// read the file
text, err := io.ReadAll(f)
if err != nil {
- return nil, fmt.Errorf("error reading license text file %q: %w", licenseText, err)
+ return nil, nil, fmt.Errorf("error reading license text file %q: %w", licenseText, err)
}
- // adding the extracted license text
- fmt.Fprintf(ctx.stdout, "ExtractedText: <text>%v</text>\n", string(text))
+ // Making an spdx License and adding it to otherLicenses
+ otherLicenses = append(otherLicenses, &spdx.OtherLicense{
+ LicenseName: strings.Replace(licenses[licenseText], "LicenseRef-", "", -1),
+ LicenseIdentifier: string(licenses[licenseText]),
+ ExtractedText: string(text),
+ })
}
deps := inputFiles(lg, pmix, licenseTexts)
sort.Strings(deps)
- return deps, nil
+
+ // Making the SPDX doc
+ ci, err := builder2v2.BuildCreationInfoSection2_2("Organization", "Google LLC", nil)
+ if err != nil {
+ return nil, nil, fmt.Errorf("Unable to build creation info section for SPDX doc: %v\n", err)
+ }
+
+ return &spdx.Document{
+ SPDXIdentifier: "DOCUMENT",
+ CreationInfo: ci,
+ Packages: pkgs,
+ Relationships: relationships,
+ OtherLicenses: otherLicenses,
+ }, deps, nil
}
diff --git a/tools/compliance/cmd/sbom/sbom_test.go b/tools/compliance/cmd/sbom/sbom_test.go
index 6df74e2..cc8805f 100644
--- a/tools/compliance/cmd/sbom/sbom_test.go
+++ b/tools/compliance/cmd/sbom/sbom_test.go
@@ -15,37 +15,19 @@
package main
import (
- "bufio"
"bytes"
+ "encoding/json"
"fmt"
"os"
"reflect"
- "regexp"
"strings"
"testing"
"time"
"android/soong/tools/compliance"
-)
-
-var (
- spdxVersionTag = regexp.MustCompile(`^\s*SPDXVersion: SPDX-2.2\s*$`)
- spdxDataLicenseTag = regexp.MustCompile(`^\s*DataLicense: CC0-1.0\s*$`)
- spdxDocumentNameTag = regexp.MustCompile(`^\s*DocumentName:\s*Android*\s*$`)
- spdxIDTag = regexp.MustCompile(`^\s*SPDXID:\s*SPDXRef-DOCUMENT\s*$`)
- spdxDocumentNameSpaceTag = regexp.MustCompile(`^\s*DocumentNamespace:\s*Android\s*$`)
- spdxCreatorOrganizationTag = regexp.MustCompile(`^\s*Creator:\s*Organization:\s*Google LLC\s*$`)
- spdxCreatedTimeTag = regexp.MustCompile(`^\s*Created: 1970-01-01T00:00:00Z\s*$`)
- spdxPackageTag = regexp.MustCompile(`^\s*#####\s*Package:\s*(.*)\s*$`)
- spdxPackageNameTag = regexp.MustCompile(`^\s*PackageName:\s*(.*)\s*$`)
- spdxPkgIDTag = regexp.MustCompile(`^\s*SPDXID:\s*SPDXRef-Package-(.*)\s*$`)
- spdxPkgDownloadLocationTag = regexp.MustCompile(`^\s*PackageDownloadLocation:\s*NOASSERTION\s*$`)
- spdxPkgLicenseDeclaredTag = regexp.MustCompile(`^\s*PackageLicenseConcluded:\s*LicenseRef-(.*)\s*$`)
- spdxRelationshipTag = regexp.MustCompile(`^\s*Relationship:\s*SPDXRef-(.*)\s*(DESCRIBES|CONTAINS|BUILD_TOOL_OF|RUNTIME_DEPENDENCY_OF)\s*SPDXRef-Package-(.*)\s*$`)
- spdxLicenseTag = regexp.MustCompile(`^\s*##### Non-standard license:\s*$`)
- spdxLicenseIDTag = regexp.MustCompile(`^\s*LicenseID: LicenseRef-(.*)\s*$`)
- spdxExtractedTextTag = regexp.MustCompile(`^\s*ExtractedText:\s*<text>(.*)\s*$`)
- spdxExtractedClosingTextTag = regexp.MustCompile(`^\s*</text>\s*$`)
+ "github.com/spdx/tools-golang/builder/builder2v2"
+ "github.com/spdx/tools-golang/spdx/common"
+ spdx "github.com/spdx/tools-golang/spdx/v2_2"
)
func TestMain(m *testing.M) {
@@ -65,69 +47,121 @@
outDir string
roots []string
stripPrefix string
- expectedOut []matcher
+ expectedOut *spdx.Document
expectedDeps []string
}{
{
condition: "firstparty",
name: "apex",
roots: []string{"highest.apex.meta_lic"},
- expectedOut: []matcher{
- spdxVersion{},
- spdxDataLicense{},
- spdxDocumentName{"Android"},
- spdxID{},
- spdxDocumentNameSpace{},
- spdxCreatorOrganization{},
- spdxCreatedTime{},
- packageTag{"testdata/firstparty/highest.apex.meta_lic"},
- packageName{"testdata/firstparty/highest.apex.meta_lic"},
- spdxPkgID{"testdata/firstparty/highest.apex.meta_lic"},
- spdxPkgDownloadLocation{"NOASSERTION"},
- spdxPkgLicenseDeclared{"testdata-firstparty-FIRST_PARTY_LICENSE"},
- spdxRelationship{"DOCUMENT ", "testdata-firstparty-highest.apex.meta_lic", "DESCRIBES"},
- packageTag{"testdata/firstparty/bin/bin1.meta_lic"},
- packageName{"testdata/firstparty/bin/bin1.meta_lic"},
- spdxPkgID{"testdata/firstparty/bin/bin1.meta_lic"},
- spdxPkgDownloadLocation{"NOASSERTION"},
- spdxPkgLicenseDeclared{"testdata-firstparty-FIRST_PARTY_LICENSE"},
- spdxRelationship{"Package-testdata/firstparty/highest.apex.meta_lic ", "testdata/firstparty/bin/bin1.meta_lic", "CONTAINS"},
- packageTag{"testdata/firstparty/bin/bin2.meta_lic"},
- packageName{"testdata/firstparty/bin/bin2.meta_lic"},
- spdxPkgID{"testdata/firstparty/bin/bin2.meta_lic"},
- spdxPkgDownloadLocation{"NOASSERTION"},
- spdxPkgLicenseDeclared{"testdata-firstparty-FIRST_PARTY_LICENSE"},
- spdxRelationship{"Package-testdata/firstparty/highest.apex.meta_lic ", "testdata-firstparty-bin-bin2.meta_lic", "CONTAINS"},
- packageTag{"testdata/firstparty/lib/liba.so.meta_lic"},
- packageName{"testdata/firstparty/lib/liba.so.meta_lic"},
- spdxPkgID{"testdata/firstparty/lib/liba.so.meta_lic"},
- spdxPkgDownloadLocation{"NOASSERTION"},
- spdxPkgLicenseDeclared{"testdata-firstparty-FIRST_PARTY_LICENSE"},
- spdxRelationship{"Package-testdata/firstparty/highest.apex.meta_lic ", "testdata/firstparty/lib/liba.so.meta_lic", "CONTAINS"},
- packageTag{"testdata/firstparty/lib/libb.so.meta_lic"},
- packageName{"testdata/firstparty/lib/libb.so.meta_lic"},
- spdxPkgID{"testdata/firstparty/lib/libb.so.meta_lic"},
- spdxPkgDownloadLocation{"NOASSERTION"},
- spdxPkgLicenseDeclared{"testdata-firstparty-FIRST_PARTY_LICENSE"},
- spdxRelationship{"Package-testdata/firstparty/highest.apex.meta_lic ", "testdata/firstparty/lib/libb.so.meta_lic", "CONTAINS"},
- spdxRelationship{"Package-testdata/firstparty/bin/bin1.meta_lic ", "testdata/firstparty/lib/liba.so.meta_lic", "CONTAINS"},
- packageTag{"testdata/firstparty/lib/libc.a.meta_lic"},
- packageName{"testdata/firstparty/lib/libc.a.meta_lic"},
- spdxPkgID{"testdata/firstparty/lib/libc.a.meta_lic"},
- spdxPkgDownloadLocation{"NOASSERTION"},
- spdxPkgLicenseDeclared{"testdata-firstparty-FIRST_PARTY_LICENSE"},
- spdxRelationship{"Package-testdata-firstparty-bin-bin1.meta_lic ", "testdata/firstparty/lib/libc.a.meta_lic", "CONTAINS"},
- spdxRelationship{"Package-testdata/firstparty/lib/libb.so.meta_lic ", "testdata/firstparty/bin/bin2.meta_lic", "RUNTIME_DEPENDENCY_OF"},
- packageTag{"testdata/firstparty/lib/libd.so.meta_lic"},
- packageName{"testdata/firstparty/lib/libd.so.meta_lic"},
- spdxPkgID{"testdata/firstparty/lib/libd.so.meta_lic"},
- spdxPkgDownloadLocation{"NOASSERTION"},
- spdxPkgLicenseDeclared{"testdata-firstparty-FIRST_PARTY_LICENSE"},
- spdxRelationship{"Package-testdata/firstparty/lib/libd.so.meta_lic ", "testdata/firstparty/bin/bin2.meta_lic", "RUNTIME_DEPENDENCY_OF"},
- spdxLicense{},
- spdxLicenseID{"testdata-firstparty-FIRST_PARTY_LICENSE"},
- spdxExtractedText{"&&&First Party License&&&"},
- spdxExtractedClosingText{},
+ expectedOut: &spdx.Document{
+ SPDXIdentifier: "DOCUMENT",
+ CreationInfo: getCreationInfo(t),
+ Packages: []*spdx.Package{
+ {
+ PackageName: "testdata-firstparty-highest.apex.meta_lic",
+ PackageVersion: "NOASSERTION",
+ PackageDownloadLocation: "NOASSERTION",
+ PackageSPDXIdentifier: common.ElementID("testdata-firstparty-highest.apex.meta_lic"),
+ PackageLicenseConcluded: "LicenseRef-testdata-firstparty-FIRST_PARTY_LICENSE",
+ },
+ {
+ PackageName: "testdata-firstparty-bin-bin1.meta_lic",
+ PackageVersion: "NOASSERTION",
+ PackageDownloadLocation: "NOASSERTION",
+ PackageSPDXIdentifier: common.ElementID("testdata-firstparty-bin-bin1.meta_lic"),
+ PackageLicenseConcluded: "LicenseRef-testdata-firstparty-FIRST_PARTY_LICENSE",
+ },
+ {
+ PackageName: "testdata-firstparty-bin-bin2.meta_lic",
+ PackageVersion: "NOASSERTION",
+ PackageDownloadLocation: "NOASSERTION",
+ PackageSPDXIdentifier: common.ElementID("testdata-firstparty-bin-bin2.meta_lic"),
+ PackageLicenseConcluded: "LicenseRef-testdata-firstparty-FIRST_PARTY_LICENSE",
+ },
+ {
+ PackageName: "testdata-firstparty-lib-liba.so.meta_lic",
+ PackageVersion: "NOASSERTION",
+ PackageDownloadLocation: "NOASSERTION",
+ PackageSPDXIdentifier: common.ElementID("testdata-firstparty-lib-liba.so.meta_lic"),
+ PackageLicenseConcluded: "LicenseRef-testdata-firstparty-FIRST_PARTY_LICENSE",
+ },
+ {
+ PackageName: "testdata-firstparty-lib-libb.so.meta_lic",
+ PackageVersion: "NOASSERTION",
+ PackageDownloadLocation: "NOASSERTION",
+ PackageSPDXIdentifier: common.ElementID("testdata-firstparty-lib-libb.so.meta_lic"),
+ PackageLicenseConcluded: "LicenseRef-testdata-firstparty-FIRST_PARTY_LICENSE",
+ },
+ {
+ PackageName: "testdata-firstparty-lib-libc.a.meta_lic",
+ PackageVersion: "NOASSERTION",
+ PackageDownloadLocation: "NOASSERTION",
+ PackageSPDXIdentifier: common.ElementID("testdata-firstparty-lib-libc.a.meta_lic"),
+ PackageLicenseConcluded: "LicenseRef-testdata-firstparty-FIRST_PARTY_LICENSE",
+ },
+ {
+ PackageName: "testdata-firstparty-lib-libd.so.meta_lic",
+ PackageVersion: "NOASSERTION",
+ PackageDownloadLocation: "NOASSERTION",
+ PackageSPDXIdentifier: common.ElementID("testdata-firstparty-lib-libd.so.meta_lic"),
+ PackageLicenseConcluded: "LicenseRef-testdata-firstparty-FIRST_PARTY_LICENSE",
+ },
+ },
+ Relationships: []*spdx.Relationship{
+ {
+ RefA: common.MakeDocElementID("", "DOCUMENT"),
+ RefB: common.MakeDocElementID("", "testdata-firstparty-highest.apex.meta_lic"),
+ Relationship: "DESCRIBES",
+ },
+ {
+ RefA: common.MakeDocElementID("", "testdata-firstparty-highest.apex.meta_lic"),
+ RefB: common.MakeDocElementID("", "testdata-firstparty-bin-bin1.meta_lic"),
+ Relationship: "CONTAINS",
+ },
+ {
+ RefA: common.MakeDocElementID("", "testdata-firstparty-highest.apex.meta_lic"),
+ RefB: common.MakeDocElementID("", "testdata-firstparty-bin-bin2.meta_lic"),
+ Relationship: "CONTAINS",
+ },
+ {
+ RefA: common.MakeDocElementID("", "testdata-firstparty-highest.apex.meta_lic"),
+ RefB: common.MakeDocElementID("", "testdata-firstparty-lib-liba.so.meta_lic"),
+ Relationship: "CONTAINS",
+ },
+ {
+ RefA: common.MakeDocElementID("", "testdata-firstparty-highest.apex.meta_lic"),
+ RefB: common.MakeDocElementID("", "testdata-firstparty-lib-libb.so.meta_lic"),
+ Relationship: "CONTAINS",
+ },
+ {
+ RefA: common.MakeDocElementID("", "testdata-firstparty-bin-bin1.meta_lic"),
+ RefB: common.MakeDocElementID("", "testdata-firstparty-lib-liba.so.meta_lic"),
+ Relationship: "CONTAINS",
+ },
+ {
+ RefA: common.MakeDocElementID("", "testdata-firstparty-bin-bin1.meta_lic"),
+ RefB: common.MakeDocElementID("", "testdata-firstparty-lib-libc.a.meta_lic"),
+ Relationship: "CONTAINS",
+ },
+ {
+ RefA: common.MakeDocElementID("", "testdata-firstparty-lib-libb.so.meta_lic"),
+ RefB: common.MakeDocElementID("", "testdata-firstparty-bin-bin2.meta_lic"),
+ Relationship: "RUNTIME_DEPENDENCY_OF",
+ },
+ {
+ RefA: common.MakeDocElementID("", "testdata-firstparty-lib-libd.so.meta_lic"),
+ RefB: common.MakeDocElementID("", "testdata-firstparty-bin-bin2.meta_lic"),
+ Relationship: "RUNTIME_DEPENDENCY_OF",
+ },
+ },
+ OtherLicenses: []*spdx.OtherLicense{
+ {
+ LicenseIdentifier: "LicenseRef-testdata-firstparty-FIRST_PARTY_LICENSE",
+ ExtractedText: "&&&First Party License&&&\n",
+ LicenseName: "testdata-firstparty-FIRST_PARTY_LICENSE",
+ },
+ },
},
expectedDeps: []string{
"testdata/firstparty/FIRST_PARTY_LICENSE",
@@ -144,42 +178,68 @@
condition: "firstparty",
name: "application",
roots: []string{"application.meta_lic"},
- expectedOut: []matcher{
- spdxVersion{},
- spdxDataLicense{},
- spdxDocumentName{"Android"},
- spdxID{},
- spdxDocumentNameSpace{},
- spdxCreatorOrganization{},
- spdxCreatedTime{},
- packageTag{"testdata/firstparty/application.meta_lic"},
- packageName{"testdata/firstparty/application.meta_lic"},
- spdxPkgID{"testdata/firstparty/application.meta_lic"},
- spdxPkgDownloadLocation{"NOASSERTION"},
- spdxPkgLicenseDeclared{"testdata-firstparty-FIRST_PARTY_LICENSE"},
- spdxRelationship{"DOCUMENT ", "testdata/firstparty/application.meta_lic", "DESCRIBES"},
- packageTag{"testdata/firstparty/bin/bin3.meta_lic"},
- packageName{"testdata/firstparty/bin/bin3.meta_lic"},
- spdxPkgID{"testdata/firstparty/bin/bin3.meta_lic"},
- spdxPkgDownloadLocation{"NOASSERTION"},
- spdxPkgLicenseDeclared{"testdata-firstparty-FIRST_PARTY_LICENSE"},
- spdxRelationship{"Package-testdata/firstparty/bin/bin3.meta_lic ", "testdata-firstparty-application.meta_lic", "BUILD_TOOL_OF"},
- packageTag{"testdata/firstparty/lib/liba.so.meta_lic"},
- packageName{"testdata/firstparty/lib/liba.so.meta_lic"},
- spdxPkgID{"testdata/firstparty/lib/liba.so.meta_lic"},
- spdxPkgDownloadLocation{"NOASSERTION"},
- spdxPkgLicenseDeclared{"testdata-firstparty-FIRST_PARTY_LICENSE"},
- spdxRelationship{"Package-testdata/firstparty/application.meta_lic ", "testdata/firstparty/lib/liba.so.meta_lic", "CONTAINS"},
- packageTag{"testdata/firstparty/lib/libb.so.meta_lic"},
- packageName{"testdata/firstparty/lib/libb.so.meta_lic"},
- spdxPkgID{"testdata/firstparty/lib/libb.so.meta_lic"},
- spdxPkgDownloadLocation{"NOASSERTION"},
- spdxPkgLicenseDeclared{"testdata-firstparty-FIRST_PARTY_LICENSE"},
- spdxRelationship{"Package-testdata/firstparty/lib/libb.so.meta_lic ", "testdata-firstparty-application.meta_lic", "RUNTIME_DEPENDENCY_OF"},
- spdxLicense{},
- spdxLicenseID{"testdata-firstparty-FIRST_PARTY_LICENSE"},
- spdxExtractedText{"&&&First Party License&&&"},
- spdxExtractedClosingText{},
+ expectedOut: &spdx.Document{
+ SPDXIdentifier: "DOCUMENT",
+ CreationInfo: getCreationInfo(t),
+ Packages: []*spdx.Package{
+ {
+ PackageName: "testdata-firstparty-application.meta_lic",
+ PackageVersion: "NOASSERTION",
+ PackageDownloadLocation: "NOASSERTION",
+ PackageSPDXIdentifier: common.ElementID("testdata-firstparty-application.meta_lic"),
+ PackageLicenseConcluded: "LicenseRef-testdata-firstparty-FIRST_PARTY_LICENSE",
+ },
+ {
+ PackageName: "testdata-firstparty-bin-bin3.meta_lic",
+ PackageVersion: "NOASSERTION",
+ PackageDownloadLocation: "NOASSERTION",
+ PackageSPDXIdentifier: common.ElementID("testdata-firstparty-bin-bin3.meta_lic"),
+ PackageLicenseConcluded: "LicenseRef-testdata-firstparty-FIRST_PARTY_LICENSE",
+ },
+ {
+ PackageName: "testdata-firstparty-lib-liba.so.meta_lic",
+ PackageVersion: "NOASSERTION",
+ PackageDownloadLocation: "NOASSERTION",
+ PackageSPDXIdentifier: common.ElementID("testdata-firstparty-lib-liba.so.meta_lic"),
+ PackageLicenseConcluded: "LicenseRef-testdata-firstparty-FIRST_PARTY_LICENSE",
+ },
+ {
+ PackageName: "testdata-firstparty-lib-libb.so.meta_lic",
+ PackageVersion: "NOASSERTION",
+ PackageDownloadLocation: "NOASSERTION",
+ PackageSPDXIdentifier: common.ElementID("testdata-firstparty-lib-libb.so.meta_lic"),
+ PackageLicenseConcluded: "LicenseRef-testdata-firstparty-FIRST_PARTY_LICENSE",
+ },
+ },
+ Relationships: []*spdx.Relationship{
+ {
+ RefA: common.MakeDocElementID("", "DOCUMENT"),
+ RefB: common.MakeDocElementID("", "testdata-firstparty-application.meta_lic"),
+ Relationship: "DESCRIBES",
+ },
+ {
+ RefA: common.MakeDocElementID("", "testdata-firstparty-bin-bin3.meta_lic"),
+ RefB: common.MakeDocElementID("", "testdata-firstparty-application.meta_lic"),
+ Relationship: "BUILD_TOOL_OF",
+ },
+ {
+ RefA: common.MakeDocElementID("", "testdata-firstparty-application.meta_lic"),
+ RefB: common.MakeDocElementID("", "testdata-firstparty-lib-liba.so.meta_lic"),
+ Relationship: "CONTAINS",
+ },
+ {
+ RefA: common.MakeDocElementID("", "testdata-firstparty-lib-libb.so.meta_lic"),
+ RefB: common.MakeDocElementID("", "testdata-firstparty-application.meta_lic"),
+ Relationship: "RUNTIME_DEPENDENCY_OF",
+ },
+ },
+ OtherLicenses: []*spdx.OtherLicense{
+ {
+ LicenseIdentifier: "LicenseRef-testdata-firstparty-FIRST_PARTY_LICENSE",
+ ExtractedText: "&&&First Party License&&&\n",
+ LicenseName: "testdata-firstparty-FIRST_PARTY_LICENSE",
+ },
+ },
},
expectedDeps: []string{
"testdata/firstparty/FIRST_PARTY_LICENSE",
@@ -193,62 +253,114 @@
condition: "firstparty",
name: "container",
roots: []string{"container.zip.meta_lic"},
- expectedOut: []matcher{
- spdxVersion{},
- spdxDataLicense{},
- spdxDocumentName{"Android"},
- spdxID{},
- spdxDocumentNameSpace{},
- spdxCreatorOrganization{},
- spdxCreatedTime{},
- packageTag{"testdata/firstparty/container.zip.meta_lic"},
- packageName{"testdata/firstparty/container.zip.meta_lic"},
- spdxPkgID{"testdata/firstparty/container.zip.meta_lic"},
- spdxPkgDownloadLocation{"NOASSERTION"},
- spdxPkgLicenseDeclared{"testdata-firstparty-FIRST_PARTY_LICENSE"},
- spdxRelationship{"DOCUMENT ", "testdata/firstparty/container.zip.meta_lic", "DESCRIBES"},
- packageTag{"testdata/firstparty/bin/bin1.meta_lic"},
- packageName{"testdata/firstparty/bin/bin1.meta_lic"},
- spdxPkgID{"testdata/firstparty/bin/bin1.meta_lic"},
- spdxPkgDownloadLocation{"NOASSERTION"},
- spdxPkgLicenseDeclared{"testdata-firstparty-FIRST_PARTY_LICENSE"},
- spdxRelationship{"Package-testdata/firstparty/container.zip.meta_lic ", "testdata/firstparty/bin/bin1.meta_lic", "CONTAINS"},
- packageTag{"testdata/firstparty/bin/bin2.meta_lic"},
- packageName{"testdata/firstparty/bin/bin2.meta_lic"},
- spdxPkgID{"testdata/firstparty/bin/bin2.meta_lic"},
- spdxPkgDownloadLocation{"NOASSERTION"},
- spdxPkgLicenseDeclared{"testdata-firstparty-FIRST_PARTY_LICENSE"},
- spdxRelationship{"Package-testdata/firstparty/container.zip.meta_lic ", "testdata/firstparty/bin/bin2.meta_lic", "CONTAINS"},
- packageTag{"testdata/firstparty/lib/liba.so.meta_lic"},
- packageName{"testdata/firstparty/lib/liba.so.meta_lic"},
- spdxPkgID{"testdata/firstparty/lib/liba.so.meta_lic"},
- spdxPkgDownloadLocation{"NOASSERTION"},
- spdxPkgLicenseDeclared{"testdata-firstparty-FIRST_PARTY_LICENSE"},
- spdxRelationship{"Package-testdata/firstparty/container.zip.meta_lic ", "testdata/firstparty/lib/liba.so.meta_lic", "CONTAINS"},
- packageTag{"testdata/firstparty/lib/libb.so.meta_lic"},
- packageName{"testdata/firstparty/lib/libb.so.meta_lic"},
- spdxPkgID{"testdata/firstparty/lib/libb.so.meta_lic"},
- spdxPkgDownloadLocation{"NOASSERTION"},
- spdxPkgLicenseDeclared{"testdata-firstparty-FIRST_PARTY_LICENSE"},
- spdxRelationship{"Package-testdata/firstparty/container.zip.meta_lic ", "testdata/firstparty/lib/libb.so.meta_lic", "CONTAINS"},
- spdxRelationship{"Package-testdata/firstparty/bin/bin1.meta_lic ", "testdata/firstparty/lib/liba.so.meta_lic", "CONTAINS"},
- packageTag{"testdata/firstparty/lib/libc.a.meta_lic"},
- packageName{"testdata/firstparty/lib/libc.a.meta_lic"},
- spdxPkgID{"testdata/firstparty/lib/libc.a.meta_lic"},
- spdxPkgDownloadLocation{"NOASSERTION"},
- spdxPkgLicenseDeclared{"testdata-firstparty-FIRST_PARTY_LICENSE"},
- spdxRelationship{"Package-testdata/firstparty/bin/bin1.meta_lic ", "testdata/firstparty/lib/libc.a.meta_lic", "CONTAINS"},
- spdxRelationship{"Package-testdata/firstparty/lib/libb.so.meta_lic ", "testdata/firstparty/bin/bin2.meta_lic", "RUNTIME_DEPENDENCY_OF"},
- packageTag{"testdata/firstparty/lib/libd.so.meta_lic"},
- packageName{"testdata/firstparty/lib/libd.so.meta_lic"},
- spdxPkgID{"testdata/firstparty/lib/libd.so.meta_lic"},
- spdxPkgDownloadLocation{"NOASSERTION"},
- spdxPkgLicenseDeclared{"testdata-firstparty-FIRST_PARTY_LICENSE"},
- spdxRelationship{"Package-testdata/firstparty/lib/libd.so.meta_lic ", "testdata/firstparty/bin/bin2.meta_lic", "RUNTIME_DEPENDENCY_OF"},
- spdxLicense{},
- spdxLicenseID{"testdata-firstparty-FIRST_PARTY_LICENSE"},
- spdxExtractedText{"&&&First Party License&&&"},
- spdxExtractedClosingText{},
+ expectedOut: &spdx.Document{
+ SPDXIdentifier: "DOCUMENT",
+ CreationInfo: getCreationInfo(t),
+ Packages: []*spdx.Package{
+ {
+ PackageName: "testdata-firstparty-container.zip.meta_lic",
+ PackageVersion: "NOASSERTION",
+ PackageDownloadLocation: "NOASSERTION",
+ PackageSPDXIdentifier: common.ElementID("testdata-firstparty-container.zip.meta_lic"),
+ PackageLicenseConcluded: "LicenseRef-testdata-firstparty-FIRST_PARTY_LICENSE",
+ },
+ {
+ PackageName: "testdata-firstparty-bin-bin1.meta_lic",
+ PackageVersion: "NOASSERTION",
+ PackageDownloadLocation: "NOASSERTION",
+ PackageSPDXIdentifier: common.ElementID("testdata-firstparty-bin-bin1.meta_lic"),
+ PackageLicenseConcluded: "LicenseRef-testdata-firstparty-FIRST_PARTY_LICENSE",
+ },
+ {
+ PackageName: "testdata-firstparty-bin-bin2.meta_lic",
+ PackageVersion: "NOASSERTION",
+ PackageDownloadLocation: "NOASSERTION",
+ PackageSPDXIdentifier: common.ElementID("testdata-firstparty-bin-bin2.meta_lic"),
+ PackageLicenseConcluded: "LicenseRef-testdata-firstparty-FIRST_PARTY_LICENSE",
+ },
+ {
+ PackageName: "testdata-firstparty-lib-liba.so.meta_lic",
+ PackageVersion: "NOASSERTION",
+ PackageDownloadLocation: "NOASSERTION",
+ PackageSPDXIdentifier: common.ElementID("testdata-firstparty-lib-liba.so.meta_lic"),
+ PackageLicenseConcluded: "LicenseRef-testdata-firstparty-FIRST_PARTY_LICENSE",
+ },
+ {
+ PackageName: "testdata-firstparty-lib-libb.so.meta_lic",
+ PackageVersion: "NOASSERTION",
+ PackageDownloadLocation: "NOASSERTION",
+ PackageSPDXIdentifier: common.ElementID("testdata-firstparty-lib-libb.so.meta_lic"),
+ PackageLicenseConcluded: "LicenseRef-testdata-firstparty-FIRST_PARTY_LICENSE",
+ },
+ {
+ PackageName: "testdata-firstparty-lib-libc.a.meta_lic",
+ PackageVersion: "NOASSERTION",
+ PackageDownloadLocation: "NOASSERTION",
+ PackageSPDXIdentifier: common.ElementID("testdata-firstparty-lib-libc.a.meta_lic"),
+ PackageLicenseConcluded: "LicenseRef-testdata-firstparty-FIRST_PARTY_LICENSE",
+ },
+ {
+ PackageName: "testdata-firstparty-lib-libd.so.meta_lic",
+ PackageVersion: "NOASSERTION",
+ PackageDownloadLocation: "NOASSERTION",
+ PackageSPDXIdentifier: common.ElementID("testdata-firstparty-lib-libd.so.meta_lic"),
+ PackageLicenseConcluded: "LicenseRef-testdata-firstparty-FIRST_PARTY_LICENSE",
+ },
+ },
+ Relationships: []*spdx.Relationship{
+ {
+ RefA: common.MakeDocElementID("", "DOCUMENT"),
+ RefB: common.MakeDocElementID("", "testdata-firstparty-container.zip.meta_lic"),
+ Relationship: "DESCRIBES",
+ },
+ {
+ RefA: common.MakeDocElementID("", "testdata-firstparty-container.zip.meta_lic"),
+ RefB: common.MakeDocElementID("", "testdata-firstparty-bin-bin1.meta_lic"),
+ Relationship: "CONTAINS",
+ },
+ {
+ RefA: common.MakeDocElementID("", "testdata-firstparty-container.zip.meta_lic"),
+ RefB: common.MakeDocElementID("", "testdata-firstparty-bin-bin2.meta_lic"),
+ Relationship: "CONTAINS",
+ },
+ {
+ RefA: common.MakeDocElementID("", "testdata-firstparty-container.zip.meta_lic"),
+ RefB: common.MakeDocElementID("", "testdata-firstparty-lib-liba.so.meta_lic"),
+ Relationship: "CONTAINS",
+ },
+ {
+ RefA: common.MakeDocElementID("", "testdata-firstparty-container.zip.meta_lic"),
+ RefB: common.MakeDocElementID("", "testdata-firstparty-lib-libb.so.meta_lic"),
+ Relationship: "CONTAINS",
+ },
+ {
+ RefA: common.MakeDocElementID("", "testdata-firstparty-bin-bin1.meta_lic"),
+ RefB: common.MakeDocElementID("", "testdata-firstparty-lib-liba.so.meta_lic"),
+ Relationship: "CONTAINS",
+ },
+ {
+ RefA: common.MakeDocElementID("", "testdata-firstparty-bin-bin1.meta_lic"),
+ RefB: common.MakeDocElementID("", "testdata-firstparty-lib-libc.a.meta_lic"),
+ Relationship: "CONTAINS",
+ },
+ {
+ RefA: common.MakeDocElementID("", "testdata-firstparty-lib-libb.so.meta_lic"),
+ RefB: common.MakeDocElementID("", "testdata-firstparty-bin-bin2.meta_lic"),
+ Relationship: "RUNTIME_DEPENDENCY_OF",
+ },
+ {
+ RefA: common.MakeDocElementID("", "testdata-firstparty-lib-libd.so.meta_lic"),
+ RefB: common.MakeDocElementID("", "testdata-firstparty-bin-bin2.meta_lic"),
+ Relationship: "RUNTIME_DEPENDENCY_OF",
+ },
+ },
+ OtherLicenses: []*spdx.OtherLicense{
+ {
+ LicenseIdentifier: "LicenseRef-testdata-firstparty-FIRST_PARTY_LICENSE",
+ ExtractedText: "&&&First Party License&&&\n",
+ LicenseName: "testdata-firstparty-FIRST_PARTY_LICENSE",
+ },
+ },
},
expectedDeps: []string{
"testdata/firstparty/FIRST_PARTY_LICENSE",
@@ -265,36 +377,56 @@
condition: "firstparty",
name: "binary",
roots: []string{"bin/bin1.meta_lic"},
- expectedOut: []matcher{
- spdxVersion{},
- spdxDataLicense{},
- spdxDocumentName{"Android"},
- spdxID{},
- spdxDocumentNameSpace{},
- spdxCreatorOrganization{},
- spdxCreatedTime{},
- packageTag{"testdata/firstparty/bin/bin1.meta_lic"},
- packageName{"testdata/firstparty/bin/bin1.meta_lic"},
- spdxPkgID{"testdata/firstparty/bin/bin1.meta_lic"},
- spdxPkgDownloadLocation{"NOASSERTION"},
- spdxPkgLicenseDeclared{"testdata-firstparty-FIRST_PARTY_LICENSE"},
- spdxRelationship{"DOCUMENT ", "testdata/firstparty/bin/bin1.meta_lic", "DESCRIBES"},
- packageTag{"testdata/firstparty/lib/liba.so.meta_lic"},
- packageName{"testdata/firstparty/lib/liba.so.meta_lic"},
- spdxPkgID{"testdata/firstparty/lib/liba.so.meta_lic"},
- spdxPkgDownloadLocation{"NOASSERTION"},
- spdxPkgLicenseDeclared{"testdata-firstparty-FIRST_PARTY_LICENSE"},
- spdxRelationship{"Package-testdata/firstparty/bin/bin1.meta_lic ", "testdata/firstparty/lib/liba.so.meta_lic", "CONTAINS"},
- packageTag{"testdata/firstparty/lib/libc.a.meta_lic"},
- packageName{"testdata/firstparty/lib/libc.a.meta_lic"},
- spdxPkgID{"testdata/firstparty/lib/libc.a.meta_lic"},
- spdxPkgDownloadLocation{"NOASSERTION"},
- spdxPkgLicenseDeclared{"testdata-firstparty-FIRST_PARTY_LICENSE"},
- spdxRelationship{"Package-testdata/firstparty/bin/bin1.meta_lic ", "testdata/firstparty/lib/libc.a.meta_lic", "CONTAINS"},
- spdxLicense{},
- spdxLicenseID{"testdata-firstparty-FIRST_PARTY_LICENSE"},
- spdxExtractedText{"&&&First Party License&&&"},
- spdxExtractedClosingText{},
+ expectedOut: &spdx.Document{
+ SPDXIdentifier: "DOCUMENT",
+ CreationInfo: getCreationInfo(t),
+ Packages: []*spdx.Package{
+ {
+ PackageName: "testdata-firstparty-bin-bin1.meta_lic",
+ PackageVersion: "NOASSERTION",
+ PackageDownloadLocation: "NOASSERTION",
+ PackageSPDXIdentifier: common.ElementID("testdata-firstparty-bin-bin1.meta_lic"),
+ PackageLicenseConcluded: "LicenseRef-testdata-firstparty-FIRST_PARTY_LICENSE",
+ },
+ {
+ PackageName: "testdata-firstparty-lib-liba.so.meta_lic",
+ PackageVersion: "NOASSERTION",
+ PackageDownloadLocation: "NOASSERTION",
+ PackageSPDXIdentifier: common.ElementID("testdata-firstparty-lib-liba.so.meta_lic"),
+ PackageLicenseConcluded: "LicenseRef-testdata-firstparty-FIRST_PARTY_LICENSE",
+ },
+ {
+ PackageName: "testdata-firstparty-lib-libc.a.meta_lic",
+ PackageVersion: "NOASSERTION",
+ PackageDownloadLocation: "NOASSERTION",
+ PackageSPDXIdentifier: common.ElementID("testdata-firstparty-lib-libc.a.meta_lic"),
+ PackageLicenseConcluded: "LicenseRef-testdata-firstparty-FIRST_PARTY_LICENSE",
+ },
+ },
+ Relationships: []*spdx.Relationship{
+ {
+ RefA: common.MakeDocElementID("", "DOCUMENT"),
+ RefB: common.MakeDocElementID("", "testdata-firstparty-bin-bin1.meta_lic"),
+ Relationship: "DESCRIBES",
+ },
+ {
+ RefA: common.MakeDocElementID("", "testdata-firstparty-bin-bin1.meta_lic"),
+ RefB: common.MakeDocElementID("", "testdata-firstparty-lib-liba.so.meta_lic"),
+ Relationship: "CONTAINS",
+ },
+ {
+ RefA: common.MakeDocElementID("", "testdata-firstparty-bin-bin1.meta_lic"),
+ RefB: common.MakeDocElementID("", "testdata-firstparty-lib-libc.a.meta_lic"),
+ Relationship: "CONTAINS",
+ },
+ },
+ OtherLicenses: []*spdx.OtherLicense{
+ {
+ LicenseIdentifier: "LicenseRef-testdata-firstparty-FIRST_PARTY_LICENSE",
+ ExtractedText: "&&&First Party License&&&\n",
+ LicenseName: "testdata-firstparty-FIRST_PARTY_LICENSE",
+ },
+ },
},
expectedDeps: []string{
"testdata/firstparty/FIRST_PARTY_LICENSE",
@@ -307,24 +439,32 @@
condition: "firstparty",
name: "library",
roots: []string{"lib/libd.so.meta_lic"},
- expectedOut: []matcher{
- spdxVersion{},
- spdxDataLicense{},
- spdxDocumentName{"Android"},
- spdxID{},
- spdxDocumentNameSpace{},
- spdxCreatorOrganization{},
- spdxCreatedTime{},
- packageTag{"testdata/firstparty/lib/libd.so.meta_lic"},
- packageName{"testdata/firstparty/lib/libd.so.meta_lic"},
- spdxPkgID{"testdata/firstparty/lib/libd.so.meta_lic"},
- spdxPkgDownloadLocation{"NOASSERTION"},
- spdxPkgLicenseDeclared{"testdata-firstparty-FIRST_PARTY_LICENSE"},
- spdxRelationship{"DOCUMENT ", "testdata/firstparty/lib/libd.so.meta_lic", "DESCRIBES"},
- spdxLicense{},
- spdxLicenseID{"testdata-firstparty-FIRST_PARTY_LICENSE"},
- spdxExtractedText{"&&&First Party License&&&"},
- spdxExtractedClosingText{},
+ expectedOut: &spdx.Document{
+ SPDXIdentifier: "DOCUMENT",
+ CreationInfo: getCreationInfo(t),
+ Packages: []*spdx.Package{
+ {
+ PackageName: "testdata-firstparty-lib-libd.so.meta_lic",
+ PackageVersion: "NOASSERTION",
+ PackageDownloadLocation: "NOASSERTION",
+ PackageSPDXIdentifier: common.ElementID("testdata-firstparty-lib-libd.so.meta_lic"),
+ PackageLicenseConcluded: "LicenseRef-testdata-firstparty-FIRST_PARTY_LICENSE",
+ },
+ },
+ Relationships: []*spdx.Relationship{
+ {
+ RefA: common.MakeDocElementID("", "DOCUMENT"),
+ RefB: common.MakeDocElementID("", "testdata-firstparty-lib-libd.so.meta_lic"),
+ Relationship: "DESCRIBES",
+ },
+ },
+ OtherLicenses: []*spdx.OtherLicense{
+ {
+ LicenseIdentifier: "LicenseRef-testdata-firstparty-FIRST_PARTY_LICENSE",
+ ExtractedText: "&&&First Party License&&&\n",
+ LicenseName: "testdata-firstparty-FIRST_PARTY_LICENSE",
+ },
+ },
},
expectedDeps: []string{
"testdata/firstparty/FIRST_PARTY_LICENSE",
@@ -335,65 +475,119 @@
condition: "notice",
name: "apex",
roots: []string{"highest.apex.meta_lic"},
- expectedOut: []matcher{
- spdxVersion{},
- spdxDataLicense{},
- spdxDocumentName{"Android"},
- spdxID{},
- spdxDocumentNameSpace{},
- spdxCreatorOrganization{},
- spdxCreatedTime{},
- packageTag{"testdata/notice/highest.apex.meta_lic"},
- packageName{"testdata/notice/highest.apex.meta_lic"},
- spdxPkgID{"testdata/notice/highest.apex.meta_lic"},
- spdxPkgDownloadLocation{"NOASSERTION"},
- spdxPkgLicenseDeclared{"testdata-firstparty-FIRST_PARTY_LICENSE"},
- spdxRelationship{"DOCUMENT ", "testdata/notice/highest.apex.meta_lic", "DESCRIBES"},
- packageTag{"testdata/notice/bin/bin1.meta_lic"},
- packageName{"testdata/notice/bin/bin1.meta_lic"},
- spdxPkgID{"testdata/notice/bin/bin1.meta_lic"},
- spdxPkgDownloadLocation{"NOASSERTION"},
- spdxPkgLicenseDeclared{"testdata-firstparty-FIRST_PARTY_LICENSE"},
- spdxRelationship{"Package-testdata/notice/highest.apex.meta_lic ", "testdata/notice/bin/bin1.meta_lic", "CONTAINS"},
- packageTag{"testdata/notice/bin/bin2.meta_lic"},
- packageName{"testdata/notice/bin/bin2.meta_lic"},
- spdxPkgID{"testdata/notice/bin/bin2.meta_lic"},
- spdxPkgDownloadLocation{"NOASSERTION"},
- spdxPkgLicenseDeclared{"testdata-firstparty-FIRST_PARTY_LICENSE"},
- spdxRelationship{"Package-testdata/notice/highest.apex.meta_lic ", "testdata/notice/bin/bin2.meta_lic", "CONTAINS"},
- packageTag{"testdata/notice/lib/liba.so.meta_lic"},
- packageName{"testdata/notice/lib/liba.so.meta_lic"},
- spdxPkgID{"testdata/notice/lib/liba.so.meta_lic"},
- spdxPkgDownloadLocation{"NOASSERTION"},
- spdxPkgLicenseDeclared{"testdata-notice-NOTICE_LICENSE"},
- spdxRelationship{"Package-testdata/notice/highest.apex.meta_lic ", "testdata/notice/lib/liba.so.meta_lic", "CONTAINS"},
- packageTag{"testdata/notice/lib/libb.so.meta_lic"},
- packageName{"testdata/notice/lib/libb.so.meta_lic"},
- spdxPkgID{"testdata/notice/lib/libb.so.meta_lic"},
- spdxPkgDownloadLocation{"NOASSERTION"},
- spdxPkgLicenseDeclared{"testdata-firstparty-FIRST_PARTY_LICENSE"},
- spdxRelationship{"Package-testdata/notice/highest.apex.meta_lic ", "testdata/notice/lib/libb.so.meta_lic", "CONTAINS"},
- spdxRelationship{"Package-testdata/notice/bin/bin1.meta_lic ", "testdata/notice/lib/liba.so.meta_lic", "CONTAINS"},
- packageTag{"testdata/notice/lib/libc.a.meta_lic"},
- packageName{"testdata/notice/lib/libc.a.meta_lic"},
- spdxPkgID{"testdata/notice/lib/libc.a.meta_lic"},
- spdxPkgDownloadLocation{"NOASSERTION"},
- spdxPkgLicenseDeclared{"testdata-notice-NOTICE_LICENSE"},
- spdxRelationship{"Package-testdata/notice/bin/bin1.meta_lic ", "testdata/notice/lib/libc.a.meta_lic", "CONTAINS"},
- spdxRelationship{"Package-testdata/notice/lib/libb.so.meta_lic ", "testdata/notice/bin/bin2.meta_lic", "RUNTIME_DEPENDENCY_OF"},
- packageTag{"testdata/notice/lib/libd.so.meta_lic"},
- packageName{"testdata/notice/lib/libd.so.meta_lic"},
- spdxPkgID{"testdata/notice/lib/libd.so.meta_lic"},
- spdxPkgDownloadLocation{"NOASSERTION"},
- spdxPkgLicenseDeclared{"testdata-notice-NOTICE_LICENSE"},
- spdxRelationship{"Package-testdata/notice/lib/libd.so.meta_lic ", "testdata/notice/bin/bin2.meta_lic", "RUNTIME_DEPENDENCY_OF"},
- spdxLicense{},
- spdxLicenseID{"testdata-firstparty-FIRST_PARTY_LICENSE"},
- spdxExtractedText{"&&&First Party License&&&"},
- spdxExtractedClosingText{},
- spdxLicenseID{"testdata-notice-NOTICE_LICENSE"},
- spdxExtractedText{"%%%Notice License%%%"},
- spdxExtractedClosingText{},
+ expectedOut: &spdx.Document{
+ SPDXIdentifier: "DOCUMENT",
+ CreationInfo: getCreationInfo(t),
+ Packages: []*spdx.Package{
+ {
+ PackageName: "testdata-notice-highest.apex.meta_lic",
+ PackageVersion: "NOASSERTION",
+ PackageDownloadLocation: "NOASSERTION",
+ PackageSPDXIdentifier: common.ElementID("testdata-notice-highest.apex.meta_lic"),
+ PackageLicenseConcluded: "LicenseRef-testdata-firstparty-FIRST_PARTY_LICENSE",
+ },
+ {
+ PackageName: "testdata-notice-bin-bin1.meta_lic",
+ PackageVersion: "NOASSERTION",
+ PackageDownloadLocation: "NOASSERTION",
+ PackageSPDXIdentifier: common.ElementID("testdata-notice-bin-bin1.meta_lic"),
+ PackageLicenseConcluded: "LicenseRef-testdata-firstparty-FIRST_PARTY_LICENSE",
+ },
+ {
+ PackageName: "testdata-notice-bin-bin2.meta_lic",
+ PackageVersion: "NOASSERTION",
+ PackageDownloadLocation: "NOASSERTION",
+ PackageSPDXIdentifier: common.ElementID("testdata-notice-bin-bin2.meta_lic"),
+ PackageLicenseConcluded: "LicenseRef-testdata-firstparty-FIRST_PARTY_LICENSE",
+ },
+ {
+ PackageName: "testdata-notice-lib-liba.so.meta_lic",
+ PackageVersion: "NOASSERTION",
+ PackageDownloadLocation: "NOASSERTION",
+ PackageSPDXIdentifier: common.ElementID("testdata-notice-lib-liba.so.meta_lic"),
+ PackageLicenseConcluded: "LicenseRef-testdata-notice-NOTICE_LICENSE",
+ },
+ {
+ PackageName: "testdata-notice-lib-libb.so.meta_lic",
+ PackageVersion: "NOASSERTION",
+ PackageDownloadLocation: "NOASSERTION",
+ PackageSPDXIdentifier: common.ElementID("testdata-notice-lib-libb.so.meta_lic"),
+ PackageLicenseConcluded: "LicenseRef-testdata-firstparty-FIRST_PARTY_LICENSE",
+ },
+ {
+ PackageName: "testdata-notice-lib-libc.a.meta_lic",
+ PackageVersion: "NOASSERTION",
+ PackageDownloadLocation: "NOASSERTION",
+ PackageSPDXIdentifier: common.ElementID("testdata-notice-lib-libc.a.meta_lic"),
+ PackageLicenseConcluded: "LicenseRef-testdata-notice-NOTICE_LICENSE",
+ },
+ {
+ PackageName: "testdata-notice-lib-libd.so.meta_lic",
+ PackageVersion: "NOASSERTION",
+ PackageDownloadLocation: "NOASSERTION",
+ PackageSPDXIdentifier: common.ElementID("testdata-notice-lib-libd.so.meta_lic"),
+ PackageLicenseConcluded: "LicenseRef-testdata-notice-NOTICE_LICENSE",
+ },
+ },
+ Relationships: []*spdx.Relationship{
+ {
+ RefA: common.MakeDocElementID("", "DOCUMENT"),
+ RefB: common.MakeDocElementID("", "testdata-notice-highest.apex.meta_lic"),
+ Relationship: "DESCRIBES",
+ },
+ {
+ RefA: common.MakeDocElementID("", "testdata-notice-highest.apex.meta_lic"),
+ RefB: common.MakeDocElementID("", "testdata-notice-bin-bin1.meta_lic"),
+ Relationship: "CONTAINS",
+ },
+ {
+ RefA: common.MakeDocElementID("", "testdata-notice-highest.apex.meta_lic"),
+ RefB: common.MakeDocElementID("", "testdata-notice-bin-bin2.meta_lic"),
+ Relationship: "CONTAINS",
+ },
+ {
+ RefA: common.MakeDocElementID("", "testdata-notice-highest.apex.meta_lic"),
+ RefB: common.MakeDocElementID("", "testdata-notice-lib-liba.so.meta_lic"),
+ Relationship: "CONTAINS",
+ },
+ {
+ RefA: common.MakeDocElementID("", "testdata-notice-highest.apex.meta_lic"),
+ RefB: common.MakeDocElementID("", "testdata-notice-lib-libb.so.meta_lic"),
+ Relationship: "CONTAINS",
+ },
+ {
+ RefA: common.MakeDocElementID("", "testdata-notice-bin-bin1.meta_lic"),
+ RefB: common.MakeDocElementID("", "testdata-notice-lib-liba.so.meta_lic"),
+ Relationship: "CONTAINS",
+ },
+ {
+ RefA: common.MakeDocElementID("", "testdata-notice-bin-bin1.meta_lic"),
+ RefB: common.MakeDocElementID("", "testdata-notice-lib-libc.a.meta_lic"),
+ Relationship: "CONTAINS",
+ },
+ {
+ RefA: common.MakeDocElementID("", "testdata-notice-lib-libb.so.meta_lic"),
+ RefB: common.MakeDocElementID("", "testdata-notice-bin-bin2.meta_lic"),
+ Relationship: "RUNTIME_DEPENDENCY_OF",
+ },
+ {
+ RefA: common.MakeDocElementID("", "testdata-notice-lib-libd.so.meta_lic"),
+ RefB: common.MakeDocElementID("", "testdata-notice-bin-bin2.meta_lic"),
+ Relationship: "RUNTIME_DEPENDENCY_OF",
+ },
+ },
+ OtherLicenses: []*spdx.OtherLicense{
+ {
+ LicenseIdentifier: "LicenseRef-testdata-firstparty-FIRST_PARTY_LICENSE",
+ ExtractedText: "&&&First Party License&&&\n",
+ LicenseName: "testdata-firstparty-FIRST_PARTY_LICENSE",
+ },
+ {
+ LicenseIdentifier: "LicenseRef-testdata-notice-NOTICE_LICENSE",
+ ExtractedText: "%%%Notice License%%%\n",
+ LicenseName: "testdata-notice-NOTICE_LICENSE",
+ },
+ },
},
expectedDeps: []string{
"testdata/firstparty/FIRST_PARTY_LICENSE",
@@ -411,65 +605,119 @@
condition: "notice",
name: "container",
roots: []string{"container.zip.meta_lic"},
- expectedOut: []matcher{
- spdxVersion{},
- spdxDataLicense{},
- spdxDocumentName{"Android"},
- spdxID{},
- spdxDocumentNameSpace{},
- spdxCreatorOrganization{},
- spdxCreatedTime{},
- packageTag{"testdata/notice/container.zip.meta_lic"},
- packageName{"testdata/notice/container.zip.meta_lic"},
- spdxPkgID{"testdata/notice/container.zip.meta_lic"},
- spdxPkgDownloadLocation{"NOASSERTION"},
- spdxPkgLicenseDeclared{"testdata-firstparty-FIRST_PARTY_LICENSE"},
- spdxRelationship{"DOCUMENT ", "testdata/notice/container.zip.meta_lic", "DESCRIBES"},
- packageTag{"testdata/notice/bin/bin1.meta_lic"},
- packageName{"testdata/notice/bin/bin1.meta_lic"},
- spdxPkgID{"testdata/notice/bin/bin1.meta_lic"},
- spdxPkgDownloadLocation{"NOASSERTION"},
- spdxPkgLicenseDeclared{"testdata-firstparty-FIRST_PARTY_LICENSE"},
- spdxRelationship{"Package-testdata/notice/container.zip.meta_lic ", "testdata/notice/bin/bin1.meta_lic", "CONTAINS"},
- packageTag{"testdata/notice/bin/bin2.meta_lic"},
- packageName{"testdata/notice/bin/bin2.meta_lic"},
- spdxPkgID{"testdata/notice/bin/bin2.meta_lic"},
- spdxPkgDownloadLocation{"NOASSERTION"},
- spdxPkgLicenseDeclared{"testdata-firstparty-FIRST_PARTY_LICENSE"},
- spdxRelationship{"Package-testdata/notice/container.zip.meta_lic ", "testdata/notice/bin/bin2.meta_lic", "CONTAINS"},
- packageTag{"testdata/notice/lib/liba.so.meta_lic"},
- packageName{"testdata/notice/lib/liba.so.meta_lic"},
- spdxPkgID{"testdata/notice/lib/liba.so.meta_lic"},
- spdxPkgDownloadLocation{"NOASSERTION"},
- spdxPkgLicenseDeclared{"testdata-notice-NOTICE_LICENSE"},
- spdxRelationship{"Package-testdata/notice/container.zip.meta_lic ", "testdata/notice/lib/liba.so.meta_lic", "CONTAINS"},
- packageTag{"testdata/notice/lib/libb.so.meta_lic"},
- packageName{"testdata/notice/lib/libb.so.meta_lic"},
- spdxPkgID{"testdata/notice/lib/libb.so.meta_lic"},
- spdxPkgDownloadLocation{"NOASSERTION"},
- spdxPkgLicenseDeclared{"testdata-firstparty-FIRST_PARTY_LICENSE"},
- spdxRelationship{"Package-testdata/notice/container.zip.meta_lic ", "testdata/notice/lib/libb.so.meta_lic", "CONTAINS"},
- spdxRelationship{"Package-testdata/notice/bin/bin1.meta_lic ", "testdata/notice/lib/liba.so.meta_lic", "CONTAINS"},
- packageTag{"testdata/notice/lib/libc.a.meta_lic"},
- packageName{"testdata/notice/lib/libc.a.meta_lic"},
- spdxPkgID{"testdata/notice/lib/libc.a.meta_lic"},
- spdxPkgDownloadLocation{"NOASSERTION"},
- spdxPkgLicenseDeclared{"testdata-notice-NOTICE_LICENSE"},
- spdxRelationship{"Package-testdata/notice/bin/bin1.meta_lic ", "testdata/notice/lib/libc.a.meta_lic", "CONTAINS"},
- spdxRelationship{"Package-testdata/notice/lib/libb.so.meta_lic ", "testdata/notice/bin/bin2.meta_lic", "RUNTIME_DEPENDENCY_OF"},
- packageTag{"testdata/notice/lib/libd.so.meta_lic"},
- packageName{"testdata/notice/lib/libd.so.meta_lic"},
- spdxPkgID{"testdata/notice/lib/libd.so.meta_lic"},
- spdxPkgDownloadLocation{"NOASSERTION"},
- spdxPkgLicenseDeclared{"testdata-notice-NOTICE_LICENSE"},
- spdxRelationship{"Package-testdata/notice/lib/libd.so.meta_lic ", "testdata/notice/bin/bin2.meta_lic", "RUNTIME_DEPENDENCY_OF"},
- spdxLicense{},
- spdxLicenseID{"testdata-firstparty-FIRST_PARTY_LICENSE"},
- spdxExtractedText{"&&&First Party License&&&"},
- spdxExtractedClosingText{},
- spdxLicenseID{"testdata-notice-NOTICE_LICENSE"},
- spdxExtractedText{"%%%Notice License%%%"},
- spdxExtractedClosingText{},
+ expectedOut: &spdx.Document{
+ SPDXIdentifier: "DOCUMENT",
+ CreationInfo: getCreationInfo(t),
+ Packages: []*spdx.Package{
+ {
+ PackageName: "testdata-notice-container.zip.meta_lic",
+ PackageVersion: "NOASSERTION",
+ PackageDownloadLocation: "NOASSERTION",
+ PackageSPDXIdentifier: common.ElementID("testdata-notice-container.zip.meta_lic"),
+ PackageLicenseConcluded: "LicenseRef-testdata-firstparty-FIRST_PARTY_LICENSE",
+ },
+ {
+ PackageName: "testdata-notice-bin-bin1.meta_lic",
+ PackageVersion: "NOASSERTION",
+ PackageDownloadLocation: "NOASSERTION",
+ PackageSPDXIdentifier: common.ElementID("testdata-notice-bin-bin1.meta_lic"),
+ PackageLicenseConcluded: "LicenseRef-testdata-firstparty-FIRST_PARTY_LICENSE",
+ },
+ {
+ PackageName: "testdata-notice-bin-bin2.meta_lic",
+ PackageVersion: "NOASSERTION",
+ PackageDownloadLocation: "NOASSERTION",
+ PackageSPDXIdentifier: common.ElementID("testdata-notice-bin-bin2.meta_lic"),
+ PackageLicenseConcluded: "LicenseRef-testdata-firstparty-FIRST_PARTY_LICENSE",
+ },
+ {
+ PackageName: "testdata-notice-lib-liba.so.meta_lic",
+ PackageVersion: "NOASSERTION",
+ PackageDownloadLocation: "NOASSERTION",
+ PackageSPDXIdentifier: common.ElementID("testdata-notice-lib-liba.so.meta_lic"),
+ PackageLicenseConcluded: "LicenseRef-testdata-notice-NOTICE_LICENSE",
+ },
+ {
+ PackageName: "testdata-notice-lib-libb.so.meta_lic",
+ PackageVersion: "NOASSERTION",
+ PackageDownloadLocation: "NOASSERTION",
+ PackageSPDXIdentifier: common.ElementID("testdata-notice-lib-libb.so.meta_lic"),
+ PackageLicenseConcluded: "LicenseRef-testdata-firstparty-FIRST_PARTY_LICENSE",
+ },
+ {
+ PackageName: "testdata-notice-lib-libc.a.meta_lic",
+ PackageVersion: "NOASSERTION",
+ PackageDownloadLocation: "NOASSERTION",
+ PackageSPDXIdentifier: common.ElementID("testdata-notice-lib-libc.a.meta_lic"),
+ PackageLicenseConcluded: "LicenseRef-testdata-notice-NOTICE_LICENSE",
+ },
+ {
+ PackageName: "testdata-notice-lib-libd.so.meta_lic",
+ PackageVersion: "NOASSERTION",
+ PackageDownloadLocation: "NOASSERTION",
+ PackageSPDXIdentifier: common.ElementID("testdata-notice-lib-libd.so.meta_lic"),
+ PackageLicenseConcluded: "LicenseRef-testdata-notice-NOTICE_LICENSE",
+ },
+ },
+ Relationships: []*spdx.Relationship{
+ {
+ RefA: common.MakeDocElementID("", "DOCUMENT"),
+ RefB: common.MakeDocElementID("", "testdata-notice-container.zip.meta_lic"),
+ Relationship: "DESCRIBES",
+ },
+ {
+ RefA: common.MakeDocElementID("", "testdata-notice-container.zip.meta_lic"),
+ RefB: common.MakeDocElementID("", "testdata-notice-bin-bin1.meta_lic"),
+ Relationship: "CONTAINS",
+ },
+ {
+ RefA: common.MakeDocElementID("", "testdata-notice-container.zip.meta_lic"),
+ RefB: common.MakeDocElementID("", "testdata-notice-bin-bin2.meta_lic"),
+ Relationship: "CONTAINS",
+ },
+ {
+ RefA: common.MakeDocElementID("", "testdata-notice-container.zip.meta_lic"),
+ RefB: common.MakeDocElementID("", "testdata-notice-lib-liba.so.meta_lic"),
+ Relationship: "CONTAINS",
+ },
+ {
+ RefA: common.MakeDocElementID("", "testdata-notice-container.zip.meta_lic"),
+ RefB: common.MakeDocElementID("", "testdata-notice-lib-libb.so.meta_lic"),
+ Relationship: "CONTAINS",
+ },
+ {
+ RefA: common.MakeDocElementID("", "testdata-notice-bin-bin1.meta_lic"),
+ RefB: common.MakeDocElementID("", "testdata-notice-lib-liba.so.meta_lic"),
+ Relationship: "CONTAINS",
+ },
+ {
+ RefA: common.MakeDocElementID("", "testdata-notice-bin-bin1.meta_lic"),
+ RefB: common.MakeDocElementID("", "testdata-notice-lib-libc.a.meta_lic"),
+ Relationship: "CONTAINS",
+ },
+ {
+ RefA: common.MakeDocElementID("", "testdata-notice-lib-libb.so.meta_lic"),
+ RefB: common.MakeDocElementID("", "testdata-notice-bin-bin2.meta_lic"),
+ Relationship: "RUNTIME_DEPENDENCY_OF",
+ },
+ {
+ RefA: common.MakeDocElementID("", "testdata-notice-lib-libd.so.meta_lic"),
+ RefB: common.MakeDocElementID("", "testdata-notice-bin-bin2.meta_lic"),
+ Relationship: "RUNTIME_DEPENDENCY_OF",
+ },
+ },
+ OtherLicenses: []*spdx.OtherLicense{
+ {
+ LicenseIdentifier: "LicenseRef-testdata-firstparty-FIRST_PARTY_LICENSE",
+ ExtractedText: "&&&First Party License&&&\n",
+ LicenseName: "testdata-firstparty-FIRST_PARTY_LICENSE",
+ },
+ {
+ LicenseIdentifier: "LicenseRef-testdata-notice-NOTICE_LICENSE",
+ ExtractedText: "%%%Notice License%%%\n",
+ LicenseName: "testdata-notice-NOTICE_LICENSE",
+ },
+ },
},
expectedDeps: []string{
"testdata/firstparty/FIRST_PARTY_LICENSE",
@@ -487,45 +735,73 @@
condition: "notice",
name: "application",
roots: []string{"application.meta_lic"},
- expectedOut: []matcher{
- spdxVersion{},
- spdxDataLicense{},
- spdxDocumentName{"Android"},
- spdxID{},
- spdxDocumentNameSpace{},
- spdxCreatorOrganization{},
- spdxCreatedTime{},
- packageTag{"testdata/notice/application.meta_lic"},
- packageName{"testdata/notice/application.meta_lic"},
- spdxPkgID{"testdata/notice/application.meta_lic"},
- spdxPkgDownloadLocation{"NOASSERTION"},
- spdxPkgLicenseDeclared{"testdata-firstparty-FIRST_PARTY_LICENSE"},
- spdxRelationship{"DOCUMENT ", "testdata-notice-application.meta_lic", "DESCRIBES"},
- packageTag{"testdata/notice/bin/bin3.meta_lic"},
- packageName{"testdata/notice/bin/bin3.meta_lic"},
- spdxPkgID{"testdata/notice/bin/bin3.meta_lic"},
- spdxPkgDownloadLocation{"NOASSERTION"},
- spdxPkgLicenseDeclared{"testdata-notice-NOTICE_LICENSE"},
- spdxRelationship{"Package-testdata-notice-bin-bin3.meta_lic ", "testdata/notice/application.meta_lic", "BUILD_TOOL_OF"},
- packageTag{"testdata/notice/lib/liba.so.meta_lic"},
- packageName{"testdata/notice/lib/liba.so.meta_lic"},
- spdxPkgID{"testdata/notice/lib/liba.so.meta_lic"},
- spdxPkgDownloadLocation{"NOASSERTION"},
- spdxPkgLicenseDeclared{"testdata-notice-NOTICE_LICENSE"},
- spdxRelationship{"Package-testdata/notice/application.meta_lic ", "testdata-notice-lib-liba.so.meta_lic", "CONTAINS"},
- packageTag{"testdata/notice/lib/libb.so.meta_lic"},
- packageName{"testdata/notice/lib/libb.so.meta_lic"},
- spdxPkgID{"testdata/notice/lib/libb.so.meta_lic"},
- spdxPkgDownloadLocation{"NOASSERTION"},
- spdxPkgLicenseDeclared{"testdata-firstparty-FIRST_PARTY_LICENSE"},
- spdxRelationship{"Package-testdata-notice-lib-libb.so.meta_lic ", "testdata/notice/application.meta_lic", "RUNTIME_DEPENDENCY_OF"},
- spdxLicense{},
- spdxLicenseID{"testdata-firstparty-FIRST_PARTY_LICENSE"},
- spdxExtractedText{"&&&First Party License&&&"},
- spdxExtractedClosingText{},
- spdxLicenseID{"testdata-notice-NOTICE_LICENSE"},
- spdxExtractedText{"%%%Notice License%%%"},
- spdxExtractedClosingText{},
+ expectedOut: &spdx.Document{
+ SPDXIdentifier: "DOCUMENT",
+ CreationInfo: getCreationInfo(t),
+ Packages: []*spdx.Package{
+ {
+ PackageName: "testdata-notice-application.meta_lic",
+ PackageVersion: "NOASSERTION",
+ PackageDownloadLocation: "NOASSERTION",
+ PackageSPDXIdentifier: common.ElementID("testdata-notice-application.meta_lic"),
+ PackageLicenseConcluded: "LicenseRef-testdata-firstparty-FIRST_PARTY_LICENSE",
+ },
+ {
+ PackageName: "testdata-notice-bin-bin3.meta_lic",
+ PackageVersion: "NOASSERTION",
+ PackageDownloadLocation: "NOASSERTION",
+ PackageSPDXIdentifier: common.ElementID("testdata-notice-bin-bin3.meta_lic"),
+ PackageLicenseConcluded: "LicenseRef-testdata-notice-NOTICE_LICENSE",
+ },
+ {
+ PackageName: "testdata-notice-lib-liba.so.meta_lic",
+ PackageVersion: "NOASSERTION",
+ PackageDownloadLocation: "NOASSERTION",
+ PackageSPDXIdentifier: common.ElementID("testdata-notice-lib-liba.so.meta_lic"),
+ PackageLicenseConcluded: "LicenseRef-testdata-notice-NOTICE_LICENSE",
+ },
+ {
+ PackageName: "testdata-notice-lib-libb.so.meta_lic",
+ PackageVersion: "NOASSERTION",
+ PackageDownloadLocation: "NOASSERTION",
+ PackageSPDXIdentifier: common.ElementID("testdata-notice-lib-libb.so.meta_lic"),
+ PackageLicenseConcluded: "LicenseRef-testdata-firstparty-FIRST_PARTY_LICENSE",
+ },
+ },
+ Relationships: []*spdx.Relationship{
+ {
+ RefA: common.MakeDocElementID("", "DOCUMENT"),
+ RefB: common.MakeDocElementID("", "testdata-notice-application.meta_lic"),
+ Relationship: "DESCRIBES",
+ },
+ {
+ RefA: common.MakeDocElementID("", "testdata-notice-bin-bin3.meta_lic"),
+ RefB: common.MakeDocElementID("", "testdata-notice-application.meta_lic"),
+ Relationship: "BUILD_TOOL_OF",
+ },
+ {
+ RefA: common.MakeDocElementID("", "testdata-notice-application.meta_lic"),
+ RefB: common.MakeDocElementID("", "testdata-notice-lib-liba.so.meta_lic"),
+ Relationship: "CONTAINS",
+ },
+ {
+ RefA: common.MakeDocElementID("", "testdata-notice-lib-libb.so.meta_lic"),
+ RefB: common.MakeDocElementID("", "testdata-notice-application.meta_lic"),
+ Relationship: "RUNTIME_DEPENDENCY_OF",
+ },
+ },
+ OtherLicenses: []*spdx.OtherLicense{
+ {
+ LicenseIdentifier: "LicenseRef-testdata-firstparty-FIRST_PARTY_LICENSE",
+ ExtractedText: "&&&First Party License&&&\n",
+ LicenseName: "testdata-firstparty-FIRST_PARTY_LICENSE",
+ },
+ {
+ LicenseIdentifier: "LicenseRef-testdata-notice-NOTICE_LICENSE",
+ ExtractedText: "%%%Notice License%%%\n",
+ LicenseName: "testdata-notice-NOTICE_LICENSE",
+ },
+ },
},
expectedDeps: []string{
"testdata/firstparty/FIRST_PARTY_LICENSE",
@@ -540,39 +816,61 @@
condition: "notice",
name: "binary",
roots: []string{"bin/bin1.meta_lic"},
- expectedOut: []matcher{
- spdxVersion{},
- spdxDataLicense{},
- spdxDocumentName{"Android"},
- spdxID{},
- spdxDocumentNameSpace{},
- spdxCreatorOrganization{},
- spdxCreatedTime{},
- packageTag{"testdata/notice/bin/bin1.meta_lic"},
- packageName{"testdata/notice/bin/bin1.meta_lic"},
- spdxPkgID{"testdata/notice/bin/bin1.meta_lic"},
- spdxPkgDownloadLocation{"NOASSERTION"},
- spdxPkgLicenseDeclared{"testdata-firstparty-FIRST_PARTY_LICENSE"},
- spdxRelationship{"DOCUMENT ", "testdata/notice/bin/bin1.meta_lic", "DESCRIBES"},
- packageTag{"testdata/notice/lib/liba.so.meta_lic"},
- packageName{"testdata/notice/lib/liba.so.meta_lic"},
- spdxPkgID{"testdata/notice/lib/liba.so.meta_lic"},
- spdxPkgDownloadLocation{"NOASSERTION"},
- spdxPkgLicenseDeclared{"testdata-notice-NOTICE_LICENSE"},
- spdxRelationship{"Package-testdata/notice/bin/bin1.meta_lic ", "testdata/notice/lib/liba.so.meta_lic", "CONTAINS"},
- packageTag{"testdata/notice/lib/libc.a.meta_lic"},
- packageName{"testdata/notice/lib/libc.a.meta_lic"},
- spdxPkgID{"testdata/notice/lib/libc.a.meta_lic"},
- spdxPkgDownloadLocation{"NOASSERTION"},
- spdxPkgLicenseDeclared{"testdata-notice-NOTICE_LICENSE"},
- spdxRelationship{"Package-testdata/notice/bin/bin1.meta_lic ", "testdata/notice/lib/libc.a.meta_lic", "CONTAINS"},
- spdxLicense{},
- spdxLicenseID{"testdata-firstparty-FIRST_PARTY_LICENSE"},
- spdxExtractedText{"&&&First Party License&&&"},
- spdxExtractedClosingText{},
- spdxLicenseID{"testdata-notice-NOTICE_LICENSE"},
- spdxExtractedText{"%%%Notice License%%%"},
- spdxExtractedClosingText{},
+ expectedOut: &spdx.Document{
+ SPDXIdentifier: "DOCUMENT",
+ CreationInfo: getCreationInfo(t),
+ Packages: []*spdx.Package{
+ {
+ PackageName: "testdata-notice-bin-bin1.meta_lic",
+ PackageVersion: "NOASSERTION",
+ PackageDownloadLocation: "NOASSERTION",
+ PackageSPDXIdentifier: common.ElementID("testdata-notice-bin-bin1.meta_lic"),
+ PackageLicenseConcluded: "LicenseRef-testdata-firstparty-FIRST_PARTY_LICENSE",
+ },
+ {
+ PackageName: "testdata-notice-lib-liba.so.meta_lic",
+ PackageVersion: "NOASSERTION",
+ PackageDownloadLocation: "NOASSERTION",
+ PackageSPDXIdentifier: common.ElementID("testdata-notice-lib-liba.so.meta_lic"),
+ PackageLicenseConcluded: "LicenseRef-testdata-notice-NOTICE_LICENSE",
+ },
+ {
+ PackageName: "testdata-notice-lib-libc.a.meta_lic",
+ PackageVersion: "NOASSERTION",
+ PackageDownloadLocation: "NOASSERTION",
+ PackageSPDXIdentifier: common.ElementID("testdata-notice-lib-libc.a.meta_lic"),
+ PackageLicenseConcluded: "LicenseRef-testdata-notice-NOTICE_LICENSE",
+ },
+ },
+ Relationships: []*spdx.Relationship{
+ {
+ RefA: common.MakeDocElementID("", "DOCUMENT"),
+ RefB: common.MakeDocElementID("", "testdata-notice-bin-bin1.meta_lic"),
+ Relationship: "DESCRIBES",
+ },
+ {
+ RefA: common.MakeDocElementID("", "testdata-notice-bin-bin1.meta_lic"),
+ RefB: common.MakeDocElementID("", "testdata-notice-lib-liba.so.meta_lic"),
+ Relationship: "CONTAINS",
+ },
+ {
+ RefA: common.MakeDocElementID("", "testdata-notice-bin-bin1.meta_lic"),
+ RefB: common.MakeDocElementID("", "testdata-notice-lib-libc.a.meta_lic"),
+ Relationship: "CONTAINS",
+ },
+ },
+ OtherLicenses: []*spdx.OtherLicense{
+ {
+ LicenseIdentifier: "LicenseRef-testdata-firstparty-FIRST_PARTY_LICENSE",
+ ExtractedText: "&&&First Party License&&&\n",
+ LicenseName: "testdata-firstparty-FIRST_PARTY_LICENSE",
+ },
+ {
+ LicenseIdentifier: "LicenseRef-testdata-notice-NOTICE_LICENSE",
+ ExtractedText: "%%%Notice License%%%\n",
+ LicenseName: "testdata-notice-NOTICE_LICENSE",
+ },
+ },
},
expectedDeps: []string{
"testdata/firstparty/FIRST_PARTY_LICENSE",
@@ -586,24 +884,32 @@
condition: "notice",
name: "library",
roots: []string{"lib/libd.so.meta_lic"},
- expectedOut: []matcher{
- spdxVersion{},
- spdxDataLicense{},
- spdxDocumentName{"Android"},
- spdxID{},
- spdxDocumentNameSpace{},
- spdxCreatorOrganization{},
- spdxCreatedTime{},
- packageTag{"testdata/notice/lib/libd.so.meta_lic"},
- packageName{"testdata/notice/lib/libd.so.meta_lic"},
- spdxPkgID{"testdata/notice/lib/libd.so.meta_lic"},
- spdxPkgDownloadLocation{"NOASSERTION"},
- spdxPkgLicenseDeclared{"testdata-notice-NOTICE_LICENSE"},
- spdxRelationship{"DOCUMENT ", "testdata/notice/lib/libd.so.meta_lic", "DESCRIBES"},
- spdxLicense{},
- spdxLicenseID{"testdata-notice-NOTICE_LICENSE"},
- spdxExtractedText{"%%%Notice License%%%"},
- spdxExtractedClosingText{},
+ expectedOut: &spdx.Document{
+ SPDXIdentifier: "DOCUMENT",
+ CreationInfo: getCreationInfo(t),
+ Packages: []*spdx.Package{
+ {
+ PackageName: "testdata-notice-lib-libd.so.meta_lic",
+ PackageVersion: "NOASSERTION",
+ PackageDownloadLocation: "NOASSERTION",
+ PackageSPDXIdentifier: common.ElementID("testdata-notice-lib-libd.so.meta_lic"),
+ PackageLicenseConcluded: "LicenseRef-testdata-notice-NOTICE_LICENSE",
+ },
+ },
+ Relationships: []*spdx.Relationship{
+ {
+ RefA: common.MakeDocElementID("", "DOCUMENT"),
+ RefB: common.MakeDocElementID("", "testdata-notice-lib-libd.so.meta_lic"),
+ Relationship: "DESCRIBES",
+ },
+ },
+ OtherLicenses: []*spdx.OtherLicense{
+ {
+ LicenseIdentifier: "LicenseRef-testdata-notice-NOTICE_LICENSE",
+ ExtractedText: "%%%Notice License%%%\n",
+ LicenseName: "testdata-notice-NOTICE_LICENSE",
+ },
+ },
},
expectedDeps: []string{
"testdata/notice/NOTICE_LICENSE",
@@ -614,68 +920,124 @@
condition: "reciprocal",
name: "apex",
roots: []string{"highest.apex.meta_lic"},
- expectedOut: []matcher{
- spdxVersion{},
- spdxDataLicense{},
- spdxDocumentName{"Android"},
- spdxID{},
- spdxDocumentNameSpace{},
- spdxCreatorOrganization{},
- spdxCreatedTime{},
- packageTag{"testdata/reciprocal/highest.apex.meta_lic"},
- packageName{"testdata/reciprocal/highest.apex.meta_lic"},
- spdxPkgID{"testdata/reciprocal/highest.apex.meta_lic"},
- spdxPkgDownloadLocation{"NOASSERTION"},
- spdxPkgLicenseDeclared{"testdata-firstparty-FIRST_PARTY_LICENSE"},
- spdxRelationship{"DOCUMENT ", "testdata/reciprocal/highest.apex.meta_lic", "DESCRIBES"},
- packageTag{"testdata/reciprocal/bin/bin1.meta_lic"},
- packageName{"testdata/reciprocal/bin/bin1.meta_lic"},
- spdxPkgID{"testdata/reciprocal/bin/bin1.meta_lic"},
- spdxPkgDownloadLocation{"NOASSERTION"},
- spdxPkgLicenseDeclared{"testdata-firstparty-FIRST_PARTY_LICENSE"},
- spdxRelationship{"Package-testdata/reciprocal/highest.apex.meta_lic ", "testdata-reciprocal-bin-bin1.meta_lic", "CONTAINS"},
- packageTag{"testdata/reciprocal/bin/bin2.meta_lic"},
- packageName{"testdata/reciprocal/bin/bin2.meta_lic"},
- spdxPkgID{"testdata/reciprocal/bin/bin2.meta_lic"},
- spdxPkgDownloadLocation{"NOASSERTION"},
- spdxPkgLicenseDeclared{"testdata-firstparty-FIRST_PARTY_LICENSE"},
- spdxRelationship{"Package-testdata/reciprocal/highest.apex.meta_lic ", "testdata-reciprocal-bin-bin2.meta_lic", "CONTAINS"},
- packageTag{"testdata/reciprocal/lib/liba.so.meta_lic"},
- packageName{"testdata/reciprocal/lib/liba.so.meta_lic"},
- spdxPkgID{"testdata/reciprocal/lib/liba.so.meta_lic"},
- spdxPkgDownloadLocation{"NOASSERTION"},
- spdxPkgLicenseDeclared{"testdata-reciprocal-RECIPROCAL_LICENSE"},
- spdxRelationship{"Package-testdata/reciprocal/highest.apex.meta_lic ", "testdata/reciprocal/lib/liba.so.meta_lic", "CONTAINS"},
- packageTag{"testdata/reciprocal/lib/libb.so.meta_lic"},
- packageName{"testdata/reciprocal/lib/libb.so.meta_lic"},
- spdxPkgID{"testdata/reciprocal/lib/libb.so.meta_lic"},
- spdxPkgDownloadLocation{"NOASSERTION"},
- spdxPkgLicenseDeclared{"testdata-firstparty-FIRST_PARTY_LICENSE"},
- spdxRelationship{"Package-testdata/reciprocal/highest.apex.meta_lic ", "testdata/reciprocal/lib/libb.so.meta_lic", "CONTAINS"},
- spdxRelationship{"Package-testdata/reciprocal/bin/bin1.meta_lic ", "testdata/reciprocal/lib/liba.so.meta_lic", "CONTAINS"},
- packageTag{"testdata/reciprocal/lib/libc.a.meta_lic"},
- packageName{"testdata/reciprocal/lib/libc.a.meta_lic"},
- spdxPkgID{"testdata/reciprocal/lib/libc.a.meta_lic"},
- spdxPkgDownloadLocation{"NOASSERTION"},
- spdxPkgLicenseDeclared{"testdata-reciprocal-RECIPROCAL_LICENSE"},
- spdxRelationship{"Package-testdata/reciprocal/bin/bin1.meta_lic ", "testdata/reciprocal/lib/libc.a.meta_lic", "CONTAINS"},
- spdxRelationship{"Package-testdata/reciprocal/lib/libb.so.meta_lic ", "testdata/reciprocal/bin/bin2.meta_lic", "RUNTIME_DEPENDENCY_OF"},
- packageTag{"testdata/reciprocal/lib/libd.so.meta_lic"},
- packageName{"testdata/reciprocal/lib/libd.so.meta_lic"},
- spdxPkgID{"testdata/reciprocal/lib/libd.so.meta_lic"},
- spdxPkgDownloadLocation{"NOASSERTION"},
- spdxPkgLicenseDeclared{"testdata-notice-NOTICE_LICENSE"},
- spdxRelationship{"Package-testdata/reciprocal/lib/libd.so.meta_lic ", "testdata/reciprocal/bin/bin2.meta_lic", "RUNTIME_DEPENDENCY_OF"},
- spdxLicense{},
- spdxLicenseID{"testdata-firstparty-FIRST_PARTY_LICENSE"},
- spdxExtractedText{"&&&First Party License&&&"},
- spdxExtractedClosingText{},
- spdxLicenseID{"testdata-notice-NOTICE_LICENSE"},
- spdxExtractedText{"%%%Notice License%%%"},
- spdxExtractedClosingText{},
- spdxLicenseID{"testdata-reciprocal-RECIPROCAL_LICENSE"},
- spdxExtractedText{"$$$Reciprocal License$$$"},
- spdxExtractedClosingText{},
+ expectedOut: &spdx.Document{
+ SPDXIdentifier: "DOCUMENT",
+ CreationInfo: getCreationInfo(t),
+ Packages: []*spdx.Package{
+ {
+ PackageName: "testdata-reciprocal-highest.apex.meta_lic",
+ PackageVersion: "NOASSERTION",
+ PackageDownloadLocation: "NOASSERTION",
+ PackageSPDXIdentifier: common.ElementID("testdata-reciprocal-highest.apex.meta_lic"),
+ PackageLicenseConcluded: "LicenseRef-testdata-firstparty-FIRST_PARTY_LICENSE",
+ },
+ {
+ PackageName: "testdata-reciprocal-bin-bin1.meta_lic",
+ PackageVersion: "NOASSERTION",
+ PackageDownloadLocation: "NOASSERTION",
+ PackageSPDXIdentifier: common.ElementID("testdata-reciprocal-bin-bin1.meta_lic"),
+ PackageLicenseConcluded: "LicenseRef-testdata-firstparty-FIRST_PARTY_LICENSE",
+ },
+ {
+ PackageName: "testdata-reciprocal-bin-bin2.meta_lic",
+ PackageVersion: "NOASSERTION",
+ PackageDownloadLocation: "NOASSERTION",
+ PackageSPDXIdentifier: common.ElementID("testdata-reciprocal-bin-bin2.meta_lic"),
+ PackageLicenseConcluded: "LicenseRef-testdata-firstparty-FIRST_PARTY_LICENSE",
+ },
+ {
+ PackageName: "testdata-reciprocal-lib-liba.so.meta_lic",
+ PackageVersion: "NOASSERTION",
+ PackageDownloadLocation: "NOASSERTION",
+ PackageSPDXIdentifier: common.ElementID("testdata-reciprocal-lib-liba.so.meta_lic"),
+ PackageLicenseConcluded: "LicenseRef-testdata-reciprocal-RECIPROCAL_LICENSE",
+ },
+ {
+ PackageName: "testdata-reciprocal-lib-libb.so.meta_lic",
+ PackageVersion: "NOASSERTION",
+ PackageDownloadLocation: "NOASSERTION",
+ PackageSPDXIdentifier: common.ElementID("testdata-reciprocal-lib-libb.so.meta_lic"),
+ PackageLicenseConcluded: "LicenseRef-testdata-firstparty-FIRST_PARTY_LICENSE",
+ },
+ {
+ PackageName: "testdata-reciprocal-lib-libc.a.meta_lic",
+ PackageVersion: "NOASSERTION",
+ PackageDownloadLocation: "NOASSERTION",
+ PackageSPDXIdentifier: common.ElementID("testdata-reciprocal-lib-libc.a.meta_lic"),
+ PackageLicenseConcluded: "LicenseRef-testdata-reciprocal-RECIPROCAL_LICENSE",
+ },
+ {
+ PackageName: "testdata-reciprocal-lib-libd.so.meta_lic",
+ PackageVersion: "NOASSERTION",
+ PackageDownloadLocation: "NOASSERTION",
+ PackageSPDXIdentifier: common.ElementID("testdata-reciprocal-lib-libd.so.meta_lic"),
+ PackageLicenseConcluded: "LicenseRef-testdata-notice-NOTICE_LICENSE",
+ },
+ },
+ Relationships: []*spdx.Relationship{
+ {
+ RefA: common.MakeDocElementID("", "DOCUMENT"),
+ RefB: common.MakeDocElementID("", "testdata-reciprocal-highest.apex.meta_lic"),
+ Relationship: "DESCRIBES",
+ },
+ {
+ RefA: common.MakeDocElementID("", "testdata-reciprocal-highest.apex.meta_lic"),
+ RefB: common.MakeDocElementID("", "testdata-reciprocal-bin-bin1.meta_lic"),
+ Relationship: "CONTAINS",
+ },
+ {
+ RefA: common.MakeDocElementID("", "testdata-reciprocal-highest.apex.meta_lic"),
+ RefB: common.MakeDocElementID("", "testdata-reciprocal-bin-bin2.meta_lic"),
+ Relationship: "CONTAINS",
+ },
+ {
+ RefA: common.MakeDocElementID("", "testdata-reciprocal-highest.apex.meta_lic"),
+ RefB: common.MakeDocElementID("", "testdata-reciprocal-lib-liba.so.meta_lic"),
+ Relationship: "CONTAINS",
+ },
+ {
+ RefA: common.MakeDocElementID("", "testdata-reciprocal-highest.apex.meta_lic"),
+ RefB: common.MakeDocElementID("", "testdata-reciprocal-lib-libb.so.meta_lic"),
+ Relationship: "CONTAINS",
+ },
+ {
+ RefA: common.MakeDocElementID("", "testdata-reciprocal-bin-bin1.meta_lic"),
+ RefB: common.MakeDocElementID("", "testdata-reciprocal-lib-liba.so.meta_lic"),
+ Relationship: "CONTAINS",
+ },
+ {
+ RefA: common.MakeDocElementID("", "testdata-reciprocal-bin-bin1.meta_lic"),
+ RefB: common.MakeDocElementID("", "testdata-reciprocal-lib-libc.a.meta_lic"),
+ Relationship: "CONTAINS",
+ },
+ {
+ RefA: common.MakeDocElementID("", "testdata-reciprocal-lib-libb.so.meta_lic"),
+ RefB: common.MakeDocElementID("", "testdata-reciprocal-bin-bin2.meta_lic"),
+ Relationship: "RUNTIME_DEPENDENCY_OF",
+ },
+ {
+ RefA: common.MakeDocElementID("", "testdata-reciprocal-lib-libd.so.meta_lic"),
+ RefB: common.MakeDocElementID("", "testdata-reciprocal-bin-bin2.meta_lic"),
+ Relationship: "RUNTIME_DEPENDENCY_OF",
+ },
+ },
+ OtherLicenses: []*spdx.OtherLicense{
+ {
+ LicenseIdentifier: "LicenseRef-testdata-firstparty-FIRST_PARTY_LICENSE",
+ ExtractedText: "&&&First Party License&&&\n",
+ LicenseName: "testdata-firstparty-FIRST_PARTY_LICENSE",
+ },
+ {
+ LicenseIdentifier: "LicenseRef-testdata-notice-NOTICE_LICENSE",
+ ExtractedText: "%%%Notice License%%%\n",
+ LicenseName: "testdata-notice-NOTICE_LICENSE",
+ },
+ {
+ LicenseIdentifier: "LicenseRef-testdata-reciprocal-RECIPROCAL_LICENSE",
+ ExtractedText: "$$$Reciprocal License$$$\n",
+ LicenseName: "testdata-reciprocal-RECIPROCAL_LICENSE",
+ },
+ },
},
expectedDeps: []string{
"testdata/firstparty/FIRST_PARTY_LICENSE",
@@ -692,130 +1054,80 @@
},
{
condition: "reciprocal",
- name: "container",
- roots: []string{"container.zip.meta_lic"},
- expectedOut: []matcher{
- spdxVersion{},
- spdxDataLicense{},
- spdxDocumentName{"Android"},
- spdxID{},
- spdxDocumentNameSpace{},
- spdxCreatorOrganization{},
- spdxCreatedTime{},
- packageTag{"testdata/reciprocal/container.zip.meta_lic"},
- packageName{"testdata/reciprocal/container.zip.meta_lic"},
- spdxPkgID{"testdata/reciprocal/container.zip.meta_lic"},
- spdxPkgDownloadLocation{"NOASSERTION"},
- spdxPkgLicenseDeclared{"testdata-firstparty-FIRST_PARTY_LICENSE"},
- spdxRelationship{"DOCUMENT ", "testdata/reciprocal/container.zip.meta_lic", "DESCRIBES"},
- packageTag{"testdata/reciprocal/bin/bin1.meta_lic"},
- packageName{"testdata/reciprocal/bin/bin1.meta_lic"},
- spdxPkgID{"testdata/reciprocal/bin/bin1.meta_lic"},
- spdxPkgDownloadLocation{"NOASSERTION"},
- spdxPkgLicenseDeclared{"testdata-firstparty-FIRST_PARTY_LICENSE"},
- spdxRelationship{"Package-testdata/reciprocal/container.zip.meta_lic ", "testdata-reciprocal-bin-bin1.meta_lic", "CONTAINS"},
- packageTag{"testdata/reciprocal/bin/bin2.meta_lic"},
- packageName{"testdata/reciprocal/bin/bin2.meta_lic"},
- spdxPkgID{"testdata/reciprocal/bin/bin2.meta_lic"},
- spdxPkgDownloadLocation{"NOASSERTION"},
- spdxPkgLicenseDeclared{"testdata-firstparty-FIRST_PARTY_LICENSE"},
- spdxRelationship{"Package-testdata/reciprocal/container.zip.meta_lic ", "testdata-reciprocal-bin-bin2.meta_lic", "CONTAINS"},
- packageTag{"testdata/reciprocal/lib/liba.so.meta_lic"},
- packageName{"testdata/reciprocal/lib/liba.so.meta_lic"},
- spdxPkgID{"testdata/reciprocal/lib/liba.so.meta_lic"},
- spdxPkgDownloadLocation{"NOASSERTION"},
- spdxPkgLicenseDeclared{"testdata-reciprocal-RECIPROCAL_LICENSE"},
- spdxRelationship{"Package-testdata/reciprocal/container.zip.meta_lic ", "testdata/reciprocal/lib/liba.so.meta_lic", "CONTAINS"},
- packageTag{"testdata/reciprocal/lib/libb.so.meta_lic"},
- packageName{"testdata/reciprocal/lib/libb.so.meta_lic"},
- spdxPkgID{"testdata/reciprocal/lib/libb.so.meta_lic"},
- spdxPkgDownloadLocation{"NOASSERTION"},
- spdxPkgLicenseDeclared{"testdata-firstparty-FIRST_PARTY_LICENSE"},
- spdxRelationship{"Package-testdata/reciprocal/container.zip.meta_lic ", "testdata/reciprocal/lib/libb.so.meta_lic", "CONTAINS"},
- spdxRelationship{"Package-testdata/reciprocal/bin/bin1.meta_lic ", "testdata/reciprocal/lib/liba.so.meta_lic", "CONTAINS"},
- packageTag{"testdata/reciprocal/lib/libc.a.meta_lic"},
- packageName{"testdata/reciprocal/lib/libc.a.meta_lic"},
- spdxPkgID{"testdata/reciprocal/lib/libc.a.meta_lic"},
- spdxPkgDownloadLocation{"NOASSERTION"},
- spdxPkgLicenseDeclared{"testdata-reciprocal-RECIPROCAL_LICENSE"},
- spdxRelationship{"Package-testdata/reciprocal/bin/bin1.meta_lic ", "testdata/reciprocal/lib/libc.a.meta_lic", "CONTAINS"},
- spdxRelationship{"Package-testdata/reciprocal/lib/libb.so.meta_lic ", "testdata/reciprocal/bin/bin2.meta_lic", "RUNTIME_DEPENDENCY_OF"},
- packageTag{"testdata/reciprocal/lib/libd.so.meta_lic"},
- packageName{"testdata/reciprocal/lib/libd.so.meta_lic"},
- spdxPkgID{"testdata/reciprocal/lib/libd.so.meta_lic"},
- spdxPkgDownloadLocation{"NOASSERTION"},
- spdxPkgLicenseDeclared{"testdata-notice-NOTICE_LICENSE"},
- spdxRelationship{"Package-testdata/reciprocal/lib/libd.so.meta_lic ", "testdata/reciprocal/bin/bin2.meta_lic", "RUNTIME_DEPENDENCY_OF"},
- spdxLicense{},
- spdxLicenseID{"testdata-firstparty-FIRST_PARTY_LICENSE"},
- spdxExtractedText{"&&&First Party License&&&"},
- spdxExtractedClosingText{},
- spdxLicenseID{"testdata-notice-NOTICE_LICENSE"},
- spdxExtractedText{"%%%Notice License%%%"},
- spdxExtractedClosingText{},
- spdxLicenseID{"testdata-reciprocal-RECIPROCAL_LICENSE"},
- spdxExtractedText{"$$$Reciprocal License$$$"},
- spdxExtractedClosingText{},
- },
- expectedDeps: []string{
- "testdata/firstparty/FIRST_PARTY_LICENSE",
- "testdata/notice/NOTICE_LICENSE",
- "testdata/reciprocal/RECIPROCAL_LICENSE",
- "testdata/reciprocal/bin/bin1.meta_lic",
- "testdata/reciprocal/bin/bin2.meta_lic",
- "testdata/reciprocal/container.zip.meta_lic",
- "testdata/reciprocal/lib/liba.so.meta_lic",
- "testdata/reciprocal/lib/libb.so.meta_lic",
- "testdata/reciprocal/lib/libc.a.meta_lic",
- "testdata/reciprocal/lib/libd.so.meta_lic",
- },
- },
- {
- condition: "reciprocal",
name: "application",
roots: []string{"application.meta_lic"},
- expectedOut: []matcher{
- spdxVersion{},
- spdxDataLicense{},
- spdxDocumentName{"Android"},
- spdxID{},
- spdxDocumentNameSpace{},
- spdxCreatorOrganization{},
- spdxCreatedTime{},
- packageTag{"testdata/reciprocal/application.meta_lic"},
- packageName{"testdata/reciprocal/application.meta_lic"},
- spdxPkgID{"testdata/reciprocal/application.meta_lic"},
- spdxPkgDownloadLocation{"NOASSERTION"},
- spdxPkgLicenseDeclared{"testdata-firstparty-FIRST_PARTY_LICENSE"},
- spdxRelationship{"DOCUMENT ", "testdata/reciprocal/application.meta_lic", "DESCRIBES"},
- packageTag{"testdata/reciprocal/bin/bin3.meta_lic"},
- packageName{"testdata/reciprocal/bin/bin3.meta_lic"},
- spdxPkgID{"testdata/reciprocal/bin/bin3.meta_lic"},
- spdxPkgDownloadLocation{"NOASSERTION"},
- spdxPkgLicenseDeclared{"testdata-notice-NOTICE_LICENSE"},
- spdxRelationship{"Package-testdata-reciprocal-bin-bin3.meta_lic ", "testdata/reciprocal/application.meta_lic", "BUILD_TOOL_OF"},
- packageTag{"testdata/reciprocal/lib/liba.so.meta_lic"},
- packageName{"testdata/reciprocal/lib/liba.so.meta_lic"},
- spdxPkgID{"testdata/reciprocal/lib/liba.so.meta_lic"},
- spdxPkgDownloadLocation{"NOASSERTION"},
- spdxPkgLicenseDeclared{"testdata-reciprocal-RECIPROCAL_LICENSE"},
- spdxRelationship{"Package-testdata/reciprocal/application.meta_lic ", "testdata/reciprocal/lib/liba.so.meta_lic", "CONTAINS"},
- packageTag{"testdata/reciprocal/lib/libb.so.meta_lic"},
- packageName{"testdata/reciprocal/lib/libb.so.meta_lic"},
- spdxPkgID{"testdata/reciprocal/lib/libb.so.meta_lic"},
- spdxPkgDownloadLocation{"NOASSERTION"},
- spdxPkgLicenseDeclared{"testdata-firstparty-FIRST_PARTY_LICENSE"},
- spdxRelationship{"Package-testdata/reciprocal/lib/libb.so.meta_lic ", "testdata/reciprocal/application.meta_lic", "RUNTIME_DEPENDENCY_OF"},
- spdxLicense{},
- spdxLicenseID{"testdata-firstparty-FIRST_PARTY_LICENSE"},
- spdxExtractedText{"&&&First Party License&&&"},
- spdxExtractedClosingText{},
- spdxLicenseID{"testdata-notice-NOTICE_LICENSE"},
- spdxExtractedText{"%%%Notice License%%%"},
- spdxExtractedClosingText{},
- spdxLicenseID{"testdata-reciprocal-RECIPROCAL_LICENSE"},
- spdxExtractedText{"$$$Reciprocal License$$$"},
- spdxExtractedClosingText{},
+ expectedOut: &spdx.Document{
+ SPDXIdentifier: "DOCUMENT",
+ CreationInfo: getCreationInfo(t),
+ Packages: []*spdx.Package{
+ {
+ PackageName: "testdata-reciprocal-application.meta_lic",
+ PackageVersion: "NOASSERTION",
+ PackageDownloadLocation: "NOASSERTION",
+ PackageSPDXIdentifier: common.ElementID("testdata-reciprocal-application.meta_lic"),
+ PackageLicenseConcluded: "LicenseRef-testdata-firstparty-FIRST_PARTY_LICENSE",
+ },
+ {
+ PackageName: "testdata-reciprocal-bin-bin3.meta_lic",
+ PackageVersion: "NOASSERTION",
+ PackageDownloadLocation: "NOASSERTION",
+ PackageSPDXIdentifier: common.ElementID("testdata-reciprocal-bin-bin3.meta_lic"),
+ PackageLicenseConcluded: "LicenseRef-testdata-notice-NOTICE_LICENSE",
+ },
+ {
+ PackageName: "testdata-reciprocal-lib-liba.so.meta_lic",
+ PackageVersion: "NOASSERTION",
+ PackageDownloadLocation: "NOASSERTION",
+ PackageSPDXIdentifier: common.ElementID("testdata-reciprocal-lib-liba.so.meta_lic"),
+ PackageLicenseConcluded: "LicenseRef-testdata-reciprocal-RECIPROCAL_LICENSE",
+ },
+ {
+ PackageName: "testdata-reciprocal-lib-libb.so.meta_lic",
+ PackageVersion: "NOASSERTION",
+ PackageDownloadLocation: "NOASSERTION",
+ PackageSPDXIdentifier: common.ElementID("testdata-reciprocal-lib-libb.so.meta_lic"),
+ PackageLicenseConcluded: "LicenseRef-testdata-firstparty-FIRST_PARTY_LICENSE",
+ },
+ },
+ Relationships: []*spdx.Relationship{
+ {
+ RefA: common.MakeDocElementID("", "DOCUMENT"),
+ RefB: common.MakeDocElementID("", "testdata-reciprocal-application.meta_lic"),
+ Relationship: "DESCRIBES",
+ },
+ {
+ RefA: common.MakeDocElementID("", "testdata-reciprocal-bin-bin3.meta_lic"),
+ RefB: common.MakeDocElementID("", "testdata-reciprocal-application.meta_lic"),
+ Relationship: "BUILD_TOOL_OF",
+ },
+ {
+ RefA: common.MakeDocElementID("", "testdata-reciprocal-application.meta_lic"),
+ RefB: common.MakeDocElementID("", "testdata-reciprocal-lib-liba.so.meta_lic"),
+ Relationship: "CONTAINS",
+ },
+ {
+ RefA: common.MakeDocElementID("", "testdata-reciprocal-lib-libb.so.meta_lic"),
+ RefB: common.MakeDocElementID("", "testdata-reciprocal-application.meta_lic"),
+ Relationship: "RUNTIME_DEPENDENCY_OF",
+ },
+ },
+ OtherLicenses: []*spdx.OtherLicense{
+ {
+ LicenseIdentifier: "LicenseRef-testdata-firstparty-FIRST_PARTY_LICENSE",
+ ExtractedText: "&&&First Party License&&&\n",
+ LicenseName: "testdata-firstparty-FIRST_PARTY_LICENSE",
+ },
+ {
+ LicenseIdentifier: "LicenseRef-testdata-notice-NOTICE_LICENSE",
+ ExtractedText: "%%%Notice License%%%\n",
+ LicenseName: "testdata-notice-NOTICE_LICENSE",
+ },
+ {
+ LicenseIdentifier: "LicenseRef-testdata-reciprocal-RECIPROCAL_LICENSE",
+ ExtractedText: "$$$Reciprocal License$$$\n",
+ LicenseName: "testdata-reciprocal-RECIPROCAL_LICENSE",
+ },
+ },
},
expectedDeps: []string{
"testdata/firstparty/FIRST_PARTY_LICENSE",
@@ -831,39 +1143,61 @@
condition: "reciprocal",
name: "binary",
roots: []string{"bin/bin1.meta_lic"},
- expectedOut: []matcher{
- spdxVersion{},
- spdxDataLicense{},
- spdxDocumentName{"Android"},
- spdxID{},
- spdxDocumentNameSpace{},
- spdxCreatorOrganization{},
- spdxCreatedTime{},
- packageTag{"testdata/reciprocal/bin/bin1.meta_lic"},
- packageName{"testdata/reciprocal/bin/bin1.meta_lic"},
- spdxPkgID{"testdata/reciprocal/bin/bin1.meta_lic"},
- spdxPkgDownloadLocation{"NOASSERTION"},
- spdxPkgLicenseDeclared{"testdata-firstparty-FIRST_PARTY_LICENSE"},
- spdxRelationship{"DOCUMENT ", "testdata/reciprocal/bin/bin1.meta_lic", "DESCRIBES"},
- packageTag{"testdata/reciprocal/lib/liba.so.meta_lic"},
- packageName{"testdata/reciprocal/lib/liba.so.meta_lic"},
- spdxPkgID{"testdata/reciprocal/lib/liba.so.meta_lic"},
- spdxPkgDownloadLocation{"NOASSERTION"},
- spdxPkgLicenseDeclared{"testdata-reciprocal-RECIPROCAL_LICENSE"},
- spdxRelationship{"Package-testdata/reciprocal/bin/bin1.meta_lic ", "testdata/reciprocal/lib/liba.so.meta_lic", "CONTAINS"},
- packageTag{"testdata/reciprocal/lib/libc.a.meta_lic"},
- packageName{"testdata/reciprocal/lib/libc.a.meta_lic"},
- spdxPkgID{"testdata/reciprocal/lib/libc.a.meta_lic"},
- spdxPkgDownloadLocation{"NOASSERTION"},
- spdxPkgLicenseDeclared{"testdata-reciprocal-RECIPROCAL_LICENSE"},
- spdxRelationship{"Package-testdata/reciprocal/bin/bin1.meta_lic ", "testdata/reciprocal/lib/libc.a.meta_lic", "CONTAINS"},
- spdxLicense{},
- spdxLicenseID{"testdata-firstparty-FIRST_PARTY_LICENSE"},
- spdxExtractedText{"&&&First Party License&&&"},
- spdxExtractedClosingText{},
- spdxLicenseID{"testdata-reciprocal-RECIPROCAL_LICENSE"},
- spdxExtractedText{"$$$Reciprocal License$$$"},
- spdxExtractedClosingText{},
+ expectedOut: &spdx.Document{
+ SPDXIdentifier: "DOCUMENT",
+ CreationInfo: getCreationInfo(t),
+ Packages: []*spdx.Package{
+ {
+ PackageName: "testdata-reciprocal-bin-bin1.meta_lic",
+ PackageVersion: "NOASSERTION",
+ PackageDownloadLocation: "NOASSERTION",
+ PackageSPDXIdentifier: common.ElementID("testdata-reciprocal-bin-bin1.meta_lic"),
+ PackageLicenseConcluded: "LicenseRef-testdata-firstparty-FIRST_PARTY_LICENSE",
+ },
+ {
+ PackageName: "testdata-reciprocal-lib-liba.so.meta_lic",
+ PackageVersion: "NOASSERTION",
+ PackageDownloadLocation: "NOASSERTION",
+ PackageSPDXIdentifier: common.ElementID("testdata-reciprocal-lib-liba.so.meta_lic"),
+ PackageLicenseConcluded: "LicenseRef-testdata-reciprocal-RECIPROCAL_LICENSE",
+ },
+ {
+ PackageName: "testdata-reciprocal-lib-libc.a.meta_lic",
+ PackageVersion: "NOASSERTION",
+ PackageDownloadLocation: "NOASSERTION",
+ PackageSPDXIdentifier: common.ElementID("testdata-reciprocal-lib-libc.a.meta_lic"),
+ PackageLicenseConcluded: "LicenseRef-testdata-reciprocal-RECIPROCAL_LICENSE",
+ },
+ },
+ Relationships: []*spdx.Relationship{
+ {
+ RefA: common.MakeDocElementID("", "DOCUMENT"),
+ RefB: common.MakeDocElementID("", "testdata-reciprocal-bin-bin1.meta_lic"),
+ Relationship: "DESCRIBES",
+ },
+ {
+ RefA: common.MakeDocElementID("", "testdata-reciprocal-bin-bin1.meta_lic"),
+ RefB: common.MakeDocElementID("", "testdata-reciprocal-lib-liba.so.meta_lic"),
+ Relationship: "CONTAINS",
+ },
+ {
+ RefA: common.MakeDocElementID("", "testdata-reciprocal-bin-bin1.meta_lic"),
+ RefB: common.MakeDocElementID("", "testdata-reciprocal-lib-libc.a.meta_lic"),
+ Relationship: "CONTAINS",
+ },
+ },
+ OtherLicenses: []*spdx.OtherLicense{
+ {
+ LicenseIdentifier: "LicenseRef-testdata-firstparty-FIRST_PARTY_LICENSE",
+ ExtractedText: "&&&First Party License&&&\n",
+ LicenseName: "testdata-firstparty-FIRST_PARTY_LICENSE",
+ },
+ {
+ LicenseIdentifier: "LicenseRef-testdata-reciprocal-RECIPROCAL_LICENSE",
+ ExtractedText: "$$$Reciprocal License$$$\n",
+ LicenseName: "testdata-reciprocal-RECIPROCAL_LICENSE",
+ },
+ },
},
expectedDeps: []string{
"testdata/firstparty/FIRST_PARTY_LICENSE",
@@ -877,24 +1211,32 @@
condition: "reciprocal",
name: "library",
roots: []string{"lib/libd.so.meta_lic"},
- expectedOut: []matcher{
- spdxVersion{},
- spdxDataLicense{},
- spdxDocumentName{"Android"},
- spdxID{},
- spdxDocumentNameSpace{},
- spdxCreatorOrganization{},
- spdxCreatedTime{},
- packageTag{"testdata/reciprocal/lib/libd.so.meta_lic"},
- packageName{"testdata/reciprocal/lib/libd.so.meta_lic"},
- spdxPkgID{"testdata/reciprocal/lib/libd.so.meta_lic"},
- spdxPkgDownloadLocation{"NOASSERTION"},
- spdxPkgLicenseDeclared{"testdata-notice-NOTICE_LICENSE"},
- spdxRelationship{"DOCUMENT ", "testdata/reciprocal/lib/libd.so.meta_lic", "DESCRIBES"},
- spdxLicense{},
- spdxLicenseID{"testdata-notice-NOTICE_LICENSE"},
- spdxExtractedText{"%%%Notice License%%%"},
- spdxExtractedClosingText{},
+ expectedOut: &spdx.Document{
+ SPDXIdentifier: "DOCUMENT",
+ CreationInfo: getCreationInfo(t),
+ Packages: []*spdx.Package{
+ {
+ PackageName: "testdata-reciprocal-lib-libd.so.meta_lic",
+ PackageVersion: "NOASSERTION",
+ PackageDownloadLocation: "NOASSERTION",
+ PackageSPDXIdentifier: common.ElementID("testdata-reciprocal-lib-libd.so.meta_lic"),
+ PackageLicenseConcluded: "LicenseRef-testdata-notice-NOTICE_LICENSE",
+ },
+ },
+ Relationships: []*spdx.Relationship{
+ {
+ RefA: common.MakeDocElementID("", "DOCUMENT"),
+ RefB: common.MakeDocElementID("", "testdata-reciprocal-lib-libd.so.meta_lic"),
+ Relationship: "DESCRIBES",
+ },
+ },
+ OtherLicenses: []*spdx.OtherLicense{
+ {
+ LicenseIdentifier: "LicenseRef-testdata-notice-NOTICE_LICENSE",
+ ExtractedText: "%%%Notice License%%%\n",
+ LicenseName: "testdata-notice-NOTICE_LICENSE",
+ },
+ },
},
expectedDeps: []string{
"testdata/notice/NOTICE_LICENSE",
@@ -902,75 +1244,132 @@
},
},
{
- condition: "restricted",
- name: "apex",
- roots: []string{"highest.apex.meta_lic"},
- stripPrefix: "out/target/product/fictional/system/apex/",
- expectedOut: []matcher{
- spdxVersion{},
- spdxDataLicense{},
- spdxDocumentName{"Android"},
- spdxID{},
- spdxDocumentNameSpace{},
- spdxCreatorOrganization{},
- spdxCreatedTime{},
- packageTag{"testdata/restricted/highest.apex.meta_lic"},
- packageName{"testdata/restricted/highest.apex.meta_lic"},
- spdxPkgID{"testdata/restricted/highest.apex.meta_lic"},
- spdxPkgDownloadLocation{"NOASSERTION"},
- spdxPkgLicenseDeclared{"testdata-firstparty-FIRST_PARTY_LICENSE"},
- spdxRelationship{"DOCUMENT ", "testdata/restricted/highest.apex.meta_lic", "DESCRIBES"},
- packageTag{"testdata/restricted/bin/bin1.meta_lic"},
- packageName{"testdata/restricted/bin/bin1.meta_lic"},
- spdxPkgID{"testdata/restricted/bin/bin1.meta_lic"},
- spdxPkgDownloadLocation{"NOASSERTION"},
- spdxPkgLicenseDeclared{"testdata-firstparty-FIRST_PARTY_LICENSE"},
- spdxRelationship{"Package-testdata/restricted/highest.apex.meta_lic ", "testdata/restricted/bin/bin1.meta_lic", "CONTAINS"},
- packageTag{"testdata/restricted/bin/bin2.meta_lic"},
- packageName{"testdata/restricted/bin/bin2.meta_lic"},
- spdxPkgID{"testdata/restricted/bin/bin2.meta_lic"},
- spdxPkgDownloadLocation{"NOASSERTION"},
- spdxPkgLicenseDeclared{"testdata-firstparty-FIRST_PARTY_LICENSE"},
- spdxRelationship{"Package-testdata/restricted/highest.apex.meta_lic ", "testdata/restricted/bin/bin2.meta_lic", "CONTAINS"},
- packageTag{"testdata/restricted/lib/liba.so.meta_lic"},
- packageName{"testdata/restricted/lib/liba.so.meta_lic"},
- spdxPkgID{"testdata/restricted/lib/liba.so.meta_lic"},
- spdxPkgDownloadLocation{"NOASSERTION"},
- spdxPkgLicenseDeclared{"testdata-restricted-RESTRICTED_LICENSE"},
- spdxRelationship{"Package-testdata/restricted/highest.apex.meta_lic ", "testdata/restricted/lib/liba.so.meta_lic", "CONTAINS"},
- packageTag{"testdata/restricted/lib/libb.so.meta_lic"},
- packageName{"testdata/restricted/lib/libb.so.meta_lic"},
- spdxPkgID{"testdata/restricted/lib/libb.so.meta_lic"},
- spdxPkgDownloadLocation{"NOASSERTION"},
- spdxPkgLicenseDeclared{"testdata-restricted-RESTRICTED_LICENSE"},
- spdxRelationship{"Package-testdata/restricted/highest.apex.meta_lic ", "testdata/restricted/lib/libb.so.meta_lic", "CONTAINS"},
- spdxRelationship{"Package-testdata/restricted/bin/bin1.meta_lic ", "testdata/restricted/lib/liba.so.meta_lic", "CONTAINS"},
- packageTag{"testdata/restricted/lib/libc.a.meta_lic"},
- packageName{"testdata/restricted/lib/libc.a.meta_lic"},
- spdxPkgID{"testdata/restricted/lib/libc.a.meta_lic"},
- spdxPkgDownloadLocation{"NOASSERTION"},
- spdxPkgLicenseDeclared{"testdata-reciprocal-RECIPROCAL_LICENSE"},
- spdxRelationship{"Package-testdata/restricted/bin/bin1.meta_lic ", "testdata/restricted/lib/libc.a.meta_lic", "CONTAINS"},
- spdxRelationship{"Package-testdata/restricted/lib/libb.so.meta_lic ", "testdata/restricted/bin/bin2.meta_lic", "RUNTIME_DEPENDENCY_OF"},
- packageTag{"testdata/restricted/lib/libd.so.meta_lic"},
- packageName{"testdata/restricted/lib/libd.so.meta_lic"},
- spdxPkgID{"testdata/restricted/lib/libd.so.meta_lic"},
- spdxPkgDownloadLocation{"NOASSERTION"},
- spdxPkgLicenseDeclared{"testdata-notice-NOTICE_LICENSE"},
- spdxRelationship{"Package-testdata/restricted/lib/libd.so.meta_lic ", "testdata/restricted/bin/bin2.meta_lic", "RUNTIME_DEPENDENCY_OF"},
- spdxLicense{},
- spdxLicenseID{"testdata-firstparty-FIRST_PARTY_LICENSE"},
- spdxExtractedText{"&&&First Party License&&&"},
- spdxExtractedClosingText{},
- spdxLicenseID{"testdata-notice-NOTICE_LICENSE"},
- spdxExtractedText{"%%%Notice License%%%"},
- spdxExtractedClosingText{},
- spdxLicenseID{"testdata-reciprocal-RECIPROCAL_LICENSE"},
- spdxExtractedText{"$$$Reciprocal License$$$"},
- spdxExtractedClosingText{},
- spdxLicenseID{"testdata-restricted-RESTRICTED_LICENSE"},
- spdxExtractedText{"###Restricted License###"},
- spdxExtractedClosingText{},
+ condition: "restricted",
+ name: "apex",
+ roots: []string{"highest.apex.meta_lic"},
+ expectedOut: &spdx.Document{
+ SPDXIdentifier: "DOCUMENT",
+ CreationInfo: getCreationInfo(t),
+ Packages: []*spdx.Package{
+ {
+ PackageName: "testdata-restricted-highest.apex.meta_lic",
+ PackageVersion: "NOASSERTION",
+ PackageDownloadLocation: "NOASSERTION",
+ PackageSPDXIdentifier: common.ElementID("testdata-restricted-highest.apex.meta_lic"),
+ PackageLicenseConcluded: "LicenseRef-testdata-firstparty-FIRST_PARTY_LICENSE",
+ },
+ {
+ PackageName: "testdata-restricted-bin-bin1.meta_lic",
+ PackageVersion: "NOASSERTION",
+ PackageDownloadLocation: "NOASSERTION",
+ PackageSPDXIdentifier: common.ElementID("testdata-restricted-bin-bin1.meta_lic"),
+ PackageLicenseConcluded: "LicenseRef-testdata-firstparty-FIRST_PARTY_LICENSE",
+ },
+ {
+ PackageName: "testdata-restricted-bin-bin2.meta_lic",
+ PackageVersion: "NOASSERTION",
+ PackageDownloadLocation: "NOASSERTION",
+ PackageSPDXIdentifier: common.ElementID("testdata-restricted-bin-bin2.meta_lic"),
+ PackageLicenseConcluded: "LicenseRef-testdata-firstparty-FIRST_PARTY_LICENSE",
+ },
+ {
+ PackageName: "testdata-restricted-lib-liba.so.meta_lic",
+ PackageVersion: "NOASSERTION",
+ PackageDownloadLocation: "NOASSERTION",
+ PackageSPDXIdentifier: common.ElementID("testdata-restricted-lib-liba.so.meta_lic"),
+ PackageLicenseConcluded: "LicenseRef-testdata-restricted-RESTRICTED_LICENSE",
+ },
+ {
+ PackageName: "testdata-restricted-lib-libb.so.meta_lic",
+ PackageVersion: "NOASSERTION",
+ PackageDownloadLocation: "NOASSERTION",
+ PackageSPDXIdentifier: common.ElementID("testdata-restricted-lib-libb.so.meta_lic"),
+ PackageLicenseConcluded: "LicenseRef-testdata-restricted-RESTRICTED_LICENSE",
+ },
+ {
+ PackageName: "testdata-restricted-lib-libc.a.meta_lic",
+ PackageVersion: "NOASSERTION",
+ PackageDownloadLocation: "NOASSERTION",
+ PackageSPDXIdentifier: common.ElementID("testdata-restricted-lib-libc.a.meta_lic"),
+ PackageLicenseConcluded: "LicenseRef-testdata-reciprocal-RECIPROCAL_LICENSE",
+ },
+ {
+ PackageName: "testdata-restricted-lib-libd.so.meta_lic",
+ PackageVersion: "NOASSERTION",
+ PackageDownloadLocation: "NOASSERTION",
+ PackageSPDXIdentifier: common.ElementID("testdata-restricted-lib-libd.so.meta_lic"),
+ PackageLicenseConcluded: "LicenseRef-testdata-notice-NOTICE_LICENSE",
+ },
+ },
+ Relationships: []*spdx.Relationship{
+ {
+ RefA: common.MakeDocElementID("", "DOCUMENT"),
+ RefB: common.MakeDocElementID("", "testdata-restricted-highest.apex.meta_lic"),
+ Relationship: "DESCRIBES",
+ },
+ {
+ RefA: common.MakeDocElementID("", "testdata-restricted-highest.apex.meta_lic"),
+ RefB: common.MakeDocElementID("", "testdata-restricted-bin-bin1.meta_lic"),
+ Relationship: "CONTAINS",
+ },
+ {
+ RefA: common.MakeDocElementID("", "testdata-restricted-highest.apex.meta_lic"),
+ RefB: common.MakeDocElementID("", "testdata-restricted-bin-bin2.meta_lic"),
+ Relationship: "CONTAINS",
+ },
+ {
+ RefA: common.MakeDocElementID("", "testdata-restricted-highest.apex.meta_lic"),
+ RefB: common.MakeDocElementID("", "testdata-restricted-lib-liba.so.meta_lic"),
+ Relationship: "CONTAINS",
+ },
+ {
+ RefA: common.MakeDocElementID("", "testdata-restricted-highest.apex.meta_lic"),
+ RefB: common.MakeDocElementID("", "testdata-restricted-lib-libb.so.meta_lic"),
+ Relationship: "CONTAINS",
+ },
+ {
+ RefA: common.MakeDocElementID("", "testdata-restricted-bin-bin1.meta_lic"),
+ RefB: common.MakeDocElementID("", "testdata-restricted-lib-liba.so.meta_lic"),
+ Relationship: "CONTAINS",
+ },
+ {
+ RefA: common.MakeDocElementID("", "testdata-restricted-bin-bin1.meta_lic"),
+ RefB: common.MakeDocElementID("", "testdata-restricted-lib-libc.a.meta_lic"),
+ Relationship: "CONTAINS",
+ },
+ {
+ RefA: common.MakeDocElementID("", "testdata-restricted-lib-libb.so.meta_lic"),
+ RefB: common.MakeDocElementID("", "testdata-restricted-bin-bin2.meta_lic"),
+ Relationship: "RUNTIME_DEPENDENCY_OF",
+ },
+ {
+ RefA: common.MakeDocElementID("", "testdata-restricted-lib-libd.so.meta_lic"),
+ RefB: common.MakeDocElementID("", "testdata-restricted-bin-bin2.meta_lic"),
+ Relationship: "RUNTIME_DEPENDENCY_OF",
+ },
+ },
+ OtherLicenses: []*spdx.OtherLicense{
+ {
+ LicenseIdentifier: "LicenseRef-testdata-firstparty-FIRST_PARTY_LICENSE",
+ ExtractedText: "&&&First Party License&&&\n",
+ LicenseName: "testdata-firstparty-FIRST_PARTY_LICENSE",
+ },
+ {
+ LicenseIdentifier: "LicenseRef-testdata-notice-NOTICE_LICENSE",
+ ExtractedText: "%%%Notice License%%%\n",
+ LicenseName: "testdata-notice-NOTICE_LICENSE",
+ },
+ {
+ LicenseIdentifier: "LicenseRef-testdata-reciprocal-RECIPROCAL_LICENSE",
+ ExtractedText: "$$$Reciprocal License$$$\n",
+ LicenseName: "testdata-reciprocal-RECIPROCAL_LICENSE",
+ },
+ {
+ LicenseIdentifier: "LicenseRef-testdata-restricted-RESTRICTED_LICENSE",
+ ExtractedText: "###Restricted License###\n",
+ LicenseName: "testdata-restricted-RESTRICTED_LICENSE",
+ },
+ },
},
expectedDeps: []string{
"testdata/firstparty/FIRST_PARTY_LICENSE",
@@ -987,75 +1386,132 @@
},
},
{
- condition: "restricted",
- name: "container",
- roots: []string{"container.zip.meta_lic"},
- stripPrefix: "out/target/product/fictional/system/apex/",
- expectedOut: []matcher{
- spdxVersion{},
- spdxDataLicense{},
- spdxDocumentName{"Android"},
- spdxID{},
- spdxDocumentNameSpace{},
- spdxCreatorOrganization{},
- spdxCreatedTime{},
- packageTag{"testdata/restricted/container.zip.meta_lic"},
- packageName{"testdata/restricted/container.zip.meta_lic"},
- spdxPkgID{"testdata/restricted/container.zip.meta_lic"},
- spdxPkgDownloadLocation{"NOASSERTION"},
- spdxPkgLicenseDeclared{"testdata-firstparty-FIRST_PARTY_LICENSE"},
- spdxRelationship{"DOCUMENT ", "testdata/restricted/container.zip.meta_lic", "DESCRIBES"},
- packageTag{"testdata/restricted/bin/bin1.meta_lic"},
- packageName{"testdata/restricted/bin/bin1.meta_lic"},
- spdxPkgID{"testdata/restricted/bin/bin1.meta_lic"},
- spdxPkgDownloadLocation{"NOASSERTION"},
- spdxPkgLicenseDeclared{"testdata-firstparty-FIRST_PARTY_LICENSE"},
- spdxRelationship{"Package-testdata/restricted/container.zip.meta_lic ", "testdata/restricted/bin/bin1.meta_lic", "CONTAINS"},
- packageTag{"testdata/restricted/bin/bin2.meta_lic"},
- packageName{"testdata/restricted/bin/bin2.meta_lic"},
- spdxPkgID{"testdata/restricted/bin/bin2.meta_lic"},
- spdxPkgDownloadLocation{"NOASSERTION"},
- spdxPkgLicenseDeclared{"testdata-firstparty-FIRST_PARTY_LICENSE"},
- spdxRelationship{"Package-testdata/restricted/container.zip.meta_lic ", "testdata/restricted/bin/bin2.meta_lic", "CONTAINS"},
- packageTag{"testdata/restricted/lib/liba.so.meta_lic"},
- packageName{"testdata/restricted/lib/liba.so.meta_lic"},
- spdxPkgID{"testdata/restricted/lib/liba.so.meta_lic"},
- spdxPkgDownloadLocation{"NOASSERTION"},
- spdxPkgLicenseDeclared{"testdata-restricted-RESTRICTED_LICENSE"},
- spdxRelationship{"Package-testdata/restricted/container.zip.meta_lic ", "testdata/restricted/lib/liba.so.meta_lic", "CONTAINS"},
- packageTag{"testdata/restricted/lib/libb.so.meta_lic"},
- packageName{"testdata/restricted/lib/libb.so.meta_lic"},
- spdxPkgID{"testdata/restricted/lib/libb.so.meta_lic"},
- spdxPkgDownloadLocation{"NOASSERTION"},
- spdxPkgLicenseDeclared{"testdata-restricted-RESTRICTED_LICENSE"},
- spdxRelationship{"Package-testdata/restricted/container.zip.meta_lic ", "testdata/restricted/lib/libb.so.meta_lic", "CONTAINS"},
- spdxRelationship{"Package-testdata/restricted/bin/bin1.meta_lic ", "testdata/restricted/lib/liba.so.meta_lic", "CONTAINS"},
- packageTag{"testdata/restricted/lib/libc.a.meta_lic"},
- packageName{"testdata/restricted/lib/libc.a.meta_lic"},
- spdxPkgID{"testdata/restricted/lib/libc.a.meta_lic"},
- spdxPkgDownloadLocation{"NOASSERTION"},
- spdxPkgLicenseDeclared{"testdata-reciprocal-RECIPROCAL_LICENSE"},
- spdxRelationship{"Package-testdata/restricted/bin/bin1.meta_lic ", "testdata/restricted/lib/libc.a.meta_lic", "CONTAINS"},
- spdxRelationship{"Package-testdata/restricted/lib/libb.so.meta_lic ", "testdata/restricted/bin/bin2.meta_lic", "RUNTIME_DEPENDENCY_OF"},
- packageTag{"testdata/restricted/lib/libd.so.meta_lic"},
- packageName{"testdata/restricted/lib/libd.so.meta_lic"},
- spdxPkgID{"testdata/restricted/lib/libd.so.meta_lic"},
- spdxPkgDownloadLocation{"NOASSERTION"},
- spdxPkgLicenseDeclared{"testdata-notice-NOTICE_LICENSE"},
- spdxRelationship{"Package-testdata/restricted/lib/libd.so.meta_lic ", "testdata/restricted/bin/bin2.meta_lic", "RUNTIME_DEPENDENCY_OF"},
- spdxLicense{},
- spdxLicenseID{"testdata-firstparty-FIRST_PARTY_LICENSE"},
- spdxExtractedText{"&&&First Party License&&&"},
- spdxExtractedClosingText{},
- spdxLicenseID{"testdata-notice-NOTICE_LICENSE"},
- spdxExtractedText{"%%%Notice License%%%"},
- spdxExtractedClosingText{},
- spdxLicenseID{"testdata-reciprocal-RECIPROCAL_LICENSE"},
- spdxExtractedText{"$$$Reciprocal License$$$"},
- spdxExtractedClosingText{},
- spdxLicenseID{"testdata-restricted-RESTRICTED_LICENSE"},
- spdxExtractedText{"###Restricted License###"},
- spdxExtractedClosingText{},
+ condition: "restricted",
+ name: "container",
+ roots: []string{"container.zip.meta_lic"},
+ expectedOut: &spdx.Document{
+ SPDXIdentifier: "DOCUMENT",
+ CreationInfo: getCreationInfo(t),
+ Packages: []*spdx.Package{
+ {
+ PackageName: "testdata-restricted-container.zip.meta_lic",
+ PackageVersion: "NOASSERTION",
+ PackageDownloadLocation: "NOASSERTION",
+ PackageSPDXIdentifier: common.ElementID("testdata-restricted-container.zip.meta_lic"),
+ PackageLicenseConcluded: "LicenseRef-testdata-firstparty-FIRST_PARTY_LICENSE",
+ },
+ {
+ PackageName: "testdata-restricted-bin-bin1.meta_lic",
+ PackageVersion: "NOASSERTION",
+ PackageDownloadLocation: "NOASSERTION",
+ PackageSPDXIdentifier: common.ElementID("testdata-restricted-bin-bin1.meta_lic"),
+ PackageLicenseConcluded: "LicenseRef-testdata-firstparty-FIRST_PARTY_LICENSE",
+ },
+ {
+ PackageName: "testdata-restricted-bin-bin2.meta_lic",
+ PackageVersion: "NOASSERTION",
+ PackageDownloadLocation: "NOASSERTION",
+ PackageSPDXIdentifier: common.ElementID("testdata-restricted-bin-bin2.meta_lic"),
+ PackageLicenseConcluded: "LicenseRef-testdata-firstparty-FIRST_PARTY_LICENSE",
+ },
+ {
+ PackageName: "testdata-restricted-lib-liba.so.meta_lic",
+ PackageVersion: "NOASSERTION",
+ PackageDownloadLocation: "NOASSERTION",
+ PackageSPDXIdentifier: common.ElementID("testdata-restricted-lib-liba.so.meta_lic"),
+ PackageLicenseConcluded: "LicenseRef-testdata-restricted-RESTRICTED_LICENSE",
+ },
+ {
+ PackageName: "testdata-restricted-lib-libb.so.meta_lic",
+ PackageVersion: "NOASSERTION",
+ PackageDownloadLocation: "NOASSERTION",
+ PackageSPDXIdentifier: common.ElementID("testdata-restricted-lib-libb.so.meta_lic"),
+ PackageLicenseConcluded: "LicenseRef-testdata-restricted-RESTRICTED_LICENSE",
+ },
+ {
+ PackageName: "testdata-restricted-lib-libc.a.meta_lic",
+ PackageVersion: "NOASSERTION",
+ PackageDownloadLocation: "NOASSERTION",
+ PackageSPDXIdentifier: common.ElementID("testdata-restricted-lib-libc.a.meta_lic"),
+ PackageLicenseConcluded: "LicenseRef-testdata-reciprocal-RECIPROCAL_LICENSE",
+ },
+ {
+ PackageName: "testdata-restricted-lib-libd.so.meta_lic",
+ PackageVersion: "NOASSERTION",
+ PackageDownloadLocation: "NOASSERTION",
+ PackageSPDXIdentifier: common.ElementID("testdata-restricted-lib-libd.so.meta_lic"),
+ PackageLicenseConcluded: "LicenseRef-testdata-notice-NOTICE_LICENSE",
+ },
+ },
+ Relationships: []*spdx.Relationship{
+ {
+ RefA: common.MakeDocElementID("", "DOCUMENT"),
+ RefB: common.MakeDocElementID("", "testdata-restricted-container.zip.meta_lic"),
+ Relationship: "DESCRIBES",
+ },
+ {
+ RefA: common.MakeDocElementID("", "testdata-restricted-container.zip.meta_lic"),
+ RefB: common.MakeDocElementID("", "testdata-restricted-bin-bin1.meta_lic"),
+ Relationship: "CONTAINS",
+ },
+ {
+ RefA: common.MakeDocElementID("", "testdata-restricted-container.zip.meta_lic"),
+ RefB: common.MakeDocElementID("", "testdata-restricted-bin-bin2.meta_lic"),
+ Relationship: "CONTAINS",
+ },
+ {
+ RefA: common.MakeDocElementID("", "testdata-restricted-container.zip.meta_lic"),
+ RefB: common.MakeDocElementID("", "testdata-restricted-lib-liba.so.meta_lic"),
+ Relationship: "CONTAINS",
+ },
+ {
+ RefA: common.MakeDocElementID("", "testdata-restricted-container.zip.meta_lic"),
+ RefB: common.MakeDocElementID("", "testdata-restricted-lib-libb.so.meta_lic"),
+ Relationship: "CONTAINS",
+ },
+ {
+ RefA: common.MakeDocElementID("", "testdata-restricted-bin-bin1.meta_lic"),
+ RefB: common.MakeDocElementID("", "testdata-restricted-lib-liba.so.meta_lic"),
+ Relationship: "CONTAINS",
+ },
+ {
+ RefA: common.MakeDocElementID("", "testdata-restricted-bin-bin1.meta_lic"),
+ RefB: common.MakeDocElementID("", "testdata-restricted-lib-libc.a.meta_lic"),
+ Relationship: "CONTAINS",
+ },
+ {
+ RefA: common.MakeDocElementID("", "testdata-restricted-lib-libb.so.meta_lic"),
+ RefB: common.MakeDocElementID("", "testdata-restricted-bin-bin2.meta_lic"),
+ Relationship: "RUNTIME_DEPENDENCY_OF",
+ },
+ {
+ RefA: common.MakeDocElementID("", "testdata-restricted-lib-libd.so.meta_lic"),
+ RefB: common.MakeDocElementID("", "testdata-restricted-bin-bin2.meta_lic"),
+ Relationship: "RUNTIME_DEPENDENCY_OF",
+ },
+ },
+ OtherLicenses: []*spdx.OtherLicense{
+ {
+ LicenseIdentifier: "LicenseRef-testdata-firstparty-FIRST_PARTY_LICENSE",
+ ExtractedText: "&&&First Party License&&&\n",
+ LicenseName: "testdata-firstparty-FIRST_PARTY_LICENSE",
+ },
+ {
+ LicenseIdentifier: "LicenseRef-testdata-notice-NOTICE_LICENSE",
+ ExtractedText: "%%%Notice License%%%\n",
+ LicenseName: "testdata-notice-NOTICE_LICENSE",
+ },
+ {
+ LicenseIdentifier: "LicenseRef-testdata-reciprocal-RECIPROCAL_LICENSE",
+ ExtractedText: "$$$Reciprocal License$$$\n",
+ LicenseName: "testdata-reciprocal-RECIPROCAL_LICENSE",
+ },
+ {
+ LicenseIdentifier: "LicenseRef-testdata-restricted-RESTRICTED_LICENSE",
+ ExtractedText: "###Restricted License###\n",
+ LicenseName: "testdata-restricted-RESTRICTED_LICENSE",
+ },
+ },
},
expectedDeps: []string{
"testdata/firstparty/FIRST_PARTY_LICENSE",
@@ -1075,42 +1531,66 @@
condition: "restricted",
name: "binary",
roots: []string{"bin/bin1.meta_lic"},
- expectedOut: []matcher{
- spdxVersion{},
- spdxDataLicense{},
- spdxDocumentName{"Android"},
- spdxID{},
- spdxDocumentNameSpace{},
- spdxCreatorOrganization{},
- spdxCreatedTime{},
- packageTag{"testdata/restricted/bin/bin1.meta_lic"},
- packageName{"testdata/restricted/bin/bin1.meta_lic"},
- spdxPkgID{"testdata/restricted/bin/bin1.meta_lic"},
- spdxPkgDownloadLocation{"NOASSERTION"},
- spdxPkgLicenseDeclared{"testdata-firstparty-FIRST_PARTY_LICENSE"},
- spdxRelationship{"DOCUMENT ", "testdata/restricted/bin/bin1.meta_lic", "DESCRIBES"},
- packageTag{"testdata/restricted/lib/liba.so.meta_lic"},
- packageName{"testdata/restricted/lib/liba.so.meta_lic"},
- spdxPkgID{"testdata/restricted/lib/liba.so.meta_lic"},
- spdxPkgDownloadLocation{"NOASSERTION"},
- spdxPkgLicenseDeclared{"testdata-restricted-RESTRICTED_LICENSE"},
- spdxRelationship{"Package-testdata/restricted/bin/bin1.meta_lic ", "testdata/restricted/lib/liba.so.meta_lic", "CONTAINS"},
- packageTag{"testdata/restricted/lib/libc.a.meta_lic"},
- packageName{"testdata/restricted/lib/libc.a.meta_lic"},
- spdxPkgID{"testdata/restricted/lib/libc.a.meta_lic"},
- spdxPkgDownloadLocation{"NOASSERTION"},
- spdxPkgLicenseDeclared{"testdata-reciprocal-RECIPROCAL_LICENSE"},
- spdxRelationship{"Package-testdata/restricted/bin/bin1.meta_lic ", "testdata/restricted/lib/libc.a.meta_lic", "CONTAINS"},
- spdxLicense{},
- spdxLicenseID{"testdata-firstparty-FIRST_PARTY_LICENSE"},
- spdxExtractedText{"&&&First Party License&&&"},
- spdxExtractedClosingText{},
- spdxLicenseID{"testdata-reciprocal-RECIPROCAL_LICENSE"},
- spdxExtractedText{"$$$Reciprocal License$$$"},
- spdxExtractedClosingText{},
- spdxLicenseID{"testdata-restricted-RESTRICTED_LICENSE"},
- spdxExtractedText{"###Restricted License###"},
- spdxExtractedClosingText{},
+ expectedOut: &spdx.Document{
+ SPDXIdentifier: "DOCUMENT",
+ CreationInfo: getCreationInfo(t),
+ Packages: []*spdx.Package{
+ {
+ PackageName: "testdata-restricted-bin-bin1.meta_lic",
+ PackageVersion: "NOASSERTION",
+ PackageDownloadLocation: "NOASSERTION",
+ PackageSPDXIdentifier: common.ElementID("testdata-restricted-bin-bin1.meta_lic"),
+ PackageLicenseConcluded: "LicenseRef-testdata-firstparty-FIRST_PARTY_LICENSE",
+ },
+ {
+ PackageName: "testdata-restricted-lib-liba.so.meta_lic",
+ PackageVersion: "NOASSERTION",
+ PackageDownloadLocation: "NOASSERTION",
+ PackageSPDXIdentifier: common.ElementID("testdata-restricted-lib-liba.so.meta_lic"),
+ PackageLicenseConcluded: "LicenseRef-testdata-restricted-RESTRICTED_LICENSE",
+ },
+ {
+ PackageName: "testdata-restricted-lib-libc.a.meta_lic",
+ PackageVersion: "NOASSERTION",
+ PackageDownloadLocation: "NOASSERTION",
+ PackageSPDXIdentifier: common.ElementID("testdata-restricted-lib-libc.a.meta_lic"),
+ PackageLicenseConcluded: "LicenseRef-testdata-reciprocal-RECIPROCAL_LICENSE",
+ },
+ },
+ Relationships: []*spdx.Relationship{
+ {
+ RefA: common.MakeDocElementID("", "DOCUMENT"),
+ RefB: common.MakeDocElementID("", "testdata-restricted-bin-bin1.meta_lic"),
+ Relationship: "DESCRIBES",
+ },
+ {
+ RefA: common.MakeDocElementID("", "testdata-restricted-bin-bin1.meta_lic"),
+ RefB: common.MakeDocElementID("", "testdata-restricted-lib-liba.so.meta_lic"),
+ Relationship: "CONTAINS",
+ },
+ {
+ RefA: common.MakeDocElementID("", "testdata-restricted-bin-bin1.meta_lic"),
+ RefB: common.MakeDocElementID("", "testdata-restricted-lib-libc.a.meta_lic"),
+ Relationship: "CONTAINS",
+ },
+ },
+ OtherLicenses: []*spdx.OtherLicense{
+ {
+ LicenseIdentifier: "LicenseRef-testdata-firstparty-FIRST_PARTY_LICENSE",
+ ExtractedText: "&&&First Party License&&&\n",
+ LicenseName: "testdata-firstparty-FIRST_PARTY_LICENSE",
+ },
+ {
+ LicenseIdentifier: "LicenseRef-testdata-reciprocal-RECIPROCAL_LICENSE",
+ ExtractedText: "$$$Reciprocal License$$$\n",
+ LicenseName: "testdata-reciprocal-RECIPROCAL_LICENSE",
+ },
+ {
+ LicenseIdentifier: "LicenseRef-testdata-restricted-RESTRICTED_LICENSE",
+ ExtractedText: "###Restricted License###\n",
+ LicenseName: "testdata-restricted-RESTRICTED_LICENSE",
+ },
+ },
},
expectedDeps: []string{
"testdata/firstparty/FIRST_PARTY_LICENSE",
@@ -1125,24 +1605,32 @@
condition: "restricted",
name: "library",
roots: []string{"lib/libd.so.meta_lic"},
- expectedOut: []matcher{
- spdxVersion{},
- spdxDataLicense{},
- spdxDocumentName{"Android"},
- spdxID{},
- spdxDocumentNameSpace{},
- spdxCreatorOrganization{},
- spdxCreatedTime{},
- packageTag{"testdata/restricted/lib/libd.so.meta_lic"},
- packageName{"testdata/restricted/lib/libd.so.meta_lic"},
- spdxPkgID{"testdata/restricted/lib/libd.so.meta_lic"},
- spdxPkgDownloadLocation{"NOASSERTION"},
- spdxPkgLicenseDeclared{"testdata-notice-NOTICE_LICENSE"},
- spdxRelationship{"DOCUMENT ", "testdata/restricted/lib/libd.so.meta_lic", "DESCRIBES"},
- spdxLicense{},
- spdxLicenseID{"testdata-notice-NOTICE_LICENSE"},
- spdxExtractedText{"%%%Notice License%%%"},
- spdxExtractedClosingText{},
+ expectedOut: &spdx.Document{
+ SPDXIdentifier: "DOCUMENT",
+ CreationInfo: getCreationInfo(t),
+ Packages: []*spdx.Package{
+ {
+ PackageName: "testdata-restricted-lib-libd.so.meta_lic",
+ PackageVersion: "NOASSERTION",
+ PackageDownloadLocation: "NOASSERTION",
+ PackageSPDXIdentifier: common.ElementID("testdata-restricted-lib-libd.so.meta_lic"),
+ PackageLicenseConcluded: "LicenseRef-testdata-notice-NOTICE_LICENSE",
+ },
+ },
+ Relationships: []*spdx.Relationship{
+ {
+ RefA: common.MakeDocElementID("", "DOCUMENT"),
+ RefB: common.MakeDocElementID("", "testdata-restricted-lib-libd.so.meta_lic"),
+ Relationship: "DESCRIBES",
+ },
+ },
+ OtherLicenses: []*spdx.OtherLicense{
+ {
+ LicenseIdentifier: "LicenseRef-testdata-notice-NOTICE_LICENSE",
+ ExtractedText: "%%%Notice License%%%\n",
+ LicenseName: "testdata-notice-NOTICE_LICENSE",
+ },
+ },
},
expectedDeps: []string{
"testdata/notice/NOTICE_LICENSE",
@@ -1153,71 +1641,129 @@
condition: "proprietary",
name: "apex",
roots: []string{"highest.apex.meta_lic"},
- expectedOut: []matcher{
- spdxVersion{},
- spdxDataLicense{},
- spdxDocumentName{"Android"},
- spdxID{},
- spdxDocumentNameSpace{},
- spdxCreatorOrganization{},
- spdxCreatedTime{},
- packageTag{"testdata/proprietary/highest.apex.meta_lic"},
- packageName{"testdata/proprietary/highest.apex.meta_lic"},
- spdxPkgID{"testdata/proprietary/highest.apex.meta_lic"},
- spdxPkgDownloadLocation{"NOASSERTION"},
- spdxPkgLicenseDeclared{"testdata-firstparty-FIRST_PARTY_LICENSE"},
- spdxRelationship{"DOCUMENT ", "testdata/proprietary/highest.apex.meta_lic", "DESCRIBES"},
- packageTag{"testdata/proprietary/bin/bin1.meta_lic"},
- packageName{"testdata/proprietary/bin/bin1.meta_lic"},
- spdxPkgID{"testdata/proprietary/bin/bin1.meta_lic"},
- spdxPkgDownloadLocation{"NOASSERTION"},
- spdxPkgLicenseDeclared{"testdata-firstparty-FIRST_PARTY_LICENSE"},
- spdxRelationship{"Package-testdata/proprietary/highest.apex.meta_lic ", "testdata/proprietary/bin/bin1.meta_lic", "CONTAINS"},
- packageTag{"testdata/proprietary/bin/bin2.meta_lic"},
- packageName{"testdata/proprietary/bin/bin2.meta_lic"},
- spdxPkgID{"testdata/proprietary/bin/bin2.meta_lic"},
- spdxPkgDownloadLocation{"NOASSERTION"},
- spdxPkgLicenseDeclared{"testdata-proprietary-PROPRIETARY_LICENSE"},
- spdxRelationship{"Package-testdata/proprietary/highest.apex.meta_lic ", "testdata/proprietary/bin/bin2.meta_lic", "CONTAINS"},
- packageTag{"testdata/proprietary/lib/liba.so.meta_lic"},
- packageName{"testdata/proprietary/lib/liba.so.meta_lic"},
- spdxPkgID{"testdata/proprietary/lib/liba.so.meta_lic"},
- spdxPkgDownloadLocation{"NOASSERTION"},
- spdxPkgLicenseDeclared{"testdata-proprietary-PROPRIETARY_LICENSE"},
- spdxRelationship{"Package-testdata/proprietary/highest.apex.meta_lic ", "testdata/proprietary/lib/liba.so.meta_lic", "CONTAINS"},
- packageTag{"testdata/proprietary/lib/libb.so.meta_lic"},
- packageName{"testdata/proprietary/lib/libb.so.meta_lic"},
- spdxPkgID{"testdata/proprietary/lib/libb.so.meta_lic"},
- spdxPkgDownloadLocation{"NOASSERTION"},
- spdxPkgLicenseDeclared{"testdata-restricted-RESTRICTED_LICENSE"},
- spdxRelationship{"Package-testdata/proprietary/highest.apex.meta_lic ", "testdata/proprietary/lib/libb.so.meta_lic", "CONTAINS"},
- spdxRelationship{"Package-testdata/proprietary/bin/bin1.meta_lic ", "testdata/proprietary/lib/liba.so.meta_lic", "CONTAINS"},
- packageTag{"testdata/proprietary/lib/libc.a.meta_lic"},
- packageName{"testdata/proprietary/lib/libc.a.meta_lic"},
- spdxPkgID{"testdata/proprietary/lib/libc.a.meta_lic"},
- spdxPkgDownloadLocation{"NOASSERTION"},
- spdxPkgLicenseDeclared{"testdata-proprietary-PROPRIETARY_LICENSE"},
- spdxRelationship{"Package-testdata/proprietary/bin/bin1.meta_lic ", "testdata/proprietary/lib/libc.a.meta_lic", "CONTAINS"},
- spdxRelationship{"Package-testdata-proprietary-lib-libb.so.meta_lic ", "testdata/proprietary/bin/bin2.meta_lic", "RUNTIME_DEPENDENCY_OF"},
- packageTag{"testdata/proprietary/lib/libd.so.meta_lic"},
- packageName{"testdata/proprietary/lib/libd.so.meta_lic"},
- spdxPkgID{"testdata/proprietary/lib/libd.so.meta_lic"},
- spdxPkgDownloadLocation{"NOASSERTION"},
- spdxPkgLicenseDeclared{"testdata-notice-NOTICE_LICENSE"},
- spdxRelationship{"Package-testdata-proprietary-lib-libd.so.meta_lic ", "testdata/proprietary/bin/bin2.meta_lic", "RUNTIME_DEPENDENCY_OF"},
- spdxLicense{},
- spdxLicenseID{"testdata-firstparty-FIRST_PARTY_LICENSE"},
- spdxExtractedText{"&&&First Party License&&&"},
- spdxExtractedClosingText{},
- spdxLicenseID{"testdata-notice-NOTICE_LICENSE"},
- spdxExtractedText{"%%%Notice License%%%"},
- spdxExtractedClosingText{},
- spdxLicenseID{"testdata-proprietary-PROPRIETARY_LICENSE"},
- spdxExtractedText{"@@@Proprietary License@@@"},
- spdxExtractedClosingText{},
- spdxLicenseID{"testdata-restricted-RESTRICTED_LICENSE"},
- spdxExtractedText{"###Restricted License###"},
- spdxExtractedClosingText{},
+ expectedOut: &spdx.Document{
+ SPDXIdentifier: "DOCUMENT",
+ CreationInfo: getCreationInfo(t),
+ Packages: []*spdx.Package{
+ {
+ PackageName: "testdata-proprietary-highest.apex.meta_lic",
+ PackageVersion: "NOASSERTION",
+ PackageDownloadLocation: "NOASSERTION",
+ PackageSPDXIdentifier: common.ElementID("testdata-proprietary-highest.apex.meta_lic"),
+ PackageLicenseConcluded: "LicenseRef-testdata-firstparty-FIRST_PARTY_LICENSE",
+ },
+ {
+ PackageName: "testdata-proprietary-bin-bin1.meta_lic",
+ PackageVersion: "NOASSERTION",
+ PackageDownloadLocation: "NOASSERTION",
+ PackageSPDXIdentifier: common.ElementID("testdata-proprietary-bin-bin1.meta_lic"),
+ PackageLicenseConcluded: "LicenseRef-testdata-firstparty-FIRST_PARTY_LICENSE",
+ },
+ {
+ PackageName: "testdata-proprietary-bin-bin2.meta_lic",
+ PackageVersion: "NOASSERTION",
+ PackageDownloadLocation: "NOASSERTION",
+ PackageSPDXIdentifier: common.ElementID("testdata-proprietary-bin-bin2.meta_lic"),
+ PackageLicenseConcluded: "LicenseRef-testdata-proprietary-PROPRIETARY_LICENSE",
+ },
+ {
+ PackageName: "testdata-proprietary-lib-liba.so.meta_lic",
+ PackageVersion: "NOASSERTION",
+ PackageDownloadLocation: "NOASSERTION",
+ PackageSPDXIdentifier: common.ElementID("testdata-proprietary-lib-liba.so.meta_lic"),
+ PackageLicenseConcluded: "LicenseRef-testdata-proprietary-PROPRIETARY_LICENSE",
+ },
+ {
+ PackageName: "testdata-proprietary-lib-libb.so.meta_lic",
+ PackageVersion: "NOASSERTION",
+ PackageDownloadLocation: "NOASSERTION",
+ PackageSPDXIdentifier: common.ElementID("testdata-proprietary-lib-libb.so.meta_lic"),
+ PackageLicenseConcluded: "LicenseRef-testdata-restricted-RESTRICTED_LICENSE",
+ },
+ {
+ PackageName: "testdata-proprietary-lib-libc.a.meta_lic",
+ PackageVersion: "NOASSERTION",
+ PackageDownloadLocation: "NOASSERTION",
+ PackageSPDXIdentifier: common.ElementID("testdata-proprietary-lib-libc.a.meta_lic"),
+ PackageLicenseConcluded: "LicenseRef-testdata-proprietary-PROPRIETARY_LICENSE",
+ },
+ {
+ PackageName: "testdata-proprietary-lib-libd.so.meta_lic",
+ PackageVersion: "NOASSERTION",
+ PackageDownloadLocation: "NOASSERTION",
+ PackageSPDXIdentifier: common.ElementID("testdata-proprietary-lib-libd.so.meta_lic"),
+ PackageLicenseConcluded: "LicenseRef-testdata-notice-NOTICE_LICENSE",
+ },
+ },
+ Relationships: []*spdx.Relationship{
+ {
+ RefA: common.MakeDocElementID("", "DOCUMENT"),
+ RefB: common.MakeDocElementID("", "testdata-proprietary-highest.apex.meta_lic"),
+ Relationship: "DESCRIBES",
+ },
+ {
+ RefA: common.MakeDocElementID("", "testdata-proprietary-highest.apex.meta_lic"),
+ RefB: common.MakeDocElementID("", "testdata-proprietary-bin-bin1.meta_lic"),
+ Relationship: "CONTAINS",
+ },
+ {
+ RefA: common.MakeDocElementID("", "testdata-proprietary-highest.apex.meta_lic"),
+ RefB: common.MakeDocElementID("", "testdata-proprietary-bin-bin2.meta_lic"),
+ Relationship: "CONTAINS",
+ },
+ {
+ RefA: common.MakeDocElementID("", "testdata-proprietary-highest.apex.meta_lic"),
+ RefB: common.MakeDocElementID("", "testdata-proprietary-lib-liba.so.meta_lic"),
+ Relationship: "CONTAINS",
+ },
+ {
+ RefA: common.MakeDocElementID("", "testdata-proprietary-highest.apex.meta_lic"),
+ RefB: common.MakeDocElementID("", "testdata-proprietary-lib-libb.so.meta_lic"),
+ Relationship: "CONTAINS",
+ },
+ {
+ RefA: common.MakeDocElementID("", "testdata-proprietary-bin-bin1.meta_lic"),
+ RefB: common.MakeDocElementID("", "testdata-proprietary-lib-liba.so.meta_lic"),
+ Relationship: "CONTAINS",
+ },
+ {
+ RefA: common.MakeDocElementID("", "testdata-proprietary-bin-bin1.meta_lic"),
+ RefB: common.MakeDocElementID("", "testdata-proprietary-lib-libc.a.meta_lic"),
+ Relationship: "CONTAINS",
+ },
+ {
+ RefA: common.MakeDocElementID("", "testdata-proprietary-lib-libb.so.meta_lic"),
+ RefB: common.MakeDocElementID("", "testdata-proprietary-bin-bin2.meta_lic"),
+ Relationship: "RUNTIME_DEPENDENCY_OF",
+ },
+ {
+ RefA: common.MakeDocElementID("", "testdata-proprietary-lib-libd.so.meta_lic"),
+ RefB: common.MakeDocElementID("", "testdata-proprietary-bin-bin2.meta_lic"),
+ Relationship: "RUNTIME_DEPENDENCY_OF",
+ },
+ },
+ OtherLicenses: []*spdx.OtherLicense{
+ {
+ LicenseIdentifier: "LicenseRef-testdata-firstparty-FIRST_PARTY_LICENSE",
+ ExtractedText: "&&&First Party License&&&\n",
+ LicenseName: "testdata-firstparty-FIRST_PARTY_LICENSE",
+ },
+ {
+ LicenseIdentifier: "LicenseRef-testdata-notice-NOTICE_LICENSE",
+ ExtractedText: "%%%Notice License%%%\n",
+ LicenseName: "testdata-notice-NOTICE_LICENSE",
+ },
+ {
+ LicenseIdentifier: "LicenseRef-testdata-proprietary-PROPRIETARY_LICENSE",
+ ExtractedText: "@@@Proprietary License@@@\n",
+ LicenseName: "testdata-proprietary-PROPRIETARY_LICENSE",
+ },
+ {
+ LicenseIdentifier: "LicenseRef-testdata-restricted-RESTRICTED_LICENSE",
+ ExtractedText: "###Restricted License###\n",
+ LicenseName: "testdata-restricted-RESTRICTED_LICENSE",
+ },
+ },
},
expectedDeps: []string{
"testdata/firstparty/FIRST_PARTY_LICENSE",
@@ -1237,71 +1783,129 @@
condition: "proprietary",
name: "container",
roots: []string{"container.zip.meta_lic"},
- expectedOut: []matcher{
- spdxVersion{},
- spdxDataLicense{},
- spdxDocumentName{"Android"},
- spdxID{},
- spdxDocumentNameSpace{},
- spdxCreatorOrganization{},
- spdxCreatedTime{},
- packageTag{"testdata/proprietary/container.zip.meta_lic"},
- packageName{"testdata/proprietary/container.zip.meta_lic"},
- spdxPkgID{"testdata/proprietary/container.zip.meta_lic"},
- spdxPkgDownloadLocation{"NOASSERTION"},
- spdxPkgLicenseDeclared{"testdata-firstparty-FIRST_PARTY_LICENSE"},
- spdxRelationship{"DOCUMENT ", "testdata/proprietary/container.zip.meta_lic", "DESCRIBES"},
- packageTag{"testdata/proprietary/bin/bin1.meta_lic"},
- packageName{"testdata/proprietary/bin/bin1.meta_lic"},
- spdxPkgID{"testdata/proprietary/bin/bin1.meta_lic"},
- spdxPkgDownloadLocation{"NOASSERTION"},
- spdxPkgLicenseDeclared{"testdata-firstparty-FIRST_PARTY_LICENSE"},
- spdxRelationship{"Package-testdata/proprietary/container.zip.meta_lic ", "testdata/proprietary/bin/bin1.meta_lic", "CONTAINS"},
- packageTag{"testdata/proprietary/bin/bin2.meta_lic"},
- packageName{"testdata/proprietary/bin/bin2.meta_lic"},
- spdxPkgID{"testdata/proprietary/bin/bin2.meta_lic"},
- spdxPkgDownloadLocation{"NOASSERTION"},
- spdxPkgLicenseDeclared{"testdata-proprietary-PROPRIETARY_LICENSE"},
- spdxRelationship{"Package-testdata/proprietary/container.zip.meta_lic ", "testdata/proprietary/bin/bin2.meta_lic", "CONTAINS"},
- packageTag{"testdata/proprietary/lib/liba.so.meta_lic"},
- packageName{"testdata/proprietary/lib/liba.so.meta_lic"},
- spdxPkgID{"testdata/proprietary/lib/liba.so.meta_lic"},
- spdxPkgDownloadLocation{"NOASSERTION"},
- spdxPkgLicenseDeclared{"testdata-proprietary-PROPRIETARY_LICENSE"},
- spdxRelationship{"Package-testdata/proprietary/container.zip.meta_lic ", "testdata/proprietary/lib/liba.so.meta_lic", "CONTAINS"},
- packageTag{"testdata/proprietary/lib/libb.so.meta_lic"},
- packageName{"testdata/proprietary/lib/libb.so.meta_lic"},
- spdxPkgID{"testdata/proprietary/lib/libb.so.meta_lic"},
- spdxPkgDownloadLocation{"NOASSERTION"},
- spdxPkgLicenseDeclared{"testdata-restricted-RESTRICTED_LICENSE"},
- spdxRelationship{"Package-testdata/proprietary/container.zip.meta_lic ", "testdata/proprietary/lib/libb.so.meta_lic", "CONTAINS"},
- spdxRelationship{"Package-testdata/proprietary/bin/bin1.meta_lic ", "testdata/proprietary/lib/liba.so.meta_lic", "CONTAINS"},
- packageTag{"testdata/proprietary/lib/libc.a.meta_lic"},
- packageName{"testdata/proprietary/lib/libc.a.meta_lic"},
- spdxPkgID{"testdata/proprietary/lib/libc.a.meta_lic"},
- spdxPkgDownloadLocation{"NOASSERTION"},
- spdxPkgLicenseDeclared{"testdata-proprietary-PROPRIETARY_LICENSE"},
- spdxRelationship{"Package-testdata/proprietary/bin/bin1.meta_lic ", "testdata/proprietary/lib/libc.a.meta_lic", "CONTAINS"},
- spdxRelationship{"Package-testdata-proprietary-lib-libb.so.meta_lic ", "testdata/proprietary/bin/bin2.meta_lic", "RUNTIME_DEPENDENCY_OF"},
- packageTag{"testdata/proprietary/lib/libd.so.meta_lic"},
- packageName{"testdata/proprietary/lib/libd.so.meta_lic"},
- spdxPkgID{"testdata/proprietary/lib/libd.so.meta_lic"},
- spdxPkgDownloadLocation{"NOASSERTION"},
- spdxPkgLicenseDeclared{"testdata-notice-NOTICE_LICENSE"},
- spdxRelationship{"Package-testdata-proprietary-lib-libd.so.meta_lic ", "testdata/proprietary/bin/bin2.meta_lic", "RUNTIME_DEPENDENCY_OF"},
- spdxLicense{},
- spdxLicenseID{"testdata-firstparty-FIRST_PARTY_LICENSE"},
- spdxExtractedText{"&&&First Party License&&&"},
- spdxExtractedClosingText{},
- spdxLicenseID{"testdata-notice-NOTICE_LICENSE"},
- spdxExtractedText{"%%%Notice License%%%"},
- spdxExtractedClosingText{},
- spdxLicenseID{"testdata-proprietary-PROPRIETARY_LICENSE"},
- spdxExtractedText{"@@@Proprietary License@@@"},
- spdxExtractedClosingText{},
- spdxLicenseID{"testdata-restricted-RESTRICTED_LICENSE"},
- spdxExtractedText{"###Restricted License###"},
- spdxExtractedClosingText{},
+ expectedOut: &spdx.Document{
+ SPDXIdentifier: "DOCUMENT",
+ CreationInfo: getCreationInfo(t),
+ Packages: []*spdx.Package{
+ {
+ PackageName: "testdata-proprietary-container.zip.meta_lic",
+ PackageVersion: "NOASSERTION",
+ PackageDownloadLocation: "NOASSERTION",
+ PackageSPDXIdentifier: common.ElementID("testdata-proprietary-container.zip.meta_lic"),
+ PackageLicenseConcluded: "LicenseRef-testdata-firstparty-FIRST_PARTY_LICENSE",
+ },
+ {
+ PackageName: "testdata-proprietary-bin-bin1.meta_lic",
+ PackageVersion: "NOASSERTION",
+ PackageDownloadLocation: "NOASSERTION",
+ PackageSPDXIdentifier: common.ElementID("testdata-proprietary-bin-bin1.meta_lic"),
+ PackageLicenseConcluded: "LicenseRef-testdata-firstparty-FIRST_PARTY_LICENSE",
+ },
+ {
+ PackageName: "testdata-proprietary-bin-bin2.meta_lic",
+ PackageVersion: "NOASSERTION",
+ PackageDownloadLocation: "NOASSERTION",
+ PackageSPDXIdentifier: common.ElementID("testdata-proprietary-bin-bin2.meta_lic"),
+ PackageLicenseConcluded: "LicenseRef-testdata-proprietary-PROPRIETARY_LICENSE",
+ },
+ {
+ PackageName: "testdata-proprietary-lib-liba.so.meta_lic",
+ PackageVersion: "NOASSERTION",
+ PackageDownloadLocation: "NOASSERTION",
+ PackageSPDXIdentifier: common.ElementID("testdata-proprietary-lib-liba.so.meta_lic"),
+ PackageLicenseConcluded: "LicenseRef-testdata-proprietary-PROPRIETARY_LICENSE",
+ },
+ {
+ PackageName: "testdata-proprietary-lib-libb.so.meta_lic",
+ PackageVersion: "NOASSERTION",
+ PackageDownloadLocation: "NOASSERTION",
+ PackageSPDXIdentifier: common.ElementID("testdata-proprietary-lib-libb.so.meta_lic"),
+ PackageLicenseConcluded: "LicenseRef-testdata-restricted-RESTRICTED_LICENSE",
+ },
+ {
+ PackageName: "testdata-proprietary-lib-libc.a.meta_lic",
+ PackageVersion: "NOASSERTION",
+ PackageDownloadLocation: "NOASSERTION",
+ PackageSPDXIdentifier: common.ElementID("testdata-proprietary-lib-libc.a.meta_lic"),
+ PackageLicenseConcluded: "LicenseRef-testdata-proprietary-PROPRIETARY_LICENSE",
+ },
+ {
+ PackageName: "testdata-proprietary-lib-libd.so.meta_lic",
+ PackageVersion: "NOASSERTION",
+ PackageDownloadLocation: "NOASSERTION",
+ PackageSPDXIdentifier: common.ElementID("testdata-proprietary-lib-libd.so.meta_lic"),
+ PackageLicenseConcluded: "LicenseRef-testdata-notice-NOTICE_LICENSE",
+ },
+ },
+ Relationships: []*spdx.Relationship{
+ {
+ RefA: common.MakeDocElementID("", "DOCUMENT"),
+ RefB: common.MakeDocElementID("", "testdata-proprietary-container.zip.meta_lic"),
+ Relationship: "DESCRIBES",
+ },
+ {
+ RefA: common.MakeDocElementID("", "testdata-proprietary-container.zip.meta_lic"),
+ RefB: common.MakeDocElementID("", "testdata-proprietary-bin-bin1.meta_lic"),
+ Relationship: "CONTAINS",
+ },
+ {
+ RefA: common.MakeDocElementID("", "testdata-proprietary-container.zip.meta_lic"),
+ RefB: common.MakeDocElementID("", "testdata-proprietary-bin-bin2.meta_lic"),
+ Relationship: "CONTAINS",
+ },
+ {
+ RefA: common.MakeDocElementID("", "testdata-proprietary-container.zip.meta_lic"),
+ RefB: common.MakeDocElementID("", "testdata-proprietary-lib-liba.so.meta_lic"),
+ Relationship: "CONTAINS",
+ },
+ {
+ RefA: common.MakeDocElementID("", "testdata-proprietary-container.zip.meta_lic"),
+ RefB: common.MakeDocElementID("", "testdata-proprietary-lib-libb.so.meta_lic"),
+ Relationship: "CONTAINS",
+ },
+ {
+ RefA: common.MakeDocElementID("", "testdata-proprietary-bin-bin1.meta_lic"),
+ RefB: common.MakeDocElementID("", "testdata-proprietary-lib-liba.so.meta_lic"),
+ Relationship: "CONTAINS",
+ },
+ {
+ RefA: common.MakeDocElementID("", "testdata-proprietary-bin-bin1.meta_lic"),
+ RefB: common.MakeDocElementID("", "testdata-proprietary-lib-libc.a.meta_lic"),
+ Relationship: "CONTAINS",
+ },
+ {
+ RefA: common.MakeDocElementID("", "testdata-proprietary-lib-libb.so.meta_lic"),
+ RefB: common.MakeDocElementID("", "testdata-proprietary-bin-bin2.meta_lic"),
+ Relationship: "RUNTIME_DEPENDENCY_OF",
+ },
+ {
+ RefA: common.MakeDocElementID("", "testdata-proprietary-lib-libd.so.meta_lic"),
+ RefB: common.MakeDocElementID("", "testdata-proprietary-bin-bin2.meta_lic"),
+ Relationship: "RUNTIME_DEPENDENCY_OF",
+ },
+ },
+ OtherLicenses: []*spdx.OtherLicense{
+ {
+ LicenseIdentifier: "LicenseRef-testdata-firstparty-FIRST_PARTY_LICENSE",
+ ExtractedText: "&&&First Party License&&&\n",
+ LicenseName: "testdata-firstparty-FIRST_PARTY_LICENSE",
+ },
+ {
+ LicenseIdentifier: "LicenseRef-testdata-notice-NOTICE_LICENSE",
+ ExtractedText: "%%%Notice License%%%\n",
+ LicenseName: "testdata-notice-NOTICE_LICENSE",
+ },
+ {
+ LicenseIdentifier: "LicenseRef-testdata-proprietary-PROPRIETARY_LICENSE",
+ ExtractedText: "@@@Proprietary License@@@\n",
+ LicenseName: "testdata-proprietary-PROPRIETARY_LICENSE",
+ },
+ {
+ LicenseIdentifier: "LicenseRef-testdata-restricted-RESTRICTED_LICENSE",
+ ExtractedText: "###Restricted License###\n",
+ LicenseName: "testdata-restricted-RESTRICTED_LICENSE",
+ },
+ },
},
expectedDeps: []string{
"testdata/firstparty/FIRST_PARTY_LICENSE",
@@ -1321,48 +1925,78 @@
condition: "proprietary",
name: "application",
roots: []string{"application.meta_lic"},
- expectedOut: []matcher{
- spdxVersion{},
- spdxDataLicense{},
- spdxDocumentName{"Android"},
- spdxID{},
- spdxDocumentNameSpace{},
- spdxCreatorOrganization{},
- spdxCreatedTime{},
- packageTag{"testdata/proprietary/application.meta_lic"},
- packageName{"testdata/proprietary/application.meta_lic"},
- spdxPkgID{"testdata/proprietary/application.meta_lic"},
- spdxPkgDownloadLocation{"NOASSERTION"},
- spdxPkgLicenseDeclared{"testdata-firstparty-FIRST_PARTY_LICENSE"},
- spdxRelationship{"DOCUMENT ", "testdata/proprietary/application.meta_lic", "DESCRIBES"},
- packageTag{"testdata/proprietary/bin/bin3.meta_lic"},
- packageName{"testdata/proprietary/bin/bin3.meta_lic"},
- spdxPkgID{"testdata/proprietary/bin/bin3.meta_lic"},
- spdxPkgDownloadLocation{"NOASSERTION"},
- spdxPkgLicenseDeclared{"testdata-restricted-RESTRICTED_LICENSE"},
- spdxRelationship{"Package-testdata/proprietary/bin/bin3.meta_lic ", "testdata/proprietary/application.meta_lic", "BUILD_TOOL_OF"},
- packageTag{"testdata/proprietary/lib/liba.so.meta_lic"},
- packageName{"testdata/proprietary/lib/liba.so.meta_lic"},
- spdxPkgID{"testdata/proprietary/lib/liba.so.meta_lic"},
- spdxPkgDownloadLocation{"NOASSERTION"},
- spdxPkgLicenseDeclared{"testdata-proprietary-PROPRIETARY_LICENSE"},
- spdxRelationship{"Package-testdata/proprietary/application.meta_lic ", "testdata/proprietary/lib/liba.so.meta_lic", "CONTAINS"},
- packageTag{"testdata/proprietary/lib/libb.so.meta_lic"},
- packageName{"testdata/proprietary/lib/libb.so.meta_lic"},
- spdxPkgID{"testdata/proprietary/lib/libb.so.meta_lic"},
- spdxPkgDownloadLocation{"NOASSERTION"},
- spdxPkgLicenseDeclared{"testdata-restricted-RESTRICTED_LICENSE"},
- spdxRelationship{"Package-testdata/proprietary/lib/libb.so.meta_lic ", "testdata/proprietary/application.meta_lic", "RUNTIME_DEPENDENCY_OF"},
- spdxLicense{},
- spdxLicenseID{"testdata-firstparty-FIRST_PARTY_LICENSE"},
- spdxExtractedText{"&&&First Party License&&&"},
- spdxExtractedClosingText{},
- spdxLicenseID{"testdata-proprietary-PROPRIETARY_LICENSE"},
- spdxExtractedText{"@@@Proprietary License@@@"},
- spdxExtractedClosingText{},
- spdxLicenseID{"testdata-restricted-RESTRICTED_LICENSE"},
- spdxExtractedText{"###Restricted License###"},
- spdxExtractedClosingText{},
+ expectedOut: &spdx.Document{
+ SPDXIdentifier: "DOCUMENT",
+ CreationInfo: getCreationInfo(t),
+ Packages: []*spdx.Package{
+ {
+ PackageName: "testdata-proprietary-application.meta_lic",
+ PackageVersion: "NOASSERTION",
+ PackageDownloadLocation: "NOASSERTION",
+ PackageSPDXIdentifier: common.ElementID("testdata-proprietary-application.meta_lic"),
+ PackageLicenseConcluded: "LicenseRef-testdata-firstparty-FIRST_PARTY_LICENSE",
+ },
+ {
+ PackageName: "testdata-proprietary-bin-bin3.meta_lic",
+ PackageVersion: "NOASSERTION",
+ PackageDownloadLocation: "NOASSERTION",
+ PackageSPDXIdentifier: common.ElementID("testdata-proprietary-bin-bin3.meta_lic"),
+ PackageLicenseConcluded: "LicenseRef-testdata-restricted-RESTRICTED_LICENSE",
+ },
+ {
+ PackageName: "testdata-proprietary-lib-liba.so.meta_lic",
+ PackageVersion: "NOASSERTION",
+ PackageDownloadLocation: "NOASSERTION",
+ PackageSPDXIdentifier: common.ElementID("testdata-proprietary-lib-liba.so.meta_lic"),
+ PackageLicenseConcluded: "LicenseRef-testdata-proprietary-PROPRIETARY_LICENSE",
+ },
+ {
+ PackageName: "testdata-proprietary-lib-libb.so.meta_lic",
+ PackageVersion: "NOASSERTION",
+ PackageDownloadLocation: "NOASSERTION",
+ PackageSPDXIdentifier: common.ElementID("testdata-proprietary-lib-libb.so.meta_lic"),
+ PackageLicenseConcluded: "LicenseRef-testdata-restricted-RESTRICTED_LICENSE",
+ },
+ },
+ Relationships: []*spdx.Relationship{
+ {
+ RefA: common.MakeDocElementID("", "DOCUMENT"),
+ RefB: common.MakeDocElementID("", "testdata-proprietary-application.meta_lic"),
+ Relationship: "DESCRIBES",
+ },
+ {
+ RefA: common.MakeDocElementID("", "testdata-proprietary-bin-bin3.meta_lic"),
+ RefB: common.MakeDocElementID("", "testdata-proprietary-application.meta_lic"),
+ Relationship: "BUILD_TOOL_OF",
+ },
+ {
+ RefA: common.MakeDocElementID("", "testdata-proprietary-application.meta_lic"),
+ RefB: common.MakeDocElementID("", "testdata-proprietary-lib-liba.so.meta_lic"),
+ Relationship: "CONTAINS",
+ },
+ {
+ RefA: common.MakeDocElementID("", "testdata-proprietary-lib-libb.so.meta_lic"),
+ RefB: common.MakeDocElementID("", "testdata-proprietary-application.meta_lic"),
+ Relationship: "RUNTIME_DEPENDENCY_OF",
+ },
+ },
+ OtherLicenses: []*spdx.OtherLicense{
+ {
+ LicenseIdentifier: "LicenseRef-testdata-firstparty-FIRST_PARTY_LICENSE",
+ ExtractedText: "&&&First Party License&&&\n",
+ LicenseName: "testdata-firstparty-FIRST_PARTY_LICENSE",
+ },
+ {
+ LicenseIdentifier: "LicenseRef-testdata-proprietary-PROPRIETARY_LICENSE",
+ ExtractedText: "@@@Proprietary License@@@\n",
+ LicenseName: "testdata-proprietary-PROPRIETARY_LICENSE",
+ },
+ {
+ LicenseIdentifier: "LicenseRef-testdata-restricted-RESTRICTED_LICENSE",
+ ExtractedText: "###Restricted License###\n",
+ LicenseName: "testdata-restricted-RESTRICTED_LICENSE",
+ },
+ },
},
expectedDeps: []string{
"testdata/firstparty/FIRST_PARTY_LICENSE",
@@ -1378,39 +2012,61 @@
condition: "proprietary",
name: "binary",
roots: []string{"bin/bin1.meta_lic"},
- expectedOut: []matcher{
- spdxVersion{},
- spdxDataLicense{},
- spdxDocumentName{"Android"},
- spdxID{},
- spdxDocumentNameSpace{},
- spdxCreatorOrganization{},
- spdxCreatedTime{},
- packageTag{"testdata/proprietary/bin/bin1.meta_lic"},
- packageName{"testdata/proprietary/bin/bin1.meta_lic"},
- spdxPkgID{"testdata/proprietary/bin/bin1.meta_lic"},
- spdxPkgDownloadLocation{"NOASSERTION"},
- spdxPkgLicenseDeclared{"testdata-firstparty-FIRST_PARTY_LICENSE"},
- spdxRelationship{"DOCUMENT ", "testdata/proprietary/bin/bin1.meta_lic", "DESCRIBES"},
- packageTag{"testdata/proprietary/lib/liba.so.meta_lic"},
- packageName{"testdata/proprietary/lib/liba.so.meta_lic"},
- spdxPkgID{"testdata/proprietary/lib/liba.so.meta_lic"},
- spdxPkgDownloadLocation{"NOASSERTION"},
- spdxPkgLicenseDeclared{"testdata-proprietary-PROPRIETARY_LICENSE"},
- spdxRelationship{"Package-testdata/proprietary/bin/bin1.meta_lic ", "testdata/proprietary/lib/liba.so.meta_lic", "CONTAINS"},
- packageTag{"testdata/proprietary/lib/libc.a.meta_lic"},
- packageName{"testdata/proprietary/lib/libc.a.meta_lic"},
- spdxPkgID{"testdata/proprietary/lib/libc.a.meta_lic"},
- spdxPkgDownloadLocation{"NOASSERTION"},
- spdxPkgLicenseDeclared{"testdata-proprietary-PROPRIETARY_LICENSE"},
- spdxRelationship{"Package-testdata/proprietary/bin/bin1.meta_lic ", "testdata/proprietary/lib/libc.a.meta_lic", "CONTAINS"},
- spdxLicense{},
- spdxLicenseID{"testdata-firstparty-FIRST_PARTY_LICENSE"},
- spdxExtractedText{"&&&First Party License&&&"},
- spdxExtractedClosingText{},
- spdxLicenseID{"testdata-proprietary-PROPRIETARY_LICENSE"},
- spdxExtractedText{"@@@Proprietary License@@@"},
- spdxExtractedClosingText{},
+ expectedOut: &spdx.Document{
+ SPDXIdentifier: "DOCUMENT",
+ CreationInfo: getCreationInfo(t),
+ Packages: []*spdx.Package{
+ {
+ PackageName: "testdata-proprietary-bin-bin1.meta_lic",
+ PackageVersion: "NOASSERTION",
+ PackageDownloadLocation: "NOASSERTION",
+ PackageSPDXIdentifier: common.ElementID("testdata-proprietary-bin-bin1.meta_lic"),
+ PackageLicenseConcluded: "LicenseRef-testdata-firstparty-FIRST_PARTY_LICENSE",
+ },
+ {
+ PackageName: "testdata-proprietary-lib-liba.so.meta_lic",
+ PackageVersion: "NOASSERTION",
+ PackageDownloadLocation: "NOASSERTION",
+ PackageSPDXIdentifier: common.ElementID("testdata-proprietary-lib-liba.so.meta_lic"),
+ PackageLicenseConcluded: "LicenseRef-testdata-proprietary-PROPRIETARY_LICENSE",
+ },
+ {
+ PackageName: "testdata-proprietary-lib-libc.a.meta_lic",
+ PackageVersion: "NOASSERTION",
+ PackageDownloadLocation: "NOASSERTION",
+ PackageSPDXIdentifier: common.ElementID("testdata-proprietary-lib-libc.a.meta_lic"),
+ PackageLicenseConcluded: "LicenseRef-testdata-proprietary-PROPRIETARY_LICENSE",
+ },
+ },
+ Relationships: []*spdx.Relationship{
+ {
+ RefA: common.MakeDocElementID("", "DOCUMENT"),
+ RefB: common.MakeDocElementID("", "testdata-proprietary-bin-bin1.meta_lic"),
+ Relationship: "DESCRIBES",
+ },
+ {
+ RefA: common.MakeDocElementID("", "testdata-proprietary-bin-bin1.meta_lic"),
+ RefB: common.MakeDocElementID("", "testdata-proprietary-lib-liba.so.meta_lic"),
+ Relationship: "CONTAINS",
+ },
+ {
+ RefA: common.MakeDocElementID("", "testdata-proprietary-bin-bin1.meta_lic"),
+ RefB: common.MakeDocElementID("", "testdata-proprietary-lib-libc.a.meta_lic"),
+ Relationship: "CONTAINS",
+ },
+ },
+ OtherLicenses: []*spdx.OtherLicense{
+ {
+ LicenseIdentifier: "LicenseRef-testdata-firstparty-FIRST_PARTY_LICENSE",
+ ExtractedText: "&&&First Party License&&&\n",
+ LicenseName: "testdata-firstparty-FIRST_PARTY_LICENSE",
+ },
+ {
+ LicenseIdentifier: "LicenseRef-testdata-proprietary-PROPRIETARY_LICENSE",
+ ExtractedText: "@@@Proprietary License@@@\n",
+ LicenseName: "testdata-proprietary-PROPRIETARY_LICENSE",
+ },
+ },
},
expectedDeps: []string{
"testdata/firstparty/FIRST_PARTY_LICENSE",
@@ -1424,24 +2080,32 @@
condition: "proprietary",
name: "library",
roots: []string{"lib/libd.so.meta_lic"},
- expectedOut: []matcher{
- spdxVersion{},
- spdxDataLicense{},
- spdxDocumentName{"Android"},
- spdxID{},
- spdxDocumentNameSpace{},
- spdxCreatorOrganization{},
- spdxCreatedTime{},
- packageTag{"testdata/proprietary/lib/libd.so.meta_lic"},
- packageName{"testdata/proprietary/lib/libd.so.meta_lic"},
- spdxPkgID{"testdata/proprietary/lib/libd.so.meta_lic"},
- spdxPkgDownloadLocation{"NOASSERTION"},
- spdxPkgLicenseDeclared{"testdata-notice-NOTICE_LICENSE"},
- spdxRelationship{"DOCUMENT ", "testdata/proprietary/lib/libd.so.meta_lic", "DESCRIBES"},
- spdxLicense{},
- spdxLicenseID{"testdata-notice-NOTICE_LICENSE"},
- spdxExtractedText{"%%%Notice License%%%"},
- spdxExtractedClosingText{},
+ expectedOut: &spdx.Document{
+ SPDXIdentifier: "DOCUMENT",
+ CreationInfo: getCreationInfo(t),
+ Packages: []*spdx.Package{
+ {
+ PackageName: "testdata-proprietary-lib-libd.so.meta_lic",
+ PackageVersion: "NOASSERTION",
+ PackageDownloadLocation: "NOASSERTION",
+ PackageSPDXIdentifier: common.ElementID("testdata-proprietary-lib-libd.so.meta_lic"),
+ PackageLicenseConcluded: "LicenseRef-testdata-notice-NOTICE_LICENSE",
+ },
+ },
+ Relationships: []*spdx.Relationship{
+ {
+ RefA: common.MakeDocElementID("", "DOCUMENT"),
+ RefB: common.MakeDocElementID("", "testdata-proprietary-lib-libd.so.meta_lic"),
+ Relationship: "DESCRIBES",
+ },
+ },
+ OtherLicenses: []*spdx.OtherLicense{
+ {
+ LicenseIdentifier: "LicenseRef-testdata-notice-NOTICE_LICENSE",
+ ExtractedText: "%%%Notice License%%%\n",
+ LicenseName: "testdata-notice-NOTICE_LICENSE",
+ },
+ },
},
expectedDeps: []string{
"testdata/notice/NOTICE_LICENSE",
@@ -1461,7 +2125,7 @@
ctx := context{stdout, stderr, compliance.GetFS(tt.outDir), "Android", []string{tt.stripPrefix}, fakeTime}
- deps, err := sbomGenerator(&ctx, rootFiles...)
+ spdxDoc, deps, err := sbomGenerator(&ctx, rootFiles...)
if err != nil {
t.Fatalf("sbom: error = %v, stderr = %v", err, stderr)
return
@@ -1470,28 +2134,26 @@
t.Errorf("sbom: gotStderr = %v, want none", stderr)
}
- t.Logf("got stdout: %s", stdout.String())
-
- t.Logf("want stdout: %s", matcherList(tt.expectedOut).String())
-
- out := bufio.NewScanner(stdout)
- lineno := 0
- for out.Scan() {
- line := out.Text()
- if strings.TrimLeft(line, " ") == "" {
- continue
- }
- if len(tt.expectedOut) <= lineno {
- t.Errorf("sbom: unexpected output at line %d: got %q, want nothing (wanted %d lines)", lineno+1, line, len(tt.expectedOut))
- } else if !tt.expectedOut[lineno].isMatch(line) {
- t.Errorf("sbom: unexpected output at line %d: got %q, want %q", lineno+1, line, tt.expectedOut[lineno])
- }
- lineno++
- }
- for ; lineno < len(tt.expectedOut); lineno++ {
- t.Errorf("bom: missing output line %d: ended early, want %q", lineno+1, tt.expectedOut[lineno])
+ gotData, err := json.Marshal(spdxDoc)
+ if err != nil {
+ t.Fatalf("sbom: failed to marshal spdx doc: %v", err)
+ return
}
+ t.Logf("Got SPDX Doc: %s", string(gotData))
+
+ expectedData, err := json.Marshal(tt.expectedOut)
+ if err != nil {
+ t.Fatalf("sbom: failed to marshal spdx doc: %v", err)
+ return
+ }
+
+ t.Logf("Want SPDX Doc: %s", string(expectedData))
+
+ // compare the spdx Docs
+ compareSpdxDocs(t, spdxDoc, tt.expectedOut)
+
+ // compare deps
t.Logf("got deps: %q", deps)
t.Logf("want deps: %q", tt.expectedDeps)
@@ -1504,242 +2166,154 @@
}
}
-type matcher interface {
- isMatch(line string) bool
- String() string
+func getCreationInfo(t *testing.T) *spdx.CreationInfo {
+ ci, err := builder2v2.BuildCreationInfoSection2_2("Organization", "Google LLC", nil)
+ if err != nil {
+ t.Errorf("Unable to get creation info: %v", err)
+ return nil
+ }
+ return ci
}
-type packageTag struct {
- name string
+// compareSpdxDocs deep-compares two spdx docs by going through the info section, packages, relationships and licenses
+func compareSpdxDocs(t *testing.T, actual, expected *spdx.Document) {
+
+ if actual == nil || expected == nil {
+ t.Errorf("SBOM: SPDX Doc is nil! Got %v: Expected %v", actual, expected)
+ }
+ // compare creation info
+ compareSpdxCreationInfo(t, actual.CreationInfo, expected.CreationInfo)
+
+ // compare packages
+ if len(actual.Packages) != len(expected.Packages) {
+ t.Errorf("SBOM: Number of Packages is different! Got %d: Expected %d", len(actual.Packages), len(expected.Packages))
+ }
+
+ for i, pkg := range actual.Packages {
+ if !compareSpdxPackages(t, i, pkg, expected.Packages[i]) {
+ break
+ }
+ }
+
+ // compare licenses
+ if len(actual.OtherLicenses) != len(expected.OtherLicenses) {
+ t.Errorf("SBOM: Number of Licenses in actual is different! Got %d: Expected %d", len(actual.OtherLicenses), len(expected.OtherLicenses))
+ }
+ for i, license := range actual.OtherLicenses {
+ if !compareLicenses(t, i, license, expected.OtherLicenses[i]) {
+ break
+ }
+ }
+
+ //compare Relationships
+ if len(actual.Relationships) != len(expected.Relationships) {
+ t.Errorf("SBOM: Number of Licenses in actual is different! Got %d: Expected %d", len(actual.Relationships), len(expected.Relationships))
+ }
+ for i, rl := range actual.Relationships {
+ if !compareRelationShips(t, i, rl, expected.Relationships[i]) {
+ break
+ }
+ }
}
-func (m packageTag) isMatch(line string) bool {
- groups := spdxPackageTag.FindStringSubmatch(line)
- if len(groups) != 2 {
+func compareSpdxCreationInfo(t *testing.T, actual, expected *spdx.CreationInfo) {
+ if actual == nil || expected == nil {
+ t.Errorf("SBOM: Creation info is nil! Got %q: Expected %q", actual, expected)
+ }
+
+ if actual.LicenseListVersion != expected.LicenseListVersion {
+ t.Errorf("SBOM: Creation info license version Error! Got %s: Expected %s", actual.LicenseListVersion, expected.LicenseListVersion)
+ }
+
+ if len(actual.Creators) != len(expected.Creators) {
+ t.Errorf("SBOM: Creation info creators Error! Got %d: Expected %d", len(actual.Creators), len(expected.Creators))
+ }
+
+ for i, info := range actual.Creators {
+ if info != expected.Creators[i] {
+ t.Errorf("SBOM: Creation info creators Error! Got %q: Expected %q", info, expected.Creators[i])
+ }
+ }
+}
+
+func compareSpdxPackages(t *testing.T, i int, actual, expected *spdx.Package) bool {
+ if actual == nil || expected == nil {
+ t.Errorf("SBOM: Packages are nil at index %d! Got %v: Expected %v", i, actual, expected)
return false
}
- return groups[1] == m.name
-}
-
-func (m packageTag) String() string {
- return "##### Package: " + m.name
-}
-
-type packageName struct {
- name string
-}
-
-func (m packageName) isMatch(line string) bool {
- groups := spdxPackageNameTag.FindStringSubmatch(line)
- if len(groups) != 2 {
+ if actual.PackageName != expected.PackageName {
+ t.Errorf("SBOM: Package name Error at index %d! Got %s: Expected %s", i, actual.PackageName, expected.PackageName)
return false
}
- return groups[1] == replaceSlashes(m.name)
-}
-func (m packageName) String() string {
- return "PackageName: " + replaceSlashes(m.name)
-}
-
-type spdxID struct {}
-
-func (m spdxID) isMatch(line string) bool {
- return spdxIDTag.MatchString(line)
-}
-
-func (m spdxID) String() string {
- return "SPDXID: SPDXRef-DOCUMENT"
-}
-
-type spdxPkgID struct {
- name string
-}
-
-func (m spdxPkgID) isMatch(line string) bool {
- groups := spdxPkgIDTag.FindStringSubmatch(line)
- if len(groups) != 2 {
+ if actual.PackageVersion != expected.PackageVersion {
+ t.Errorf("SBOM: Package version Error at index %d! Got %s: Expected %s", i, actual.PackageVersion, expected.PackageVersion)
return false
}
- return groups[1] == replaceSlashes(m.name)
+
+ if actual.PackageSPDXIdentifier != expected.PackageSPDXIdentifier {
+ t.Errorf("SBOM: Package identifier Error at index %d! Got %s: Expected %s", i, actual.PackageSPDXIdentifier, expected.PackageSPDXIdentifier)
+ return false
+ }
+
+ if actual.PackageDownloadLocation != expected.PackageDownloadLocation {
+ t.Errorf("SBOM: Package download location Error at index %d! Got %s: Expected %s", i, actual.PackageDownloadLocation, expected.PackageDownloadLocation)
+ return false
+ }
+
+ if actual.PackageLicenseConcluded != expected.PackageLicenseConcluded {
+ t.Errorf("SBOM: Package license concluded Error at index %d! Got %s: Expected %s", i, actual.PackageLicenseConcluded, expected.PackageLicenseConcluded)
+ return false
+ }
+ return true
}
-func (m spdxPkgID) String() string {
- return "SPDXID: SPDXRef-Package-" + replaceSlashes(m.name)
+func compareRelationShips(t *testing.T, i int, actual, expected *spdx.Relationship) bool {
+ if actual == nil || expected == nil {
+ t.Errorf("SBOM: Relationships is nil at index %d! Got %v: Expected %v", i, actual, expected)
+ return false
+ }
+
+ if actual.RefA != expected.RefA {
+ t.Errorf("SBOM: Relationship RefA Error at index %d! Got %s: Expected %s", i, actual.RefA, expected.RefA)
+ return false
+ }
+
+ if actual.RefB != expected.RefB {
+ t.Errorf("SBOM: Relationship RefB Error at index %d! Got %s: Expected %s", i, actual.RefB, expected.RefB)
+ return false
+ }
+
+ if actual.Relationship != expected.Relationship {
+ t.Errorf("SBOM: Relationship type Error at index %d! Got %s: Expected %s", i, actual.Relationship, expected.Relationship)
+ return false
+ }
+ return true
}
-type spdxVersion struct{}
+func compareLicenses(t *testing.T, i int, actual, expected *spdx.OtherLicense) bool {
+ if actual == nil || expected == nil {
+ t.Errorf("SBOM: Licenses is nil at index %d! Got %v: Expected %v", i, actual, expected)
+ return false
+ }
-func (m spdxVersion) isMatch(line string) bool {
- return spdxVersionTag.MatchString(line)
-}
+ if actual.LicenseName != expected.LicenseName {
+ t.Errorf("SBOM: License Name Error at index %d! Got %s: Expected %s", i, actual.LicenseName, expected.LicenseName)
+ return false
+ }
-func (m spdxVersion) String() string {
- return "SPDXVersion: SPDX-2.2"
-}
+ if actual.LicenseIdentifier != expected.LicenseIdentifier {
+ t.Errorf("SBOM: License Identifier Error at index %d! Got %s: Expected %s", i, actual.LicenseIdentifier, expected.LicenseIdentifier)
+ return false
+ }
-type spdxDataLicense struct{}
-
-func (m spdxDataLicense) isMatch(line string) bool {
- return spdxDataLicenseTag.MatchString(line)
-}
-
-func (m spdxDataLicense) String() string {
- return "DataLicense: CC0-1.0"
-}
-
-type spdxDocumentName struct {
- name string
-}
-
-func (m spdxDocumentName) isMatch(line string) bool {
- return spdxDocumentNameTag.MatchString(line)
-}
-
-func (m spdxDocumentName) String() string {
- return "DocumentName: " + m.name
-}
-
-type spdxDocumentNameSpace struct {
- name string
-}
-
-func (m spdxDocumentNameSpace) isMatch(line string) bool {
- return spdxDocumentNameSpaceTag.MatchString(line)
-}
-
-func (m spdxDocumentNameSpace) String() string {
- return "DocumentNameSpace: Android"
-}
-
-type spdxCreatorOrganization struct{}
-
-func (m spdxCreatorOrganization) isMatch(line string) bool {
- return spdxCreatorOrganizationTag.MatchString(line)
-}
-
-func (m spdxCreatorOrganization) String() string {
- return "Creator: Organization: Google LLC"
+ if actual.ExtractedText != expected.ExtractedText {
+ t.Errorf("SBOM: License Extracted Text Error at index %d! Got: %q want: %q", i, actual.ExtractedText, expected.ExtractedText)
+ return false
+ }
+ return true
}
func fakeTime() time.Time {
return time.UnixMicro(0).UTC()
}
-
-type spdxCreatedTime struct{}
-
-func (m spdxCreatedTime) isMatch(line string) bool {
- return spdxCreatedTimeTag.MatchString(line)
-}
-
-func (m spdxCreatedTime) String() string {
- return "Created: 1970-01-01T00:00:00Z"
-}
-
-type spdxPkgDownloadLocation struct {
- name string
-}
-
-func (m spdxPkgDownloadLocation) isMatch(line string) bool {
- return spdxPkgDownloadLocationTag.MatchString(line)
-}
-
-func (m spdxPkgDownloadLocation) String() string {
- return "PackageDownloadLocation: " + m.name
-}
-
-type spdxPkgLicenseDeclared struct {
- name string
-}
-
-func (m spdxPkgLicenseDeclared) isMatch(line string) bool {
- groups := spdxPkgLicenseDeclaredTag.FindStringSubmatch(line)
- if len(groups) != 2 {
- return false
- }
- return groups[1] == replaceSlashes(m.name)
-}
-
-func (m spdxPkgLicenseDeclared) String() string {
- return "PackageLicenseConcluded: LicenseRef-" + m.name
-}
-
-type spdxRelationship struct {
- pkg1 string
- pkg2 string
- relation string
-}
-
-func (m spdxRelationship) isMatch(line string) bool {
- groups := spdxRelationshipTag.FindStringSubmatch(line)
- if len(groups) != 4 {
- return false
- }
- return groups[1] == replaceSlashes(m.pkg1) && groups[2] == m.relation && groups[3] == replaceSlashes(m.pkg2)
-}
-
-func (m spdxRelationship) String() string {
- return "Relationship: SPDXRef-" + replaceSlashes(m.pkg1) + " " + m.relation + " SPDXRef-Package-" + replaceSlashes(m.pkg2)
-}
-
-type spdxLicense struct{}
-
-func (m spdxLicense) isMatch(line string) bool {
- return spdxLicenseTag.MatchString(line)
-}
-
-func (m spdxLicense) String() string {
- return "##### Non-standard license:"
-}
-
-type spdxLicenseID struct {
- name string
-}
-
-func (m spdxLicenseID) isMatch(line string) bool {
- groups := spdxLicenseIDTag.FindStringSubmatch(line)
- if len(groups) != 2 {
- return false
- }
- return groups[1] == replaceSlashes(m.name)
-}
-
-func (m spdxLicenseID) String() string {
- return "LicenseID: LicenseRef-" + m.name
-}
-
-type spdxExtractedText struct {
- name string
-}
-
-func (m spdxExtractedText) isMatch(line string) bool {
- groups := spdxExtractedTextTag.FindStringSubmatch(line)
- if len(groups) != 2 {
- return false
- }
- return groups[1] == replaceSlashes(m.name)
-}
-
-func (m spdxExtractedText) String() string {
- return "ExtractedText: <text>" + m.name
-}
-
-type spdxExtractedClosingText struct{}
-
-func (m spdxExtractedClosingText) isMatch(line string) bool {
- return spdxExtractedClosingTextTag.MatchString(line)
-}
-
-func (m spdxExtractedClosingText) String() string {
- return "</text>"
-}
-
-type matcherList []matcher
-
-func (l matcherList) String() string {
- var sb strings.Builder
- for _, m := range l {
- s := m.String()
- fmt.Fprintf(&sb, "%s\n", s)
- }
- return sb.String()
-}