Skip to content

Commit

Permalink
make more generic replacement of _ and -
Browse files Browse the repository at this point in the history
Signed-off-by: Brandon Lum <lumjjb@gmail.com>
Co-Authored-by: Keith Zantow <kzantow@gmail.com>
  • Loading branch information
lumjjb and kzantow committed Mar 24, 2023
1 parent 9b08fea commit 08ae941
Show file tree
Hide file tree
Showing 5 changed files with 133 additions and 56 deletions.
7 changes: 4 additions & 3 deletions spdx/v2/common/external.go
Expand Up @@ -23,9 +23,10 @@ const (
TypePackageManagerBower string = "bower"
TypePackageManagerPURL string = "purl"
// F.4 Persistent-Id types
CategoryPersistentId string = "PERSISTENT-ID"
TypePersistentIdSwh string = "swh"
TypePersistentIdGitoid string = "gitoid"
CategoryPersistentId string = "PERSISTENT-ID"
CategoryPersistentIdJson string = "PERSISTENT_ID"
TypePersistentIdSwh string = "swh"
TypePersistentIdGitoid string = "gitoid"

// 11.1 Relationship field types
TypeRelationshipDescribe string = "DESCRIBES"
Expand Down
45 changes: 44 additions & 1 deletion spdx/v2/v2_2/json/json_test.go
Expand Up @@ -228,8 +228,27 @@ func Test_JsonEnums(t *testing.T) {
"referenceLocator": "pkg:somepkg/ns/name2",
"referenceType": "purl"
}]
},
{
"name": "Package-3",
"SPDXID": "SPDXRef-Package-3",
"versionInfo": "3.3.3",
"externalRefs": [{
"referenceCategory": "PERSISTENT_ID",
"referenceLocator": "gitoid:blob:sha1:261eeb9e9f8b2b4b0d119366dda99c6fd7d35c64",
"referenceType": "gitoid"
}]
},
{
"name": "Package-4",
"SPDXID": "SPDXRef-Package-4",
"versionInfo": "4.4.4",
"externalRefs": [{
"referenceCategory": "PERSISTENT-ID",
"referenceLocator": "gitoid:blob:sha1:261eeb9e9f8b2b4b0d119366dda99c6fd7d35c64",
"referenceType": "gitoid"
}]
}
]
}`

Expand Down Expand Up @@ -278,6 +297,30 @@ func Test_JsonEnums(t *testing.T) {
},
},
},
{
PackageName: "Package-3",
PackageSPDXIdentifier: "Package-3",
PackageVersion: "3.3.3",
PackageExternalReferences: []*spdx.PackageExternalReference{
{
Category: common.CategoryPersistentIdJson,
RefType: common.TypePersistentIdGitoid,
Locator: "gitoid:blob:sha1:261eeb9e9f8b2b4b0d119366dda99c6fd7d35c64",
},
},
},
{
PackageName: "Package-4",
PackageSPDXIdentifier: "Package-4",
PackageVersion: "4.4.4",
PackageExternalReferences: []*spdx.PackageExternalReference{
{
Category: common.CategoryPersistentIdJson,
RefType: common.TypePersistentIdGitoid,
Locator: "gitoid:blob:sha1:261eeb9e9f8b2b4b0d119366dda99c6fd7d35c64",
},
},
},
},
Relationships: []*spdx.Relationship{
{
Expand Down
11 changes: 3 additions & 8 deletions spdx/v2/v2_2/package.go
Expand Up @@ -4,6 +4,7 @@ package v2_2

import (
"encoding/json"
"strings"

"github.com/spdx/tools-golang/spdx/v2/common"
)
Expand Down Expand Up @@ -175,10 +176,7 @@ func (r *PackageExternalReference) UnmarshalJSON(b []byte) error {
}

*r = PackageExternalReference(rr)

if r.Category == common.CategoryPackageManager {
r.Category = common.CategoryPackageManagerJson
}
r.Category = strings.ReplaceAll(r.Category, "-", "_")

return nil
}
Expand All @@ -190,10 +188,7 @@ func (r *PackageExternalReference) MarshalJSON() ([]byte, error) {
var rr ref

rr = ref(*r)

if rr.Category == common.CategoryPackageManager {
r.Category = common.CategoryPackageManagerJson
}
rr.Category = strings.ReplaceAll(rr.Category, "-", "_")

return json.Marshal(&rr)
}
116 changes: 78 additions & 38 deletions spdx/v2/v2_3/json/json_test.go
Expand Up @@ -187,41 +187,60 @@ func Test_ShorthandFields(t *testing.T) {

func Test_JsonEnums(t *testing.T) {
contents := `{
"spdxVersion": "SPDX-2.3",
"dataLicense": "CC0-1.0",
"SPDXID": "SPDXRef-DOCUMENT",
"name": "SPDX-Tools-v2.0",
"documentDescribes": [
"SPDXRef-Container"
],
"packages": [
{
"name": "Container",
"SPDXID": "SPDXRef-Container"
},
{
"name": "Package-1",
"SPDXID": "SPDXRef-Package-1",
"versionInfo": "1.1.1",
"externalRefs": [{
"referenceCategory": "PACKAGE_MANAGER",
"referenceLocator": "pkg:somepkg/ns/name1",
"referenceType": "purl"
}]
},
{
"name": "Package-2",
"SPDXID": "SPDXRef-Package-2",
"versionInfo": "2.2.2",
"externalRefs": [{
"referenceCategory": "PACKAGE-MANAGER",
"referenceLocator": "pkg:somepkg/ns/name2",
"referenceType": "purl"
}]
}
]
}`
"spdxVersion": "SPDX-2.3",
"dataLicense": "CC0-1.0",
"SPDXID": "SPDXRef-DOCUMENT",
"name": "SPDX-Tools-v2.0",
"documentDescribes": [
"SPDXRef-Container"
],
"packages": [
{
"name": "Container",
"SPDXID": "SPDXRef-Container"
},
{
"name": "Package-1",
"SPDXID": "SPDXRef-Package-1",
"versionInfo": "1.1.1",
"externalRefs": [{
"referenceCategory": "PACKAGE_MANAGER",
"referenceLocator": "pkg:somepkg/ns/name1",
"referenceType": "purl"
}]
},
{
"name": "Package-2",
"SPDXID": "SPDXRef-Package-2",
"versionInfo": "2.2.2",
"externalRefs": [{
"referenceCategory": "PACKAGE-MANAGER",
"referenceLocator": "pkg:somepkg/ns/name2",
"referenceType": "purl"
}]
},
{
"name": "Package-3",
"SPDXID": "SPDXRef-Package-3",
"versionInfo": "3.3.3",
"externalRefs": [{
"referenceCategory": "PERSISTENT_ID",
"referenceLocator": "gitoid:blob:sha1:261eeb9e9f8b2b4b0d119366dda99c6fd7d35c64",
"referenceType": "gitoid"
}]
},
{
"name": "Package-4",
"SPDXID": "SPDXRef-Package-4",
"versionInfo": "4.4.4",
"externalRefs": [{
"referenceCategory": "PERSISTENT-ID",
"referenceLocator": "gitoid:blob:sha1:261eeb9e9f8b2b4b0d119366dda99c6fd7d35c64",
"referenceType": "gitoid"
}]
}
]
}`

