mirror of
https://github.com/anchore/syft.git
synced 2026-02-14 03:26:41 +01:00
rename sbom.PackageCatalog to sbom.Packages (#1773)
Signed-off-by: Alex Goodman <alex.goodman@anchore.com>
This commit is contained in:
parent
10c3cc27e8
commit
5f3d4d285b
@ -47,7 +47,7 @@ func generateCatalogPackagesTask(app *config.Application) (Task, error) {
|
|||||||
task := func(results *sbom.Artifacts, src *source.Source) ([]artifact.Relationship, error) {
|
task := func(results *sbom.Artifacts, src *source.Source) ([]artifact.Relationship, error) {
|
||||||
packageCatalog, relationships, theDistro, err := syft.CatalogPackages(src, app.ToCatalogerConfig())
|
packageCatalog, relationships, theDistro, err := syft.CatalogPackages(src, app.ToCatalogerConfig())
|
||||||
|
|
||||||
results.PackageCatalog = packageCatalog
|
results.Packages = packageCatalog
|
||||||
results.LinuxDistribution = theDistro
|
results.LinuxDistribution = theDistro
|
||||||
|
|
||||||
return relationships, err
|
return relationships, err
|
||||||
|
|||||||
@ -54,7 +54,7 @@ func ToSyftModel(bom *cyclonedx.BOM) (*sbom.SBOM, error) {
|
|||||||
|
|
||||||
s := &sbom.SBOM{
|
s := &sbom.SBOM{
|
||||||
Artifacts: sbom.Artifacts{
|
Artifacts: sbom.Artifacts{
|
||||||
PackageCatalog: pkg.NewCollection(),
|
Packages: pkg.NewCollection(),
|
||||||
LinuxDistribution: linuxReleaseFromComponents(*bom.Components),
|
LinuxDistribution: linuxReleaseFromComponents(*bom.Components),
|
||||||
},
|
},
|
||||||
Source: extractComponents(bom.Metadata),
|
Source: extractComponents(bom.Metadata),
|
||||||
@ -95,7 +95,7 @@ func collectPackages(component *cyclonedx.Component, s *sbom.SBOM, idMap map[str
|
|||||||
}
|
}
|
||||||
// TODO there must be a better way than needing to call this manually:
|
// TODO there must be a better way than needing to call this manually:
|
||||||
p.SetID()
|
p.SetID()
|
||||||
s.Artifacts.PackageCatalog.Add(*p)
|
s.Artifacts.Packages.Add(*p)
|
||||||
}
|
}
|
||||||
|
|
||||||
if component.Components != nil {
|
if component.Components != nil {
|
||||||
|
|||||||
@ -210,7 +210,7 @@ func Test_decode(t *testing.T) {
|
|||||||
assert.Equal(t, e.ver, sbom.Artifacts.LinuxDistribution.VersionID)
|
assert.Equal(t, e.ver, sbom.Artifacts.LinuxDistribution.VersionID)
|
||||||
}
|
}
|
||||||
if e.pkg != "" {
|
if e.pkg != "" {
|
||||||
for p := range sbom.Artifacts.PackageCatalog.Enumerate() {
|
for p := range sbom.Artifacts.Packages.Enumerate() {
|
||||||
if e.pkg != p.Name {
|
if e.pkg != p.Name {
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
@ -238,7 +238,7 @@ func Test_decode(t *testing.T) {
|
|||||||
if e.relation != "" {
|
if e.relation != "" {
|
||||||
foundRelation := false
|
foundRelation := false
|
||||||
for _, r := range sbom.Relationships {
|
for _, r := range sbom.Relationships {
|
||||||
p := sbom.Artifacts.PackageCatalog.Package(r.To.ID())
|
p := sbom.Artifacts.Packages.Package(r.To.ID())
|
||||||
if e.relation == p.Name {
|
if e.relation == p.Name {
|
||||||
foundRelation = true
|
foundRelation = true
|
||||||
break
|
break
|
||||||
|
|||||||
@ -25,7 +25,7 @@ func ToFormatModel(s sbom.SBOM) *cyclonedx.BOM {
|
|||||||
cdxBOM.SerialNumber = uuid.New().URN()
|
cdxBOM.SerialNumber = uuid.New().URN()
|
||||||
cdxBOM.Metadata = toBomDescriptor(internal.ApplicationName, s.Descriptor.Version, s.Source)
|
cdxBOM.Metadata = toBomDescriptor(internal.ApplicationName, s.Descriptor.Version, s.Source)
|
||||||
|
|
||||||
packages := s.Artifacts.PackageCatalog.Sorted()
|
packages := s.Artifacts.Packages.Sorted()
|
||||||
components := make([]cyclonedx.Component, len(packages))
|
components := make([]cyclonedx.Component, len(packages))
|
||||||
for i, p := range packages {
|
for i, p := range packages {
|
||||||
components[i] = encodeComponent(p)
|
components[i] = encodeComponent(p)
|
||||||
|
|||||||
@ -123,10 +123,10 @@ func ToFormatModel(s sbom.SBOM) *spdx.Document {
|
|||||||
// Cardinality: optional, one
|
// Cardinality: optional, one
|
||||||
CreatorComment: "",
|
CreatorComment: "",
|
||||||
},
|
},
|
||||||
Packages: toPackages(s.Artifacts.PackageCatalog, s),
|
Packages: toPackages(s.Artifacts.Packages, s),
|
||||||
Files: toFiles(s),
|
Files: toFiles(s),
|
||||||
Relationships: relationships,
|
Relationships: relationships,
|
||||||
OtherLicenses: toOtherLicenses(s.Artifacts.PackageCatalog),
|
OtherLicenses: toOtherLicenses(s.Artifacts.Packages),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -33,7 +33,7 @@ func ToSyftModel(doc *spdx.Document) (*sbom.SBOM, error) {
|
|||||||
s := &sbom.SBOM{
|
s := &sbom.SBOM{
|
||||||
Source: src,
|
Source: src,
|
||||||
Artifacts: sbom.Artifacts{
|
Artifacts: sbom.Artifacts{
|
||||||
PackageCatalog: pkg.NewCollection(),
|
Packages: pkg.NewCollection(),
|
||||||
FileMetadata: map[source.Coordinates]source.FileMetadata{},
|
FileMetadata: map[source.Coordinates]source.FileMetadata{},
|
||||||
FileDigests: map[source.Coordinates][]file.Digest{},
|
FileDigests: map[source.Coordinates][]file.Digest{},
|
||||||
LinuxDistribution: findLinuxReleaseByPURL(doc),
|
LinuxDistribution: findLinuxReleaseByPURL(doc),
|
||||||
@ -110,7 +110,7 @@ func collectSyftPackages(s *sbom.SBOM, spdxIDMap map[string]interface{}, doc *sp
|
|||||||
for _, p := range doc.Packages {
|
for _, p := range doc.Packages {
|
||||||
syftPkg := toSyftPackage(p)
|
syftPkg := toSyftPackage(p)
|
||||||
spdxIDMap[string(p.PackageSPDXIdentifier)] = syftPkg
|
spdxIDMap[string(p.PackageSPDXIdentifier)] = syftPkg
|
||||||
s.Artifacts.PackageCatalog.Add(*syftPkg)
|
s.Artifacts.Packages.Add(*syftPkg)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -91,7 +91,7 @@ func TestToSyftModel(t *testing.T) {
|
|||||||
|
|
||||||
assert.NotNil(t, sbom)
|
assert.NotNil(t, sbom)
|
||||||
|
|
||||||
pkgs := sbom.Artifacts.PackageCatalog.Sorted()
|
pkgs := sbom.Artifacts.Packages.Sorted()
|
||||||
|
|
||||||
assert.Len(t, pkgs, 2)
|
assert.Len(t, pkgs, 2)
|
||||||
|
|
||||||
|
|||||||
@ -57,7 +57,7 @@ func Test_decodeJSON(t *testing.T) {
|
|||||||
split = strings.SplitN(pkg, ":", 2)
|
split = strings.SplitN(pkg, ":", 2)
|
||||||
name = split[0]
|
name = split[0]
|
||||||
version = split[1]
|
version = split[1]
|
||||||
for p := range bom.Artifacts.PackageCatalog.Enumerate() {
|
for p := range bom.Artifacts.Packages.Enumerate() {
|
||||||
if p.Name == name {
|
if p.Name == name {
|
||||||
assert.Equal(t, version, p.Version)
|
assert.Equal(t, version, p.Version)
|
||||||
continue pkgs
|
continue pkgs
|
||||||
|
|||||||
@ -57,7 +57,7 @@ func Test_decodeXML(t *testing.T) {
|
|||||||
split = strings.SplitN(pkg, ":", 2)
|
split = strings.SplitN(pkg, ":", 2)
|
||||||
name = split[0]
|
name = split[0]
|
||||||
version = split[1]
|
version = split[1]
|
||||||
for p := range bom.Artifacts.PackageCatalog.Enumerate() {
|
for p := range bom.Artifacts.Packages.Enumerate() {
|
||||||
if p.Name == name {
|
if p.Name == name {
|
||||||
assert.Equal(t, version, p.Version)
|
assert.Equal(t, version, p.Version)
|
||||||
continue pkgs
|
continue pkgs
|
||||||
|
|||||||
@ -107,7 +107,7 @@ func toPath(s source.Metadata, p pkg.Package) string {
|
|||||||
func toGithubManifests(s *sbom.SBOM) Manifests {
|
func toGithubManifests(s *sbom.SBOM) Manifests {
|
||||||
manifests := map[string]*Manifest{}
|
manifests := map[string]*Manifest{}
|
||||||
|
|
||||||
for _, p := range s.Artifacts.PackageCatalog.Sorted() {
|
for _, p := range s.Artifacts.Packages.Sorted() {
|
||||||
path := toPath(s.Source, p)
|
path := toPath(s.Source, p)
|
||||||
manifest, ok := manifests[path]
|
manifest, ok := manifests[path]
|
||||||
if !ok {
|
if !ok {
|
||||||
|
|||||||
@ -28,7 +28,7 @@ func Test_toGithubModel(t *testing.T) {
|
|||||||
VersionID: "18.04",
|
VersionID: "18.04",
|
||||||
IDLike: []string{"debian"},
|
IDLike: []string{"debian"},
|
||||||
},
|
},
|
||||||
PackageCatalog: pkg.NewCollection(),
|
Packages: pkg.NewCollection(),
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
for _, p := range []pkg.Package{
|
for _, p := range []pkg.Package{
|
||||||
@ -71,7 +71,7 @@ func Test_toGithubModel(t *testing.T) {
|
|||||||
nil,
|
nil,
|
||||||
"",
|
"",
|
||||||
).ToString()
|
).ToString()
|
||||||
s.Artifacts.PackageCatalog.Add(p)
|
s.Artifacts.Packages.Add(p)
|
||||||
}
|
}
|
||||||
|
|
||||||
actual := toGithubModel(&s)
|
actual := toGithubModel(&s)
|
||||||
|
|||||||
@ -119,7 +119,7 @@ func ImageInput(t testing.TB, testImage string, options ...ImageOption) sbom.SBO
|
|||||||
|
|
||||||
return sbom.SBOM{
|
return sbom.SBOM{
|
||||||
Artifacts: sbom.Artifacts{
|
Artifacts: sbom.Artifacts{
|
||||||
PackageCatalog: catalog,
|
Packages: catalog,
|
||||||
LinuxDistribution: &linux.Release{
|
LinuxDistribution: &linux.Release{
|
||||||
PrettyName: "debian",
|
PrettyName: "debian",
|
||||||
Name: "debian",
|
Name: "debian",
|
||||||
@ -200,7 +200,7 @@ func DirectoryInput(t testing.TB) sbom.SBOM {
|
|||||||
|
|
||||||
return sbom.SBOM{
|
return sbom.SBOM{
|
||||||
Artifacts: sbom.Artifacts{
|
Artifacts: sbom.Artifacts{
|
||||||
PackageCatalog: catalog,
|
Packages: catalog,
|
||||||
LinuxDistribution: &linux.Release{
|
LinuxDistribution: &linux.Release{
|
||||||
PrettyName: "debian",
|
PrettyName: "debian",
|
||||||
Name: "debian",
|
Name: "debian",
|
||||||
@ -231,7 +231,7 @@ func DirectoryInputWithAuthorField(t testing.TB) sbom.SBOM {
|
|||||||
|
|
||||||
return sbom.SBOM{
|
return sbom.SBOM{
|
||||||
Artifacts: sbom.Artifacts{
|
Artifacts: sbom.Artifacts{
|
||||||
PackageCatalog: catalog,
|
Packages: catalog,
|
||||||
LinuxDistribution: &linux.Release{
|
LinuxDistribution: &linux.Release{
|
||||||
PrettyName: "debian",
|
PrettyName: "debian",
|
||||||
Name: "debian",
|
Name: "debian",
|
||||||
@ -359,7 +359,7 @@ func newDirectoryCatalogWithAuthorField() *pkg.Collection {
|
|||||||
|
|
||||||
//nolint:gosec
|
//nolint:gosec
|
||||||
func AddSampleFileRelationships(s *sbom.SBOM) {
|
func AddSampleFileRelationships(s *sbom.SBOM) {
|
||||||
catalog := s.Artifacts.PackageCatalog.Sorted()
|
catalog := s.Artifacts.Packages.Sorted()
|
||||||
s.Artifacts.FileMetadata = map[source.Coordinates]source.FileMetadata{}
|
s.Artifacts.FileMetadata = map[source.Coordinates]source.FileMetadata{}
|
||||||
|
|
||||||
files := []string{"/f1", "/f2", "/d1/f3", "/d2/f4", "/z1/f5", "/a1/f6"}
|
files := []string{"/f1", "/f2", "/d1/f3", "/d2/f4", "/z1/f5", "/a1/f6"}
|
||||||
|
|||||||
@ -73,11 +73,11 @@ func TestSPDXJSONDecoder(t *testing.T) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if test.packages != nil {
|
if test.packages != nil {
|
||||||
assert.Equal(t, sbom.Artifacts.PackageCatalog.PackageCount(), len(test.packages))
|
assert.Equal(t, sbom.Artifacts.Packages.PackageCount(), len(test.packages))
|
||||||
|
|
||||||
packages:
|
packages:
|
||||||
for _, pkgName := range test.packages {
|
for _, pkgName := range test.packages {
|
||||||
for _, p := range sbom.Artifacts.PackageCatalog.Sorted() {
|
for _, p := range sbom.Artifacts.Packages.Sorted() {
|
||||||
if p.Name == pkgName {
|
if p.Name == pkgName {
|
||||||
continue packages
|
continue packages
|
||||||
}
|
}
|
||||||
|
|||||||
@ -49,7 +49,7 @@ func TestSPDXJSONSPDXIDs(t *testing.T) {
|
|||||||
Format(),
|
Format(),
|
||||||
sbom.SBOM{
|
sbom.SBOM{
|
||||||
Artifacts: sbom.Artifacts{
|
Artifacts: sbom.Artifacts{
|
||||||
PackageCatalog: pkg.NewCollection(pkgs...),
|
Packages: pkg.NewCollection(pkgs...),
|
||||||
},
|
},
|
||||||
Relationships: nil,
|
Relationships: nil,
|
||||||
Source: source.Metadata{
|
Source: source.Metadata{
|
||||||
|
|||||||
@ -29,8 +29,8 @@ func TestEncodeDecodeCycle(t *testing.T) {
|
|||||||
t.Errorf("metadata difference: %+v", d)
|
t.Errorf("metadata difference: %+v", d)
|
||||||
}
|
}
|
||||||
|
|
||||||
actualPackages := actualSBOM.Artifacts.PackageCatalog.Sorted()
|
actualPackages := actualSBOM.Artifacts.Packages.Sorted()
|
||||||
for idx, p := range originalSBOM.Artifacts.PackageCatalog.Sorted() {
|
for idx, p := range originalSBOM.Artifacts.Packages.Sorted() {
|
||||||
if !assert.Equal(t, p.Name, actualPackages[idx].Name) {
|
if !assert.Equal(t, p.Name, actualPackages[idx].Name) {
|
||||||
t.Errorf("different package at idx=%d: %s vs %s", idx, p.Name, actualPackages[idx].Name)
|
t.Errorf("different package at idx=%d: %s vs %s", idx, p.Name, actualPackages[idx].Name)
|
||||||
continue
|
continue
|
||||||
|
|||||||
@ -100,7 +100,7 @@ func TestEncodeFullJSONDocument(t *testing.T) {
|
|||||||
|
|
||||||
s := sbom.SBOM{
|
s := sbom.SBOM{
|
||||||
Artifacts: sbom.Artifacts{
|
Artifacts: sbom.Artifacts{
|
||||||
PackageCatalog: catalog,
|
Packages: catalog,
|
||||||
FileMetadata: map[source.Coordinates]source.FileMetadata{
|
FileMetadata: map[source.Coordinates]source.FileMetadata{
|
||||||
source.NewLocation("/a/place").Coordinates: {
|
source.NewLocation("/a/place").Coordinates: {
|
||||||
Mode: 0775,
|
Mode: 0775,
|
||||||
|
|||||||
@ -26,7 +26,7 @@ func ToFormatModel(s sbom.SBOM) model.Document {
|
|||||||
}
|
}
|
||||||
|
|
||||||
return model.Document{
|
return model.Document{
|
||||||
Artifacts: toPackageModels(s.Artifacts.PackageCatalog),
|
Artifacts: toPackageModels(s.Artifacts.Packages),
|
||||||
ArtifactRelationships: toRelationshipModel(s.Relationships),
|
ArtifactRelationships: toRelationshipModel(s.Relationships),
|
||||||
Files: toFile(s),
|
Files: toFile(s),
|
||||||
Secrets: toSecrets(s.Artifacts.Secrets),
|
Secrets: toSecrets(s.Artifacts.Secrets),
|
||||||
|
|||||||
@ -28,7 +28,7 @@ func toSyftModel(doc model.Document) (*sbom.SBOM, error) {
|
|||||||
|
|
||||||
return &sbom.SBOM{
|
return &sbom.SBOM{
|
||||||
Artifacts: sbom.Artifacts{
|
Artifacts: sbom.Artifacts{
|
||||||
PackageCatalog: catalog,
|
Packages: catalog,
|
||||||
FileMetadata: fileArtifacts.FileMetadata,
|
FileMetadata: fileArtifacts.FileMetadata,
|
||||||
FileDigests: fileArtifacts.FileDigests,
|
FileDigests: fileArtifacts.FileDigests,
|
||||||
LinuxDistribution: toSyftLinuxRelease(doc.Distro),
|
LinuxDistribution: toSyftLinuxRelease(doc.Distro),
|
||||||
|
|||||||
@ -119,11 +119,11 @@ func Test_idsHaveChanged(t *testing.T) {
|
|||||||
|
|
||||||
r := s.Relationships[0]
|
r := s.Relationships[0]
|
||||||
|
|
||||||
from := s.Artifacts.PackageCatalog.Package(r.From.ID())
|
from := s.Artifacts.Packages.Package(r.From.ID())
|
||||||
assert.NotNil(t, from)
|
assert.NotNil(t, from)
|
||||||
assert.Equal(t, "pkg-1", from.Name)
|
assert.Equal(t, "pkg-1", from.Name)
|
||||||
|
|
||||||
to := s.Artifacts.PackageCatalog.Package(r.To.ID())
|
to := s.Artifacts.Packages.Package(r.To.ID())
|
||||||
assert.NotNil(t, to)
|
assert.NotNil(t, to)
|
||||||
assert.Equal(t, "pkg-2", to.Name)
|
assert.Equal(t, "pkg-2", to.Name)
|
||||||
}
|
}
|
||||||
|
|||||||
@ -15,7 +15,7 @@ func encoder(output io.Writer, s sbom.SBOM) error {
|
|||||||
var rows [][]string
|
var rows [][]string
|
||||||
|
|
||||||
columns := []string{"Name", "Version", "Type"}
|
columns := []string{"Name", "Version", "Type"}
|
||||||
for _, p := range s.Artifacts.PackageCatalog.Sorted() {
|
for _, p := range s.Artifacts.Packages.Sorted() {
|
||||||
row := []string{
|
row := []string{
|
||||||
p.Name,
|
p.Name,
|
||||||
p.Version,
|
p.Version,
|
||||||
|
|||||||
@ -34,7 +34,7 @@ func encoder(output io.Writer, s sbom.SBOM) error {
|
|||||||
|
|
||||||
// populate artifacts...
|
// populate artifacts...
|
||||||
rows := 0
|
rows := 0
|
||||||
for _, p := range s.Artifacts.PackageCatalog.Sorted() {
|
for _, p := range s.Artifacts.Packages.Sorted() {
|
||||||
fmt.Fprintf(w, "[%s]\n", p.Name)
|
fmt.Fprintf(w, "[%s]\n", p.Name)
|
||||||
fmt.Fprintln(w, " Version:\t", p.Version)
|
fmt.Fprintln(w, " Version:\t", p.Version)
|
||||||
fmt.Fprintln(w, " Type:\t", string(p.Type))
|
fmt.Fprintln(w, " Type:\t", string(p.Type))
|
||||||
|
|||||||
@ -42,7 +42,7 @@ func parseSBOM(_ source.FileResolver, _ *generic.Environment, reader source.Loca
|
|||||||
|
|
||||||
var pkgs []pkg.Package
|
var pkgs []pkg.Package
|
||||||
var relationships []artifact.Relationship
|
var relationships []artifact.Relationship
|
||||||
for _, p := range s.Artifacts.PackageCatalog.Sorted() {
|
for _, p := range s.Artifacts.Packages.Sorted() {
|
||||||
// replace all locations on the package with the location of the SBOM file.
|
// replace all locations on the package with the location of the SBOM file.
|
||||||
// Why not keep the original list of locations? Since the "locations" field is meant to capture
|
// Why not keep the original list of locations? Since the "locations" field is meant to capture
|
||||||
// where there is evidence of this file, and the catalogers have not run against any file other than,
|
// where there is evidence of this file, and the catalogers have not run against any file other than,
|
||||||
|
|||||||
@ -20,7 +20,7 @@ type SBOM struct {
|
|||||||
}
|
}
|
||||||
|
|
||||||
type Artifacts struct {
|
type Artifacts struct {
|
||||||
PackageCatalog *pkg.Collection
|
Packages *pkg.Collection
|
||||||
FileMetadata map[source.Coordinates]source.FileMetadata
|
FileMetadata map[source.Coordinates]source.FileMetadata
|
||||||
FileDigests map[source.Coordinates][]file.Digest
|
FileDigests map[source.Coordinates][]file.Digest
|
||||||
FileContents map[source.Coordinates]string
|
FileContents map[source.Coordinates]string
|
||||||
|
|||||||
@ -11,8 +11,8 @@ func Test_AllLayersIncludesSquashed(t *testing.T) {
|
|||||||
allLayers, _ := catalogFixtureImage(t, "image-suse-all-layers", source.AllLayersScope, nil)
|
allLayers, _ := catalogFixtureImage(t, "image-suse-all-layers", source.AllLayersScope, nil)
|
||||||
squashed, _ := catalogFixtureImage(t, "image-suse-all-layers", source.SquashedScope, nil)
|
squashed, _ := catalogFixtureImage(t, "image-suse-all-layers", source.SquashedScope, nil)
|
||||||
|
|
||||||
lenAllLayers := len(allLayers.Artifacts.PackageCatalog.Sorted())
|
lenAllLayers := len(allLayers.Artifacts.Packages.Sorted())
|
||||||
lenSquashed := len(squashed.Artifacts.PackageCatalog.Sorted())
|
lenSquashed := len(squashed.Artifacts.Packages.Sorted())
|
||||||
|
|
||||||
if lenAllLayers < lenSquashed {
|
if lenAllLayers < lenSquashed {
|
||||||
t.Errorf("squashed has more packages than all-layers: %d > %d", lenSquashed, lenAllLayers)
|
t.Errorf("squashed has more packages than all-layers: %d > %d", lenSquashed, lenAllLayers)
|
||||||
|
|||||||
@ -100,7 +100,7 @@ func TestPkgCoverageImage(t *testing.T) {
|
|||||||
t.Run(c.name, func(t *testing.T) {
|
t.Run(c.name, func(t *testing.T) {
|
||||||
pkgCount := 0
|
pkgCount := 0
|
||||||
|
|
||||||
for a := range sbom.Artifacts.PackageCatalog.Enumerate(c.pkgType) {
|
for a := range sbom.Artifacts.Packages.Enumerate(c.pkgType) {
|
||||||
if a.Language.String() != "" {
|
if a.Language.String() != "" {
|
||||||
observedLanguages.Add(a.Language.String())
|
observedLanguages.Add(a.Language.String())
|
||||||
}
|
}
|
||||||
@ -127,7 +127,7 @@ func TestPkgCoverageImage(t *testing.T) {
|
|||||||
|
|
||||||
if pkgCount != len(c.pkgInfo)+c.duplicates {
|
if pkgCount != len(c.pkgInfo)+c.duplicates {
|
||||||
t.Logf("Discovered packages of type %+v", c.pkgType)
|
t.Logf("Discovered packages of type %+v", c.pkgType)
|
||||||
for a := range sbom.Artifacts.PackageCatalog.Enumerate(c.pkgType) {
|
for a := range sbom.Artifacts.Packages.Enumerate(c.pkgType) {
|
||||||
t.Log(" ", a)
|
t.Log(" ", a)
|
||||||
}
|
}
|
||||||
t.Fatalf("unexpected package count: %d!=%d", pkgCount, len(c.pkgInfo))
|
t.Fatalf("unexpected package count: %d!=%d", pkgCount, len(c.pkgInfo))
|
||||||
@ -176,7 +176,7 @@ func TestPkgCoverageDirectory(t *testing.T) {
|
|||||||
t.Run(test.name, func(t *testing.T) {
|
t.Run(test.name, func(t *testing.T) {
|
||||||
actualPkgCount := 0
|
actualPkgCount := 0
|
||||||
|
|
||||||
for actualPkg := range sbom.Artifacts.PackageCatalog.Enumerate(test.pkgType) {
|
for actualPkg := range sbom.Artifacts.Packages.Enumerate(test.pkgType) {
|
||||||
observedLanguages.Add(actualPkg.Language.String())
|
observedLanguages.Add(actualPkg.Language.String())
|
||||||
observedPkgs.Add(string(actualPkg.Type))
|
observedPkgs.Add(string(actualPkg.Type))
|
||||||
|
|
||||||
@ -207,7 +207,7 @@ func TestPkgCoverageDirectory(t *testing.T) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if actualPkgCount != len(test.pkgInfo)+test.duplicates {
|
if actualPkgCount != len(test.pkgInfo)+test.duplicates {
|
||||||
for actualPkg := range sbom.Artifacts.PackageCatalog.Enumerate(test.pkgType) {
|
for actualPkg := range sbom.Artifacts.Packages.Enumerate(test.pkgType) {
|
||||||
t.Log(" ", actualPkg)
|
t.Log(" ", actualPkg)
|
||||||
}
|
}
|
||||||
t.Fatalf("unexpected package count: %d!=%d", actualPkgCount, len(test.pkgInfo))
|
t.Fatalf("unexpected package count: %d!=%d", actualPkgCount, len(test.pkgInfo))
|
||||||
@ -246,7 +246,7 @@ func TestPkgCoverageCatalogerConfiguration(t *testing.T) {
|
|||||||
definedLanguages := internal.NewStringSet()
|
definedLanguages := internal.NewStringSet()
|
||||||
definedLanguages.Add("rust")
|
definedLanguages.Add("rust")
|
||||||
|
|
||||||
for actualPkg := range sbom.Artifacts.PackageCatalog.Enumerate() {
|
for actualPkg := range sbom.Artifacts.Packages.Enumerate() {
|
||||||
observedLanguages.Add(actualPkg.Language.String())
|
observedLanguages.Add(actualPkg.Language.String())
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -270,7 +270,7 @@ func TestPkgCoverageImage_HasEvidence(t *testing.T) {
|
|||||||
for _, c := range cases {
|
for _, c := range cases {
|
||||||
t.Run(c.name, func(t *testing.T) {
|
t.Run(c.name, func(t *testing.T) {
|
||||||
|
|
||||||
for a := range sbom.Artifacts.PackageCatalog.Enumerate(c.pkgType) {
|
for a := range sbom.Artifacts.Packages.Enumerate(c.pkgType) {
|
||||||
assert.NotEmpty(t, a.Locations.ToSlice(), "package %q has no locations (type=%q)", a.Name, a.Type)
|
assert.NotEmpty(t, a.Locations.ToSlice(), "package %q has no locations (type=%q)", a.Name, a.Type)
|
||||||
for _, l := range a.Locations.ToSlice() {
|
for _, l := range a.Locations.ToSlice() {
|
||||||
if _, exists := l.Annotations[pkg.EvidenceAnnotationKey]; !exists {
|
if _, exists := l.Annotations[pkg.EvidenceAnnotationKey]; !exists {
|
||||||
@ -300,7 +300,7 @@ func TestPkgCoverageDirectory_HasEvidence(t *testing.T) {
|
|||||||
for _, c := range cases {
|
for _, c := range cases {
|
||||||
t.Run(c.name, func(t *testing.T) {
|
t.Run(c.name, func(t *testing.T) {
|
||||||
|
|
||||||
for a := range sbom.Artifacts.PackageCatalog.Enumerate(c.pkgType) {
|
for a := range sbom.Artifacts.Packages.Enumerate(c.pkgType) {
|
||||||
assert.NotEmpty(t, a.Locations.ToSlice(), "package %q has no locations (type=%q)", a.Name, a.Type)
|
assert.NotEmpty(t, a.Locations.ToSlice(), "package %q has no locations (type=%q)", a.Name, a.Type)
|
||||||
for _, l := range a.Locations.ToSlice() {
|
for _, l := range a.Locations.ToSlice() {
|
||||||
if _, exists := l.Annotations[pkg.EvidenceAnnotationKey]; !exists {
|
if _, exists := l.Annotations[pkg.EvidenceAnnotationKey]; !exists {
|
||||||
|
|||||||
@ -12,7 +12,7 @@ func TestMarinerDistroless(t *testing.T) {
|
|||||||
|
|
||||||
expectedPkgs := 12
|
expectedPkgs := 12
|
||||||
actualPkgs := 0
|
actualPkgs := 0
|
||||||
for range sbom.Artifacts.PackageCatalog.Enumerate(pkg.RpmPkg) {
|
for range sbom.Artifacts.Packages.Enumerate(pkg.RpmPkg) {
|
||||||
actualPkgs += 1
|
actualPkgs += 1
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -14,7 +14,7 @@ func TestNpmPackageLockDirectory(t *testing.T) {
|
|||||||
|
|
||||||
foundPackages := internal.NewStringSet()
|
foundPackages := internal.NewStringSet()
|
||||||
|
|
||||||
for actualPkg := range sbom.Artifacts.PackageCatalog.Enumerate(pkg.NpmPkg) {
|
for actualPkg := range sbom.Artifacts.Packages.Enumerate(pkg.NpmPkg) {
|
||||||
for _, actualLocation := range actualPkg.Locations.ToSlice() {
|
for _, actualLocation := range actualPkg.Locations.ToSlice() {
|
||||||
if strings.Contains(actualLocation.RealPath, "node_modules") {
|
if strings.Contains(actualLocation.RealPath, "node_modules") {
|
||||||
t.Errorf("found packages from package-lock.json in node_modules: %s", actualLocation)
|
t.Errorf("found packages from package-lock.json in node_modules: %s", actualLocation)
|
||||||
@ -36,7 +36,7 @@ func TestYarnPackageLockDirectory(t *testing.T) {
|
|||||||
foundPackages := internal.NewStringSet()
|
foundPackages := internal.NewStringSet()
|
||||||
expectedPackages := internal.NewStringSet("async@0.9.2", "async@3.2.3", "merge-objects@1.0.5", "should-type@1.3.0", "@4lolo/resize-observer-polyfill@1.5.2")
|
expectedPackages := internal.NewStringSet("async@0.9.2", "async@3.2.3", "merge-objects@1.0.5", "should-type@1.3.0", "@4lolo/resize-observer-polyfill@1.5.2")
|
||||||
|
|
||||||
for actualPkg := range sbom.Artifacts.PackageCatalog.Enumerate(pkg.NpmPkg) {
|
for actualPkg := range sbom.Artifacts.Packages.Enumerate(pkg.NpmPkg) {
|
||||||
for _, actualLocation := range actualPkg.Locations.ToSlice() {
|
for _, actualLocation := range actualPkg.Locations.ToSlice() {
|
||||||
if strings.Contains(actualLocation.RealPath, "node_modules") {
|
if strings.Contains(actualLocation.RealPath, "node_modules") {
|
||||||
t.Errorf("found packages from yarn.lock in node_modules: %s", actualLocation)
|
t.Errorf("found packages from yarn.lock in node_modules: %s", actualLocation)
|
||||||
|
|||||||
@ -65,15 +65,15 @@ func TestPackageDeduplication(t *testing.T) {
|
|||||||
t.Run(string(tt.scope), func(t *testing.T) {
|
t.Run(string(tt.scope), func(t *testing.T) {
|
||||||
sbom, _ := catalogFixtureImage(t, "image-vertical-package-dups", tt.scope, nil)
|
sbom, _ := catalogFixtureImage(t, "image-vertical-package-dups", tt.scope, nil)
|
||||||
|
|
||||||
for _, p := range sbom.Artifacts.PackageCatalog.Sorted() {
|
for _, p := range sbom.Artifacts.Packages.Sorted() {
|
||||||
if p.Type == pkg.BinaryPkg {
|
if p.Type == pkg.BinaryPkg {
|
||||||
assert.NotEmpty(t, p.Name)
|
assert.NotEmpty(t, p.Name)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
assert.Equal(t, tt.packageCount, sbom.Artifacts.PackageCatalog.PackageCount())
|
assert.Equal(t, tt.packageCount, sbom.Artifacts.Packages.PackageCount())
|
||||||
for name, expectedInstanceCount := range tt.instanceCount {
|
for name, expectedInstanceCount := range tt.instanceCount {
|
||||||
pkgs := sbom.Artifacts.PackageCatalog.PackagesByName(name)
|
pkgs := sbom.Artifacts.Packages.PackagesByName(name)
|
||||||
|
|
||||||
// with multiple packages with the same name, something is wrong (or this is the wrong fixture)
|
// with multiple packages with the same name, something is wrong (or this is the wrong fixture)
|
||||||
require.Len(t, pkgs, expectedInstanceCount)
|
require.Len(t, pkgs, expectedInstanceCount)
|
||||||
|
|||||||
@ -14,7 +14,7 @@ func TestRegression212ApkBufferSize(t *testing.T) {
|
|||||||
|
|
||||||
expectedPkgs := 58
|
expectedPkgs := 58
|
||||||
actualPkgs := 0
|
actualPkgs := 0
|
||||||
for range sbom.Artifacts.PackageCatalog.Enumerate(pkg.ApkPkg) {
|
for range sbom.Artifacts.Packages.Enumerate(pkg.ApkPkg) {
|
||||||
actualPkgs += 1
|
actualPkgs += 1
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -20,7 +20,7 @@ func TestRegressionGoArchDiscovery(t *testing.T) {
|
|||||||
|
|
||||||
var actualELF, actualWIN, actualMACOS int
|
var actualELF, actualWIN, actualMACOS int
|
||||||
|
|
||||||
for p := range sbom.Artifacts.PackageCatalog.Enumerate(pkg.GoModulePkg) {
|
for p := range sbom.Artifacts.Packages.Enumerate(pkg.GoModulePkg) {
|
||||||
for _, l := range p.Locations.ToSlice() {
|
for _, l := range p.Locations.ToSlice() {
|
||||||
switch {
|
switch {
|
||||||
case strings.Contains(l.RealPath, "elf"):
|
case strings.Contains(l.RealPath, "elf"):
|
||||||
|
|||||||
@ -12,7 +12,7 @@ func TestRustAudit(t *testing.T) {
|
|||||||
|
|
||||||
expectedPkgs := 2
|
expectedPkgs := 2
|
||||||
actualPkgs := 0
|
actualPkgs := 0
|
||||||
for range sbom.Artifacts.PackageCatalog.Enumerate(pkg.RustPkg) {
|
for range sbom.Artifacts.Packages.Enumerate(pkg.RustPkg) {
|
||||||
actualPkgs += 1
|
actualPkgs += 1
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -17,7 +17,7 @@ func TestSbomCataloger(t *testing.T) {
|
|||||||
expectedGoModCatalogerPkgs := 2
|
expectedGoModCatalogerPkgs := 2
|
||||||
actualSbomPkgs := 0
|
actualSbomPkgs := 0
|
||||||
actualGoModPkgs := 0
|
actualGoModPkgs := 0
|
||||||
for pkg := range sbom.Artifacts.PackageCatalog.Enumerate(pkg.GoModulePkg) {
|
for pkg := range sbom.Artifacts.Packages.Enumerate(pkg.GoModulePkg) {
|
||||||
if pkg.FoundBy == "go-mod-file-cataloger" {
|
if pkg.FoundBy == "go-mod-file-cataloger" {
|
||||||
actualGoModPkgs += 1
|
actualGoModPkgs += 1
|
||||||
} else if pkg.FoundBy == "sbom-cataloger" {
|
} else if pkg.FoundBy == "sbom-cataloger" {
|
||||||
|
|||||||
@ -16,7 +16,7 @@ func TestSqliteRpm(t *testing.T) {
|
|||||||
|
|
||||||
expectedPkgs := 139
|
expectedPkgs := 139
|
||||||
actualPkgs := 0
|
actualPkgs := 0
|
||||||
for range sbom.Artifacts.PackageCatalog.Enumerate(pkg.RpmPkg) {
|
for range sbom.Artifacts.Packages.Enumerate(pkg.RpmPkg) {
|
||||||
actualPkgs += 1
|
actualPkgs += 1
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -33,7 +33,7 @@ func catalogFixtureImage(t *testing.T, fixtureImageName string, scope source.Sco
|
|||||||
|
|
||||||
return sbom.SBOM{
|
return sbom.SBOM{
|
||||||
Artifacts: sbom.Artifacts{
|
Artifacts: sbom.Artifacts{
|
||||||
PackageCatalog: pkgCatalog,
|
Packages: pkgCatalog,
|
||||||
LinuxDistribution: actualDistro,
|
LinuxDistribution: actualDistro,
|
||||||
},
|
},
|
||||||
Relationships: relationships,
|
Relationships: relationships,
|
||||||
@ -68,7 +68,7 @@ func catalogDirectory(t *testing.T, dir string) (sbom.SBOM, *source.Source) {
|
|||||||
|
|
||||||
return sbom.SBOM{
|
return sbom.SBOM{
|
||||||
Artifacts: sbom.Artifacts{
|
Artifacts: sbom.Artifacts{
|
||||||
PackageCatalog: pkgCatalog,
|
Packages: pkgCatalog,
|
||||||
LinuxDistribution: actualDistro,
|
LinuxDistribution: actualDistro,
|
||||||
},
|
},
|
||||||
Relationships: relationships,
|
Relationships: relationships,
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user