diff --git a/pkg/cmd/extension/command.go b/pkg/cmd/extension/command.go index 1c929482f..a650e69ab 100644 --- a/pkg/cmd/extension/command.go +++ b/pkg/cmd/extension/command.go @@ -153,6 +153,9 @@ func NewCmdExtension(f *cmdutil.Factory) *cobra.Command { if err != nil && !errors.Is(err, upToDateError) { if name != "" { fmt.Fprintf(io.ErrOut, "%s Failed upgrading extension %s: %s\n", cs.FailureIcon(), name, err) + } else if errors.Is(err, noExtensionsInstalledError) { + fmt.Fprintf(io.ErrOut, "%s No installed extensions found\n", cs.WarningIcon()) + return nil } else { fmt.Fprintf(io.ErrOut, "%s Failed upgrading extensions\n", cs.FailureIcon()) } diff --git a/pkg/cmd/extension/command_test.go b/pkg/cmd/extension/command_test.go index 7e5520fa4..438fd402e 100644 --- a/pkg/cmd/extension/command_test.go +++ b/pkg/cmd/extension/command_test.go @@ -207,6 +207,22 @@ func TestNewCmdExtension(t *testing.T) { isTTY: true, wantStdout: "✓ Successfully upgraded extensions\n", }, + { + name: "upgrade all none installed", + args: []string{"upgrade", "--all"}, + managerStubs: func(em *extensions.ExtensionManagerMock) func(*testing.T) { + em.UpgradeFunc = func(name string, force bool) error { + return noExtensionsInstalledError + } + return func(t *testing.T) { + calls := em.UpgradeCalls() + assert.Equal(t, 1, len(calls)) + assert.Equal(t, "", calls[0].Name) + } + }, + isTTY: true, + wantStderr: "! No installed extensions found\n", + }, { name: "upgrade all notty", args: []string{"upgrade", "--all"},