mirror of
https://github.com/anchore/syft.git
synced 2026-10-31 06:26:30 +01:00
fix: in some cases, try to use pom info to guess name and version to top level jar (#2080)
Otherwise, small renames like 'hudson-war-2.2.1.war' to 'hudson.war', would cause syft to incorrectly catolog the archive. Signed-off-by: Will Murphy <will.murphy@anchore.com>
This commit is contained in:
@@ -0,0 +1,36 @@
|
||||
package integration
|
||||
|
||||
import (
|
||||
"strings"
|
||||
"testing"
|
||||
|
||||
"github.com/stretchr/testify/assert"
|
||||
|
||||
"github.com/anchore/syft/syft/pkg"
|
||||
"github.com/anchore/syft/syft/source"
|
||||
)
|
||||
|
||||
func TestWarCatalogedCorrectlyIfRenamed(t *testing.T) {
|
||||
// install hudson-war@2.2.1 and renames the file to `/hudson.war`
|
||||
sbom, _ := catalogFixtureImage(t, "image-java-virtualpath-regression", source.SquashedScope, nil)
|
||||
|
||||
badPURL := "pkg:maven/hudson/hudson@2.2.1"
|
||||
goodPURL := "pkg:maven/org.jvnet.hudson.main/hudson-war@2.2.1"
|
||||
foundCorrectPackage := false
|
||||
badVirtualPath := "/hudson.war:org.jvnet.hudson.main:hudson-war"
|
||||
goodVirtualPath := "/hudson.war"
|
||||
for _, p := range sbom.Artifacts.Packages.Sorted() {
|
||||
if p.Type == pkg.JavaPkg && strings.Contains(p.Name, "hudson") {
|
||||
assert.NotEqual(t, badPURL, p.PURL, "must not find bad purl %q", badPURL)
|
||||
virtPath := ""
|
||||
if meta, ok := p.Metadata.(pkg.JavaMetadata); ok {
|
||||
virtPath = meta.VirtualPath
|
||||
if p.PURL == goodPURL && virtPath == goodVirtualPath {
|
||||
foundCorrectPackage = true
|
||||
}
|
||||
}
|
||||
assert.NotEqual(t, badVirtualPath, virtPath, "must not find bad virtual path %q", badVirtualPath)
|
||||
}
|
||||
}
|
||||
assert.True(t, foundCorrectPackage, "must find correct package, but did not")
|
||||
}
|
||||
@@ -0,0 +1,7 @@
|
||||
FROM alpine:latest
|
||||
|
||||
RUN wget https://repo1.maven.org/maven2/org/jvnet/hudson/main/hudson-war/2.2.1/hudson-war-2.2.1.war
|
||||
|
||||
RUN mv hudson-war-2.2.1.war hudson.war
|
||||
|
||||
|
||||
Reference in New Issue
Block a user