github.com/anchore/syft@v1.38.2/syft/pkg/cataloger/snap/integration_test.go (about) 1 package snap 2 3 import ( 4 "context" 5 "os" 6 "testing" 7 8 "github.com/stretchr/testify/assert" 9 "github.com/stretchr/testify/require" 10 11 "github.com/anchore/syft/syft/file" 12 "github.com/anchore/syft/syft/pkg" 13 "github.com/anchore/syft/syft/pkg/cataloger/generic" 14 ) 15 16 func TestRealDpkgYamlParsing(t *testing.T) { 17 fixture := "test-fixtures/real-dpkg.yaml" 18 19 // Open the file 20 f, err := os.Open(fixture) 21 require.NoError(t, err) 22 defer f.Close() 23 24 reader := file.LocationReadCloser{ 25 Location: file.NewLocation(fixture), 26 ReadCloser: f, 27 } 28 29 // Parse using our function 30 packages, relationships, err := parseBaseDpkgYaml(context.Background(), nil, &generic.Environment{}, reader) 31 32 require.NoError(t, err) 33 assert.Nil(t, relationships) // relationships should be nil for this parser 34 35 // We should have 10 packages from the fixture 36 assert.Equal(t, 10, len(packages)) 37 38 // Check some specific packages 39 foundPackages := make(map[string]pkg.Package) 40 for _, p := range packages { 41 foundPackages[p.Name] = p 42 } 43 44 // Verify key packages exist 45 require.Contains(t, foundPackages, "adduser") 46 require.Contains(t, foundPackages, "systemd") 47 require.Contains(t, foundPackages, "gcc-10-base") 48 49 // Check that architecture is parsed correctly from package names 50 gccPkg := foundPackages["gcc-10-base"] 51 metadata, ok := gccPkg.Metadata.(pkg.SnapEntry) 52 require.True(t, ok) 53 assert.Equal(t, "amd64", metadata.Architecture) 54 assert.Equal(t, pkg.SnapTypeBase, metadata.SnapType) 55 }