From a609b3bcd1f653773ce02310d295c0d0bf34e975 Mon Sep 17 00:00:00 2001 From: Oliver Sun Date: Fri, 28 Aug 2026 12:06:45 -0700 Subject: [PATCH 1/3] Export invalid filter type error returned by FilterImage --- private/bufpkg/bufimage/bufimageutil/bufimageutil.go | 4 ++++ .../bufpkg/bufimage/bufimageutil/bufimageutil_test.go | 9 +++++++++ private/bufpkg/bufimage/bufimageutil/image_filter.go | 4 ++-- 3 files changed, 15 insertions(+), 2 deletions(-) diff --git a/private/bufpkg/bufimage/bufimageutil/bufimageutil.go b/private/bufpkg/bufimage/bufimageutil/bufimageutil.go index d8178c6145..f22d0c860f 100644 --- a/private/bufpkg/bufimage/bufimageutil/bufimageutil.go +++ b/private/bufpkg/bufimage/bufimageutil/bufimageutil.go @@ -39,6 +39,10 @@ var ( // a specified type cannot be found in an image. ErrImageFilterTypeNotFound = errors.New("not found") + // ErrImageFilterTypeInvalid is returned from FilterImage when + // a specified type is invalid. + ErrImageFilterTypeInvalid = errors.New("invalid type filter") + // ErrImageFilterTypeIsImport is returned from FilterImage when // a specified type name is declared in a module dependency. ErrImageFilterTypeIsImport = errors.New("type declared in imported module") diff --git a/private/bufpkg/bufimage/bufimageutil/bufimageutil_test.go b/private/bufpkg/bufimage/bufimageutil/bufimageutil_test.go index 87296a1acc..c3678ffab8 100644 --- a/private/bufpkg/bufimage/bufimageutil/bufimageutil_test.go +++ b/private/bufpkg/bufimage/bufimageutil/bufimageutil_test.go @@ -511,6 +511,15 @@ func TestTypesFromMainModule(t *testing.T) { _, err = FilterImage(image, WithIncludeTypes("nonexisting")) require.Error(t, err) assert.ErrorIs(t, err, ErrImageFilterTypeNotFound) + + _, err = FilterImage(image, WithIncludeTypes("invalid-include")) + require.Error(t, err) + assert.ErrorIs(t, err, ErrImageFilterTypeInvalid) + + _, err = FilterImage(image, WithExcludeTypes("invalid-exclude")) + require.Error(t, err) + assert.ErrorIs(t, err, ErrImageFilterTypeInvalid) + } func TestMutateInPlace(t *testing.T) { diff --git a/private/bufpkg/bufimage/bufimageutil/image_filter.go b/private/bufpkg/bufimage/bufimageutil/image_filter.go index 833f683a1d..b7a7225798 100644 --- a/private/bufpkg/bufimage/bufimageutil/image_filter.go +++ b/private/bufpkg/bufimage/bufimageutil/image_filter.go @@ -42,9 +42,9 @@ func isValidFilterTypeName(name string) bool { // message also clarifies that the only supported wildcard is a trailing ".**". func invalidFilterTypeError(kind, typeName string) error { if strings.Contains(typeName, "*") { - return fmt.Errorf("invalid %s type %q: the only supported wildcard is %q and it must come at the end", kind, typeName, ".**") + return fmt.Errorf("%w: %s type %q: the only supported wildcard is %q and it must come at the end", ErrImageFilterTypeInvalid, kind, typeName, ".**") } - return fmt.Errorf("invalid %s type %q", kind, typeName) + return fmt.Errorf("%w: %s type %q", ErrImageFilterTypeInvalid, kind, typeName) } // filterImage filters the Image for the given options. From 6c84697c8d9ac345a1a4f01dea4db3d6b8283264 Mon Sep 17 00:00:00 2001 From: Oliver Sun Date: Fri, 28 Aug 2026 12:36:09 -0700 Subject: [PATCH 2/3] fix --- private/bufpkg/bufimage/bufimageutil/bufimageutil_test.go | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/private/bufpkg/bufimage/bufimageutil/bufimageutil_test.go b/private/bufpkg/bufimage/bufimageutil/bufimageutil_test.go index c3678ffab8..1b8d7ab7a6 100644 --- a/private/bufpkg/bufimage/bufimageutil/bufimageutil_test.go +++ b/private/bufpkg/bufimage/bufimageutil/bufimageutil_test.go @@ -374,9 +374,9 @@ func TestPackages(t *testing.T) { _, image, err := getImage(ctx, slogtestext.NewLogger(t), "testdata/packages", bufimage.WithExcludeSourceCodeInfo()) require.NoError(t, err) _, err = FilterImage(image, WithIncludeTypes("foo.**.bar")) - require.ErrorContains(t, err, "invalid include type \"foo.**.bar\": the only supported wildcard is \".**\" and it must come at the end") + require.ErrorContains(t, err, "invalid type filter: include type \"foo.**.bar\": the only supported wildcard is \".**\" and it must come at the end") _, err = FilterImage(image, WithExcludeTypes("foo.*")) - require.ErrorContains(t, err, "invalid exclude type \"foo.*\": the only supported wildcard is \".**\" and it must come at the end") + require.ErrorContains(t, err, "invalid type filter: exclude type \"foo.*\": the only supported wildcard is \".**\" and it must come at the end") }) } @@ -519,7 +519,6 @@ func TestTypesFromMainModule(t *testing.T) { _, err = FilterImage(image, WithExcludeTypes("invalid-exclude")) require.Error(t, err) assert.ErrorIs(t, err, ErrImageFilterTypeInvalid) - } func TestMutateInPlace(t *testing.T) { From 776240c932afa9b1441a9464b0bd8d4c0c532c4e Mon Sep 17 00:00:00 2001 From: Oliver Sun Date: Fri, 28 Aug 2026 13:04:58 -0700 Subject: [PATCH 3/3] type filter => filter type --- private/bufpkg/bufimage/bufimageutil/bufimageutil.go | 2 +- private/bufpkg/bufimage/bufimageutil/bufimageutil_test.go | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/private/bufpkg/bufimage/bufimageutil/bufimageutil.go b/private/bufpkg/bufimage/bufimageutil/bufimageutil.go index f22d0c860f..cc768d9230 100644 --- a/private/bufpkg/bufimage/bufimageutil/bufimageutil.go +++ b/private/bufpkg/bufimage/bufimageutil/bufimageutil.go @@ -41,7 +41,7 @@ var ( // ErrImageFilterTypeInvalid is returned from FilterImage when // a specified type is invalid. - ErrImageFilterTypeInvalid = errors.New("invalid type filter") + ErrImageFilterTypeInvalid = errors.New("invalid filter type") // ErrImageFilterTypeIsImport is returned from FilterImage when // a specified type name is declared in a module dependency. diff --git a/private/bufpkg/bufimage/bufimageutil/bufimageutil_test.go b/private/bufpkg/bufimage/bufimageutil/bufimageutil_test.go index 1b8d7ab7a6..45321a0301 100644 --- a/private/bufpkg/bufimage/bufimageutil/bufimageutil_test.go +++ b/private/bufpkg/bufimage/bufimageutil/bufimageutil_test.go @@ -374,9 +374,9 @@ func TestPackages(t *testing.T) { _, image, err := getImage(ctx, slogtestext.NewLogger(t), "testdata/packages", bufimage.WithExcludeSourceCodeInfo()) require.NoError(t, err) _, err = FilterImage(image, WithIncludeTypes("foo.**.bar")) - require.ErrorContains(t, err, "invalid type filter: include type \"foo.**.bar\": the only supported wildcard is \".**\" and it must come at the end") + require.ErrorContains(t, err, "invalid filter type: include type \"foo.**.bar\": the only supported wildcard is \".**\" and it must come at the end") _, err = FilterImage(image, WithExcludeTypes("foo.*")) - require.ErrorContains(t, err, "invalid type filter: exclude type \"foo.*\": the only supported wildcard is \".**\" and it must come at the end") + require.ErrorContains(t, err, "invalid filter type: exclude type \"foo.*\": the only supported wildcard is \".**\" and it must come at the end") }) }