doc := spdx.Document{}
err := json.ReadInto(strings.NewReader(contents), &doc)
Expand All @@ -234,9 +253,6 @@ func Test_JsonEnums(t *testing.T) {
}
}

// We change by default from PACKAGE_MANAGER to PACKAGE-MANAGER
// to make it more consistent in the future, but theoratically both
// work by the schema.
require.Equal(t, spdx.Document{
SPDXVersion: spdx.Version,
DataLicense: spdx.DataLicense,
Expand Down Expand Up @@ -271,6 +287,30 @@ func Test_JsonEnums(t *testing.T) {
},
},
},
{
PackageName: "Package-3",
PackageSPDXIdentifier: "Package-3",
PackageVersion: "3.3.3",
PackageExternalReferences: []*spdx.PackageExternalReference{
{
Category: common.CategoryPersistentId,
RefType: common.TypePersistentIdGitoid,
Locator: "gitoid:blob:sha1:261eeb9e9f8b2b4b0d119366dda99c6fd7d35c64",
},
},
},
{
PackageName: "Package-4",
PackageSPDXIdentifier: "Package-4",
PackageVersion: "4.4.4",
PackageExternalReferences: []*spdx.PackageExternalReference{
{
Category: common.CategoryPersistentId,
RefType: common.TypePersistentIdGitoid,
Locator: "gitoid:blob:sha1:261eeb9e9f8b2b4b0d119366dda99c6fd7d35c64",
},
},
},
},
Relationships: []*spdx.Relationship{
{
Expand Down
10 changes: 4 additions & 6 deletions spdx/v2/v2_3/package.go
Expand Up @@ -4,6 +4,7 @@ package v2_3

import (
"encoding/json"
"strings"

"github.com/spdx/tools-golang/spdx/v2/common"
)
Expand Down Expand Up @@ -189,9 +190,8 @@ func (r *PackageExternalReference) UnmarshalJSON(b []byte) error {
if err := json.Unmarshal(b, &rr); err != nil {
return err
}
if rr.Category == common.CategoryPackageManagerJson {
rr.Category = common.CategoryPackageManager
}

rr.Category = strings.ReplaceAll(rr.Category, "_", "-")

*r = PackageExternalReference(rr)
return nil
Expand All @@ -205,9 +205,7 @@ func (r *PackageExternalReference) MarshalJSON() ([]byte, error) {

rr = ref(*r)

if rr.Category == common.CategoryPackageManagerJson {
r.Category = common.CategoryPackageManager
}
rr.Category = strings.ReplaceAll(rr.Category, "_", "-")

return json.Marshal(&rr)
}

0 comments on commit 08ae941

Please sign in to comment.