mirror of
https://github.com/anchore/syft.git
synced 2025-11-18 08:53:15 +01:00
155 lines
3.9 KiB
Go
155 lines
3.9 KiB
Go
package java
|
|
|
|
import (
|
|
"testing"
|
|
|
|
"github.com/anchore/syft/syft/pkg"
|
|
"github.com/sergi/go-diff/diffmatchpatch"
|
|
)
|
|
|
|
func TestExtractInfoFromJavaArchiveFilename(t *testing.T) {
|
|
tests := []struct {
|
|
filename string
|
|
version string
|
|
extension string
|
|
name string
|
|
ty pkg.Type
|
|
}{
|
|
{
|
|
filename: "pkg-maven-4.3.2.blerg",
|
|
version: "4.3.2",
|
|
extension: "blerg",
|
|
name: "pkg-maven",
|
|
ty: pkg.UnknownPkg,
|
|
},
|
|
{
|
|
filename: "pkg-maven-4.3.2.jar",
|
|
version: "4.3.2",
|
|
extension: "jar",
|
|
name: "pkg-maven",
|
|
ty: pkg.JavaPkg,
|
|
},
|
|
{
|
|
filename: "pkg-extra-field-maven-4.3.2.war",
|
|
version: "4.3.2",
|
|
extension: "war",
|
|
name: "pkg-extra-field-maven",
|
|
ty: pkg.JavaPkg,
|
|
},
|
|
{
|
|
filename: "pkg-extra-field-maven-4.3.2-rc1.ear",
|
|
version: "4.3.2-rc1",
|
|
extension: "ear",
|
|
name: "pkg-extra-field-maven",
|
|
ty: pkg.JavaPkg,
|
|
},
|
|
{
|
|
filename: "/some/path/pkg-extra-field-maven-4.3.2-rc1.jpi",
|
|
version: "4.3.2-rc1",
|
|
extension: "jpi",
|
|
name: "pkg-extra-field-maven",
|
|
ty: pkg.JenkinsPluginPkg,
|
|
},
|
|
{
|
|
filename: "/some/path-with-version-5.4.3/pkg-extra-field-maven-4.3.2-rc1.hpi",
|
|
version: "4.3.2-rc1",
|
|
extension: "hpi",
|
|
name: "pkg-extra-field-maven",
|
|
ty: pkg.JenkinsPluginPkg,
|
|
},
|
|
{
|
|
filename: "/some/path-with-version-5.4.3/wagon-webdav-1.0.2-beta-2.2.3a-hudson.jar",
|
|
version: "1.0.2-beta-2.2.3a-hudson",
|
|
extension: "jar",
|
|
name: "wagon-webdav",
|
|
ty: pkg.JavaPkg,
|
|
},
|
|
{
|
|
filename: "/some/path-with-version-5.4.3/wagon-webdav-1.0.2-beta-2.2.3-hudson.jar",
|
|
version: "1.0.2-beta-2.2.3-hudson",
|
|
extension: "jar",
|
|
name: "wagon-webdav",
|
|
ty: pkg.JavaPkg,
|
|
},
|
|
{
|
|
filename: "/some/path-with-version-5.4.3/windows-remote-command-1.0.jar",
|
|
version: "1.0",
|
|
extension: "jar",
|
|
name: "windows-remote-command",
|
|
ty: pkg.JavaPkg,
|
|
},
|
|
{
|
|
filename: "/some/path-with-version-5.4.3/wagon-http-lightweight-1.0.5-beta-2.jar",
|
|
version: "1.0.5-beta-2",
|
|
extension: "jar",
|
|
name: "wagon-http-lightweight",
|
|
ty: pkg.JavaPkg,
|
|
},
|
|
{
|
|
filename: "/hudson.war:WEB-INF/lib/commons-jelly-1.1-hudson-20100305.jar",
|
|
version: "1.1-hudson-20100305",
|
|
extension: "jar",
|
|
name: "commons-jelly",
|
|
ty: pkg.JavaPkg,
|
|
},
|
|
{
|
|
filename: "/hudson.war:WEB-INF/lib/jtidy-4aug2000r7-dev-hudson-1.jar",
|
|
// I don't see how we can reliably account for this case
|
|
//version: "4aug2000r7-dev-hudson-1",
|
|
version: "",
|
|
extension: "jar",
|
|
name: "jtidy",
|
|
ty: pkg.JavaPkg,
|
|
},
|
|
{
|
|
filename: "/hudson.war:WEB-INF/lib/trilead-ssh2-build212-hudson-5.jar",
|
|
// I don't see how we can reliably account for this case
|
|
//version: "build212-hudson-5",
|
|
version: "5",
|
|
extension: "jar",
|
|
// name: "trilead-ssh2",
|
|
name: "trilead-ssh2-build212-hudson",
|
|
ty: pkg.JavaPkg,
|
|
},
|
|
{
|
|
filename: "/hudson.war:WEB-INF/lib/guava-r06.jar",
|
|
version: "r06",
|
|
extension: "jar",
|
|
name: "guava",
|
|
ty: pkg.JavaPkg,
|
|
},
|
|
}
|
|
|
|
for _, test := range tests {
|
|
t.Run(test.filename, func(t *testing.T) {
|
|
obj := newJavaArchiveFilename(test.filename)
|
|
|
|
ty := obj.pkgType()
|
|
if ty != test.ty {
|
|
t.Errorf("mismatched type: %+v != %v", ty, test.ty)
|
|
}
|
|
|
|
version := obj.version()
|
|
if version != test.version {
|
|
dmp := diffmatchpatch.New()
|
|
diffs := dmp.DiffMain(version, test.version, true)
|
|
t.Errorf("mismatched version:\n%s", dmp.DiffPrettyText(diffs))
|
|
}
|
|
|
|
extension := obj.extension()
|
|
if extension != test.extension {
|
|
dmp := diffmatchpatch.New()
|
|
diffs := dmp.DiffMain(extension, test.extension, true)
|
|
t.Errorf("mismatched extension:\n%s", dmp.DiffPrettyText(diffs))
|
|
}
|
|
|
|
name := obj.name()
|
|
if name != test.name {
|
|
dmp := diffmatchpatch.New()
|
|
diffs := dmp.DiffMain(name, test.name, true)
|
|
t.Errorf("mismatched name:\n%s", dmp.DiffPrettyText(diffs))
|
|
}
|
|
})
|
|
}
|
|
}
|