diff --git a/cli/internal/run/run.go b/cli/internal/run/run.go index 7af58f6023cf8..45449a11c18e0 100644 --- a/cli/internal/run/run.go +++ b/cli/internal/run/run.go @@ -959,6 +959,10 @@ func getScopedPackages(ctx *context.Context, scopePatterns []string) (scopePkgs } } + if len(include) > 0 && scopedPkgs.Len() == 0 { + return nil, errors.Errorf("No packages found matching the provided scope pattern.") + } + return scopedPkgs, nil } diff --git a/cli/internal/run/run_test.go b/cli/internal/run/run_test.go index 4bed098e7b46b..dc7dae0e7fca6 100644 --- a/cli/internal/run/run_test.go +++ b/cli/internal/run/run_test.go @@ -159,7 +159,7 @@ func TestScopedPackages(t *testing.T) { cases := []struct { Name string Ctx *context.Context - Patttern []string + Pattern []string Expected util.Set }{ { @@ -198,11 +198,16 @@ func TestScopedPackages(t *testing.T) { for i, tc := range cases { t.Run(fmt.Sprintf("%d-%s", i, tc.Name), func(t *testing.T) { - actual, err := getScopedPackages(tc.Ctx, tc.Patttern) + actual, err := getScopedPackages(tc.Ctx, tc.Pattern) if err != nil { t.Fatalf("invalid scope parse: %#v", err) } assert.EqualValues(t, tc.Expected, actual) }) } + + t.Run(fmt.Sprintf("%d-%s", len(cases), "throws an error if no package matches the provided scope pattern"), func(t *testing.T) { + _, err := getScopedPackages(&context.Context{PackageNames: []string{"foo", "bar"}}, []string{"baz"}) + assert.Error(t, err) + }) }