Files
syft/syft/pkg/cataloger/lua/parse_rockspec_test.go
T
Keith ZantowandAlex Goodman ccbee94b87 feat: report unknowns in sbom (#2998)
Signed-off-by: Keith Zantow <kzantow@gmail.com>
Signed-off-by: Alex Goodman <wagoodman@users.noreply.github.com>
Co-authored-by: Alex Goodman <wagoodman@users.noreply.github.com>
2024-10-07 16:11:37 -04:00

116 lines
3.5 KiB
Go

package lua
import (
"testing"
"github.com/anchore/syft/syft/file"
"github.com/anchore/syft/syft/pkg"
"github.com/anchore/syft/syft/pkg/cataloger/internal/pkgtest"
)
func TestParseRockspec(t *testing.T) {
tests := []struct {
Fixture string
ExpectedPkg pkg.Package
}{
{
Fixture: "test-fixtures/rockspec/kong-3.7.0-0.rockspec",
ExpectedPkg: pkg.Package{
Name: "kong",
Version: "3.7.0-0",
PURL: "pkg:luarocks/kong@3.7.0-0",
Type: pkg.LuaRocksPkg,
Language: pkg.Lua,
Licenses: pkg.NewLicenseSet(
pkg.NewLicenseFromLocations("Apache-2.0", file.NewLocation("test-fixtures/rockspec/kong-3.7.0-0.rockspec")),
),
Metadata: pkg.LuaRocksPackage{
Name: "kong",
Version: "3.7.0-0",
License: "Apache-2.0",
Homepage: "https://konghq.com",
Description: "Kong is a scalable and customizable API Management Layer built on top of Nginx.",
URL: "git+https://github.com/Kong/kong.git",
},
},
},
{
Fixture: "test-fixtures/rockspec/lpeg-1.0.2-1.rockspec",
ExpectedPkg: pkg.Package{
Name: "LPeg",
Version: "1.0.2-1",
PURL: "pkg:luarocks/LPeg@1.0.2-1",
Type: pkg.LuaRocksPkg,
Language: pkg.Lua,
Licenses: pkg.NewLicenseSet(
pkg.NewLicenseFromLocations("MIT/X11", file.NewLocation("test-fixtures/rockspec/lpeg-1.0.2-1.rockspec")),
),
Metadata: pkg.LuaRocksPackage{
Name: "LPeg",
Version: "1.0.2-1",
License: "MIT/X11",
Homepage: "http://www.inf.puc-rio.br/~roberto/lpeg.html",
Description: "Parsing Expression Grammars For Lua",
URL: "http://www.inf.puc-rio.br/~roberto/lpeg/lpeg-1.0.2.tar.gz",
},
},
},
{
Fixture: "test-fixtures/rockspec/kong-pgmoon-1.16.2-1.rockspec",
ExpectedPkg: pkg.Package{
Name: "kong-pgmoon",
Version: "1.16.2-1",
PURL: "pkg:luarocks/kong-pgmoon@1.16.2-1",
Type: pkg.LuaRocksPkg,
Language: pkg.Lua,
Licenses: pkg.NewLicenseSet(
pkg.NewLicenseFromLocations("MIT", file.NewLocation("test-fixtures/rockspec/kong-pgmoon-1.16.2-1.rockspec")),
),
Metadata: pkg.LuaRocksPackage{
Name: "kong-pgmoon",
Version: "1.16.2-1",
License: "MIT",
Homepage: "https://github.com/Kong/pgmoon",
Description: "Postgres driver for OpenResty and Lua",
URL: "git+https://github.com/kong/pgmoon.git",
},
},
},
{
Fixture: "test-fixtures/rockspec/luasyslog-2.0.1-1.rockspec",
ExpectedPkg: pkg.Package{
Name: "luasyslog",
Version: "2.0.1-1",
PURL: "pkg:luarocks/luasyslog@2.0.1-1",
Type: pkg.LuaRocksPkg,
Language: pkg.Lua,
Licenses: pkg.NewLicenseSet(
pkg.NewLicenseFromLocations("MIT/X11", file.NewLocation("test-fixtures/rockspec/luasyslog-2.0.1-1.rockspec")),
),
Metadata: pkg.LuaRocksPackage{
Name: "luasyslog",
Version: "2.0.1-1",
License: "MIT/X11",
Homepage: "https://github.com/lunarmodules/luasyslog",
Description: "Syslog logging for Lua",
URL: "git://github.com/lunarmodules/luasyslog.git",
},
},
},
}
for _, test := range tests {
t.Run(test.Fixture, func(t *testing.T) {
test.ExpectedPkg.Locations.Add(file.NewLocation(test.Fixture))
pkgtest.TestFileParser(t, test.Fixture, parseRockspec, []pkg.Package{test.ExpectedPkg}, nil)
})
}
}
func Test_corruptRockspec(t *testing.T) {
pkgtest.NewCatalogTester().
FromFile(t, "test-fixtures/corrupt/bad-1.23.0-0.rockspec").
WithError().
TestParser(t, parseRockspec)
}