mirror of
https://github.com/anchore/syft.git
synced 2025-11-17 08:23:15 +01:00
chore: pr comments
Signed-off-by: Christopher Phillips <32073428+spiffcs@users.noreply.github.com>
This commit is contained in:
parent
cdb41b0c76
commit
b80592f735
@ -14,6 +14,28 @@ import (
|
|||||||
)
|
)
|
||||||
|
|
||||||
func TestGGUFCataloger_Globs(t *testing.T) {
|
func TestGGUFCataloger_Globs(t *testing.T) {
|
||||||
|
tests := []struct {
|
||||||
|
name string
|
||||||
|
fixture string
|
||||||
|
expected []string
|
||||||
|
}{
|
||||||
|
{
|
||||||
|
name: "obtain gguf files",
|
||||||
|
fixture: "test-fixtures/glob-paths",
|
||||||
|
expected: []string{
|
||||||
|
"models/model.gguf",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
for _, test := range tests {
|
||||||
|
t.Run(test.name, func(t *testing.T) {
|
||||||
|
pkgtest.NewCatalogTester().
|
||||||
|
FromDirectory(t, test.fixture).
|
||||||
|
ExpectsResolverContentQueries(test.expected).
|
||||||
|
TestCataloger(t, NewGGUFCataloger())
|
||||||
|
})
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestGGUFCataloger_Integration(t *testing.T) {
|
func TestGGUFCataloger_Integration(t *testing.T) {
|
||||||
@ -77,8 +99,8 @@ func TestGGUFCataloger_Integration(t *testing.T) {
|
|||||||
IgnoreLocationLayer().
|
IgnoreLocationLayer().
|
||||||
IgnorePackageFields("FoundBy", "Locations"). // These are set by the cataloger
|
IgnorePackageFields("FoundBy", "Locations"). // These are set by the cataloger
|
||||||
WithCompareOptions(
|
WithCompareOptions(
|
||||||
// Ignore Hash as it's computed dynamically
|
// Ignore MetadataHash as it's computed dynamically
|
||||||
cmpopts.IgnoreFields(pkg.GGUFFileHeader{}, "Hash"),
|
cmpopts.IgnoreFields(pkg.GGUFFileHeader{}, "MetadataHash"),
|
||||||
)
|
)
|
||||||
|
|
||||||
tester.TestCataloger(t, NewGGUFCataloger())
|
tester.TestCataloger(t, NewGGUFCataloger())
|
||||||
|
|||||||
@ -1,22 +1,11 @@
|
|||||||
package ai
|
package ai
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"encoding/json"
|
|
||||||
"fmt"
|
|
||||||
|
|
||||||
"github.com/cespare/xxhash/v2"
|
|
||||||
|
|
||||||
"github.com/anchore/syft/internal/log"
|
|
||||||
"github.com/anchore/syft/syft/file"
|
"github.com/anchore/syft/syft/file"
|
||||||
"github.com/anchore/syft/syft/pkg"
|
"github.com/anchore/syft/syft/pkg"
|
||||||
)
|
)
|
||||||
|
|
||||||
func newGGUFPackage(metadata *pkg.GGUFFileHeader, locations ...file.Location) pkg.Package {
|
func newGGUFPackage(metadata *pkg.GGUFFileHeader, locations ...file.Location) pkg.Package {
|
||||||
// Compute hash if not already set
|
|
||||||
if metadata.Hash == "" {
|
|
||||||
metadata.Hash = computeMetadataHash(metadata)
|
|
||||||
}
|
|
||||||
|
|
||||||
p := pkg.Package{
|
p := pkg.Package{
|
||||||
Name: metadata.ModelName,
|
Name: metadata.ModelName,
|
||||||
Version: metadata.ModelVersion,
|
Version: metadata.ModelVersion,
|
||||||
@ -37,33 +26,3 @@ func newGGUFPackage(metadata *pkg.GGUFFileHeader, locations ...file.Location) pk
|
|||||||
|
|
||||||
return p
|
return p
|
||||||
}
|
}
|
||||||
|
|
||||||
// computeMetadataHash computes a stable hash of the metadata for use as a global identifier
|
|
||||||
func computeMetadataHash(metadata *pkg.GGUFFileHeader) string {
|
|
||||||
// Create a stable representation of the metadata
|
|
||||||
hashData := struct {
|
|
||||||
Format string
|
|
||||||
Name string
|
|
||||||
Version string
|
|
||||||
Architecture string
|
|
||||||
GGUFVersion uint32
|
|
||||||
TensorCount uint64
|
|
||||||
}{
|
|
||||||
Name: metadata.ModelName,
|
|
||||||
Version: metadata.ModelVersion,
|
|
||||||
Architecture: metadata.Architecture,
|
|
||||||
GGUFVersion: metadata.GGUFVersion,
|
|
||||||
TensorCount: metadata.TensorCount,
|
|
||||||
}
|
|
||||||
|
|
||||||
// Marshal to JSON for stable hashing
|
|
||||||
jsonBytes, err := json.Marshal(hashData)
|
|
||||||
if err != nil {
|
|
||||||
log.Debugf("failed to marshal metadata for hashing: %v", err)
|
|
||||||
return ""
|
|
||||||
}
|
|
||||||
|
|
||||||
// Compute xxhash
|
|
||||||
hash := xxhash.Sum64(jsonBytes)
|
|
||||||
return fmt.Sprintf("%016x", hash) // 16 hex chars (64 bits)
|
|
||||||
}
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user