mirror of
https://github.com/anchore/syft.git
synced 2025-11-17 08:23:15 +01:00
chore: add source completion tester (#4077)
* add source completion tester Signed-off-by: Alex Goodman <wagoodman@users.noreply.github.com> * add missing t.Helper calls Signed-off-by: Alex Goodman <wagoodman@users.noreply.github.com> --------- Signed-off-by: Alex Goodman <wagoodman@users.noreply.github.com>
This commit is contained in:
parent
48bf81cf7f
commit
f0a990b85f
@ -12,6 +12,7 @@ type CompletionTester struct {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func NewCompletionTester(t testing.TB, ignore ...any) *CompletionTester {
|
func NewCompletionTester(t testing.TB, ignore ...any) *CompletionTester {
|
||||||
|
t.Helper()
|
||||||
tester := &CompletionTester{
|
tester := &CompletionTester{
|
||||||
valid: AllTypes(),
|
valid: AllTypes(),
|
||||||
ignore: ignore,
|
ignore: ignore,
|
||||||
@ -23,6 +24,14 @@ func NewCompletionTester(t testing.TB, ignore ...any) *CompletionTester {
|
|||||||
return tester
|
return tester
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (tr *CompletionTester) Ignore(is ...any) {
|
||||||
|
tr.ignore = append(tr.ignore, keepNonNil(is...)...)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (tr *CompletionTester) Expect(is ...any) {
|
||||||
|
tr.valid = append(tr.valid, keepNonNil(is...)...)
|
||||||
|
}
|
||||||
|
|
||||||
func (tr *CompletionTester) Tested(t testing.TB, m any) {
|
func (tr *CompletionTester) Tested(t testing.TB, m any) {
|
||||||
t.Helper()
|
t.Helper()
|
||||||
|
|
||||||
@ -33,6 +42,13 @@ func (tr *CompletionTester) Tested(t testing.TB, m any) {
|
|||||||
t.Fatal("no valid metadata types to test against")
|
t.Fatal("no valid metadata types to test against")
|
||||||
}
|
}
|
||||||
ty := reflect.TypeOf(m)
|
ty := reflect.TypeOf(m)
|
||||||
|
|
||||||
|
for _, v := range tr.ignore {
|
||||||
|
if reflect.TypeOf(v) == ty {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
for _, v := range tr.valid {
|
for _, v := range tr.valid {
|
||||||
if reflect.TypeOf(v) == ty {
|
if reflect.TypeOf(v) == ty {
|
||||||
tr.saw = append(tr.saw, m)
|
tr.saw = append(tr.saw, m)
|
||||||
@ -67,3 +83,13 @@ validations:
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func keepNonNil(is ...any) []any {
|
||||||
|
var result []any
|
||||||
|
for _, i := range is {
|
||||||
|
if i != nil {
|
||||||
|
result = append(result, i)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return result
|
||||||
|
}
|
||||||
|
|||||||
@ -12,6 +12,7 @@ type CompletionTester struct {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func NewCompletionTester(t testing.TB, ignore ...any) *CompletionTester {
|
func NewCompletionTester(t testing.TB, ignore ...any) *CompletionTester {
|
||||||
|
t.Helper()
|
||||||
tester := &CompletionTester{
|
tester := &CompletionTester{
|
||||||
valid: AllTypes(),
|
valid: AllTypes(),
|
||||||
ignore: ignore,
|
ignore: ignore,
|
||||||
@ -23,6 +24,14 @@ func NewCompletionTester(t testing.TB, ignore ...any) *CompletionTester {
|
|||||||
return tester
|
return tester
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (tr *CompletionTester) Ignore(is ...any) {
|
||||||
|
tr.ignore = append(tr.ignore, keepNonNil(is...)...)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (tr *CompletionTester) Expect(is ...any) {
|
||||||
|
tr.valid = append(tr.valid, keepNonNil(is...)...)
|
||||||
|
}
|
||||||
|
|
||||||
func (tr *CompletionTester) Tested(t testing.TB, m any) {
|
func (tr *CompletionTester) Tested(t testing.TB, m any) {
|
||||||
t.Helper()
|
t.Helper()
|
||||||
|
|
||||||
@ -33,6 +42,13 @@ func (tr *CompletionTester) Tested(t testing.TB, m any) {
|
|||||||
t.Fatal("no valid metadata types to test against")
|
t.Fatal("no valid metadata types to test against")
|
||||||
}
|
}
|
||||||
ty := reflect.TypeOf(m)
|
ty := reflect.TypeOf(m)
|
||||||
|
|
||||||
|
for _, v := range tr.ignore {
|
||||||
|
if reflect.TypeOf(v) == ty {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
for _, v := range tr.valid {
|
for _, v := range tr.valid {
|
||||||
if reflect.TypeOf(v) == ty {
|
if reflect.TypeOf(v) == ty {
|
||||||
tr.saw = append(tr.saw, m)
|
tr.saw = append(tr.saw, m)
|
||||||
@ -67,3 +83,13 @@ validations:
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func keepNonNil(is ...any) []any {
|
||||||
|
var result []any
|
||||||
|
for _, i := range is {
|
||||||
|
if i != nil {
|
||||||
|
result = append(result, i)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return result
|
||||||
|
}
|
||||||
|
|||||||
@ -4,14 +4,27 @@ import (
|
|||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
"github.com/anchore/syft/syft/internal/packagemetadata"
|
"github.com/anchore/syft/syft/internal/packagemetadata"
|
||||||
|
"github.com/anchore/syft/syft/internal/sourcemetadata"
|
||||||
)
|
)
|
||||||
|
|
||||||
type PackageMetadataCompletionTester struct {
|
type PackageMetadataCompletionTester struct {
|
||||||
*packagemetadata.CompletionTester
|
*packagemetadata.CompletionTester
|
||||||
}
|
}
|
||||||
|
|
||||||
|
type SourceMetadataCompletionTester struct {
|
||||||
|
*sourcemetadata.CompletionTester
|
||||||
|
}
|
||||||
|
|
||||||
func NewPackageMetadataCompletionTester(t testing.TB, ignore ...any) *PackageMetadataCompletionTester {
|
func NewPackageMetadataCompletionTester(t testing.TB, ignore ...any) *PackageMetadataCompletionTester {
|
||||||
|
t.Helper()
|
||||||
return &PackageMetadataCompletionTester{
|
return &PackageMetadataCompletionTester{
|
||||||
CompletionTester: packagemetadata.NewCompletionTester(t, ignore...),
|
CompletionTester: packagemetadata.NewCompletionTester(t, ignore...),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func NewSourceMetadataCompletionTester(t testing.TB, ignore ...any) *SourceMetadataCompletionTester {
|
||||||
|
t.Helper()
|
||||||
|
return &SourceMetadataCompletionTester{
|
||||||
|
CompletionTester: sourcemetadata.NewCompletionTester(t, ignore...),
|
||||||
|
}
|
||||||
|
}
|
||||||
Loading…
x
Reference in New Issue
Block a user