diff --git a/staging/src/k8s.io/cli-runtime/pkg/resource/builder.go b/staging/src/k8s.io/cli-runtime/pkg/resource/builder.go index cf28696db10..5a526d505cf 100644 --- a/staging/src/k8s.io/cli-runtime/pkg/resource/builder.go +++ b/staging/src/k8s.io/cli-runtime/pkg/resource/builder.go @@ -820,7 +820,14 @@ func (b *Builder) visitorResult() *Result { } if len(b.resources) != 0 { - return &Result{err: fmt.Errorf("resource(s) were provided, but no name, label selector, or --all flag specified")} + for _, r := range b.resources { + _, err := b.mappingFor(r) + if err != nil { + return &Result{err: err} + } else { + return &Result{err: fmt.Errorf("resource(s) were provided, but no name, label selector, or --all flag specified")} + } + } } return &Result{err: missingResourceError} } diff --git a/staging/src/k8s.io/cli-runtime/pkg/resource/builder_test.go b/staging/src/k8s.io/cli-runtime/pkg/resource/builder_test.go index 426dcb20a3a..5f5fe433ae1 100644 --- a/staging/src/k8s.io/cli-runtime/pkg/resource/builder_test.go +++ b/staging/src/k8s.io/cli-runtime/pkg/resource/builder_test.go @@ -1228,7 +1228,18 @@ func TestFieldSelectorRequiresKnownTypes(t *testing.T) { t.Errorf("unexpected non-error") } } +func TestNoSelectorUnknowResourceType(t *testing.T) { + b := newDefaultBuilder(). + NamespaceParam("test"). + ResourceTypeOrNameArgs(false, "unknown") + err := b.Do().Err() + if err != nil { + if !strings.Contains(err.Error(), "server doesn't have a resource type \"unknown\"") { + t.Fatalf("unexpected error: %v", err) + } + } +} func TestSingleResourceType(t *testing.T) { b := newDefaultBuilder(). LabelSelectorParam("a=b").