Skip to content

Commit

Permalink
fix: retain previous behaviour of using unformatted licenses
Browse files Browse the repository at this point in the history
  • Loading branch information
thomasschafer committed Feb 6, 2025
1 parent c6eb75f commit b88f63d
Show file tree
Hide file tree
Showing 4 changed files with 18 additions and 12 deletions.
7 changes: 6 additions & 1 deletion internal/utils/spdx.go
Original file line number Diff line number Diff line change
Expand Up @@ -32,13 +32,18 @@ func GetPurlFromSPDXPackage(pkg *spdx_2_3.Package) (*packageurl.PackageURL, erro
return &purl, nil
}

func GetSPDXLicenseExpressionFromEcosystemsLicense(pkgVersionData *packages.VersionWithDependencies, pkgData *packages.Package) string {
func GetLicensesFromEcosystemsLicense(pkgVersionData *packages.VersionWithDependencies, pkgData *packages.Package) []string {
licenses := []string{}
if pkgVersionData != nil && pkgVersionData.Licenses != nil && *pkgVersionData.Licenses != "" {
licenses = strings.Split(*pkgVersionData.Licenses, ",")
} else if pkgData != nil && len(pkgData.NormalizedLicenses) > 0 {
licenses = pkgData.NormalizedLicenses
}
return licenses
}

func GetLicenseExpressionFromEcosystemsLicense(pkgVersionData *packages.VersionWithDependencies, pkgData *packages.Package) string {
licenses := GetLicensesFromEcosystemsLicense(pkgVersionData, pkgData)
if len(licenses) == 0 {
return ""
}
Expand Down
14 changes: 7 additions & 7 deletions internal/utils/spdx_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -15,13 +15,13 @@ func TestGetSPDXLicenseExpressionFromEcosystemsLicense(t *testing.T) {
pkgVersionData := packages.VersionWithDependencies{Licenses: &versionedLicenses}
latestLicenses := []string{"Apache-2.0"}
pkgData := packages.Package{NormalizedLicenses: latestLicenses}
expression := utils.GetSPDXLicenseExpressionFromEcosystemsLicense(&pkgVersionData, &pkgData)
expression := utils.GetLicenseExpressionFromEcosystemsLicense(&pkgVersionData, &pkgData)
assert.Equal("(GPLv2 OR MIT)", expression)
}

func TestGetSPDXLicenseExpressionFromEcosystemsLicense_NoData(t *testing.T) {
assert := assert.New(t)
expression := utils.GetSPDXLicenseExpressionFromEcosystemsLicense(nil, nil)
expression := utils.GetLicenseExpressionFromEcosystemsLicense(nil, nil)
assert.Equal("", expression)
}

Expand All @@ -30,7 +30,7 @@ func TestGetSPDXLicenseExpressionFromEcosystemsLicense_NoVersionedData(t *testin
pkgVersionData := packages.VersionWithDependencies{}
latestLicenses := []string{"Apache-2.0"}
pkgData := packages.Package{NormalizedLicenses: latestLicenses}
expression := utils.GetSPDXLicenseExpressionFromEcosystemsLicense(&pkgVersionData, &pkgData)
expression := utils.GetLicenseExpressionFromEcosystemsLicense(&pkgVersionData, &pkgData)
assert.Equal("(Apache-2.0)", expression)
}

Expand All @@ -39,24 +39,24 @@ func TestGetSPDXLicenseExpressionFromEcosystemsLicense_NoLatestData(t *testing.T
versionedLicenses := "GPLv2,MIT"
pkgVersionData := packages.VersionWithDependencies{Licenses: &versionedLicenses}
pkgData := packages.Package{}
expression := utils.GetSPDXLicenseExpressionFromEcosystemsLicense(&pkgVersionData, &pkgData)
expression := utils.GetLicenseExpressionFromEcosystemsLicense(&pkgVersionData, &pkgData)
assert.Equal("(GPLv2 OR MIT)", expression)
}

func TestGetSPDXLicenseExpressionFromEcosystemsLicense_NoLicenses(t *testing.T) {
assert := assert.New(t)
pkgVersionData := packages.VersionWithDependencies{}
pkgData := packages.Package{}
expression := utils.GetSPDXLicenseExpressionFromEcosystemsLicense(&pkgVersionData, &pkgData)
expression := utils.GetLicenseExpressionFromEcosystemsLicense(&pkgVersionData, &pkgData)
assert.Equal("", expression)
}

func TestGetSPDXLicenseExpressionFromEcosystemsLicense_EmptyLicenses(t *testing.T) {
assert := assert.New(t)
versionedLicenses := ""
pkgVersionData := packages.VersionWithDependencies{Licenses: &versionedLicenses}
latestLicenses := []string{""}
latestLicenses := []string{}
pkgData := packages.Package{NormalizedLicenses: latestLicenses}
expression := utils.GetSPDXLicenseExpressionFromEcosystemsLicense(&pkgVersionData, &pkgData)
expression := utils.GetLicenseExpressionFromEcosystemsLicense(&pkgVersionData, &pkgData)
assert.Equal("", expression)
}
2 changes: 1 addition & 1 deletion lib/ecosystems/enrich_cyclonedx.go
Original file line number Diff line number Diff line change
Expand Up @@ -59,7 +59,7 @@ func enrichCDXDescription(comp *cdx.Component, data *packages.Package) {
}

func enrichCDXLicense(comp *cdx.Component, pkgVersionData *packages.VersionWithDependencies, pkgData *packages.Package) {
expression := utils.GetSPDXLicenseExpressionFromEcosystemsLicense(pkgVersionData, pkgData)
expression := utils.GetLicenseExpressionFromEcosystemsLicense(pkgVersionData, pkgData)
if expression != "" {
licenses := cdx.LicenseChoice{Expression: expression}
comp.Licenses = &cdx.Licenses{licenses}
Expand Down
7 changes: 4 additions & 3 deletions lib/ecosystems/enrich_spdx.go
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@ package ecosystems

import (
"errors"
"strings"

"github.com/package-url/packageurl-go"
"github.com/rs/zerolog"
Expand Down Expand Up @@ -97,9 +98,9 @@ func enrichSPDXSupplier(pkg *v2_3.Package, data *packages.Package) {
}

func enrichSPDXLicense(pkg *v2_3.Package, pkgVersionData *packages.VersionWithDependencies, pkgData *packages.Package) {
expression := utils.GetSPDXLicenseExpressionFromEcosystemsLicense(pkgVersionData, pkgData)
if expression != "" {
pkg.PackageLicenseConcluded = *pkgVersionData.Licenses
licenses := utils.GetLicensesFromEcosystemsLicense(pkgVersionData, pkgData)
if len(licenses) > 0 {
pkg.PackageLicenseConcluded = strings.Join(licenses, ",")
}
}

Expand Down

0 comments on commit b88f63d

Please sign in to comment.