Correct ID handling during Syft JSON decoding (#900)

This commit is contained in:
Keith Zantow
2022-03-18 17:03:26 -04:00
committed by GitHub
parent 4231f38fa2
commit 9240860f44
4 changed files with 86 additions and 18 deletions
@@ -129,6 +129,7 @@ func (p *Package) UnmarshalJSON(b []byte) error {
if err := json.Unmarshal(unpacker.Metadata, &payload); err != nil {
return err
}
p.Metadata = payload
default:
log.Warnf("unknown package metadata type=%q for packageID=%q", p.MetadataType, p.ID)
}
@@ -1,18 +1,18 @@
package model
import "testing"
import (
"testing"
func TestUnmarshalPackage(t *testing.T) {
"github.com/anchore/syft/syft/pkg"
"github.com/stretchr/testify/assert"
)
func TestUnmarshalPackageGolang(t *testing.T) {
tests := []struct {
name string
p *Package
packageData []byte
}{
{
name: "Package.UnmarshalJSON will unmarshal blank json",
p: &Package{},
packageData: []byte(`{}`),
},
{
name: "Package.UnmarshalJSON unmarshals PackageBasicData",
p: &Package{},
@@ -47,6 +47,11 @@ func TestUnmarshalPackage(t *testing.T) {
if err != nil {
t.Fatalf("could not unmarshal packageData: %v", err)
}
assert.NotNil(t, test.p.Metadata)
golangMetadata := test.p.Metadata.(pkg.GolangBinMetadata)
assert.NotEmpty(t, golangMetadata)
assert.Equal(t, "go1.18", golangMetadata.GoCompiledVersion)
})
}
}