syft/imgbom/cataloger/java/archive_filename_test.go
2020-07-08 16:16:01 -04:00

88 lines
2.1 KiB
Go

package java
import (
"github.com/anchore/imgbom/imgbom/pkg"
"github.com/sergi/go-diff/diffmatchpatch"
"testing"
)
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.JarPkg,
},
{
filename: "pkg-extra-field-maven-4.3.2.war",
version: "4.3.2",
extension: "war",
name: "pkg-extra-field-maven",
ty: pkg.WarPkg,
},
{
filename: "pkg-extra-field-maven-4.3.2-rc1.ear",
version: "4.3.2-rc1",
extension: "ear",
name: "pkg-extra-field-maven",
ty: pkg.EarPkg,
},
{
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.JpiPkg,
},
{
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.HpiPkg,
},
}
for _, test := range tests {
t.Run(test.filename, func(t *testing.T) {
obj := newJavaArchiveFilename(test.filename)
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))
}
})
}
}