mirror of
https://github.com/anchore/syft.git
synced 2025-11-17 08:23:15 +01:00
109 lines
2.0 KiB
Go
109 lines
2.0 KiB
Go
package dpkg
|
|
|
|
import (
|
|
"bufio"
|
|
"os"
|
|
"testing"
|
|
|
|
"github.com/anchore/imgbom/imgbom/pkg"
|
|
"github.com/go-test/deep"
|
|
)
|
|
|
|
func compareEntries(t *testing.T, left, right pkg.DpkgMetadata) {
|
|
t.Helper()
|
|
if diff := deep.Equal(left, right); diff != nil {
|
|
t.Error(diff)
|
|
}
|
|
}
|
|
|
|
func TestSinglePackage(t *testing.T) {
|
|
tests := []struct {
|
|
name string
|
|
expected pkg.DpkgMetadata
|
|
}{
|
|
{
|
|
name: "Test Single Package",
|
|
expected: pkg.DpkgMetadata{
|
|
Package: "apt",
|
|
Source: "apt-dev",
|
|
Version: "1.8.2",
|
|
},
|
|
},
|
|
}
|
|
|
|
for _, test := range tests {
|
|
t.Run(test.name, func(t *testing.T) {
|
|
file, err := os.Open("test-fixtures/single")
|
|
if err != nil {
|
|
t.Fatal("Unable to read test_fixtures/single: ", err)
|
|
}
|
|
defer func() {
|
|
err := file.Close()
|
|
if err != nil {
|
|
t.Fatal("closing file failed:", err)
|
|
}
|
|
}()
|
|
|
|
reader := bufio.NewReader(file)
|
|
|
|
entry, err := parseDpkgStatusEntry(reader)
|
|
if err != nil {
|
|
t.Fatal("Unable to read file contents: ", err)
|
|
}
|
|
|
|
compareEntries(t, entry, test.expected)
|
|
})
|
|
}
|
|
}
|
|
|
|
func TestMultiplePackages(t *testing.T) {
|
|
tests := []struct {
|
|
name string
|
|
expected []pkg.DpkgMetadata
|
|
}{
|
|
{
|
|
name: "Test Multiple Package",
|
|
expected: []pkg.DpkgMetadata{
|
|
{
|
|
Package: "tzdata",
|
|
Version: "2020a-0+deb10u1",
|
|
Source: "tzdata-dev",
|
|
},
|
|
{
|
|
Package: "util-linux",
|
|
Version: "2.33.1-0.1",
|
|
},
|
|
},
|
|
},
|
|
}
|
|
|
|
for _, test := range tests {
|
|
t.Run(test.name, func(t *testing.T) {
|
|
file, err := os.Open("test-fixtures/multiple")
|
|
if err != nil {
|
|
t.Fatal("Unable to read: ", err)
|
|
}
|
|
defer func() {
|
|
err := file.Close()
|
|
if err != nil {
|
|
t.Fatal("closing file failed:", err)
|
|
}
|
|
}()
|
|
|
|
pkgs, err := ParseDpkgStatus(file)
|
|
if err != nil {
|
|
t.Fatal("Unable to read file contents: ", err)
|
|
}
|
|
|
|
if len(pkgs) != 2 {
|
|
t.Fatalf("unexpected number of entries: %d", len(pkgs))
|
|
}
|
|
|
|
for idx, entry := range pkgs {
|
|
compareEntries(t, entry.Metadata.(pkg.DpkgMetadata), test.expected[idx])
|
|
}
|
|
|
|
})
|
|
}
|
|
}
|