diff --git a/CHANGELOG.md b/CHANGELOG.md index 60990dbfe7..4aa873a414 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -54,6 +54,7 @@ Ref: https://keepachangelog.com/en/1.0.0/ ### Bug Fixes +* (client/keys) [#24041](https://github.com/cosmos/cosmos-sdk/pull/24041) `keys delete` won't terminate when a key is not found, but will log the error. * (baseapp) [#24027](https://github.com/cosmos/cosmos-sdk/pull/24027) Ensure that `BaseApp.Init` checks that the commit multistore is set to protect against nil dereferences. * (x/group) [GHSA-47ww-ff84-4jrg](https://github.com/cosmos/cosmos-sdk/security/advisories/GHSA-47ww-ff84-4jrg) Fix x/group can halt when erroring in EndBlocker * (x/distribution) [#23934](https://github.com/cosmos/cosmos-sdk/pull/23934) Fix vulnerability in `incrementReferenceCount` in distribution. diff --git a/client/keys/delete.go b/client/keys/delete.go index 46a269091d..cf6ffe660a 100644 --- a/client/keys/delete.go +++ b/client/keys/delete.go @@ -37,7 +37,8 @@ private keys stored in a ledger device cannot be deleted with the CLI. for _, name := range args { k, err := clientCtx.Keyring.Key(name) if err != nil { - return err + cmd.PrintErrf("key %s not found\n", name) + continue } // confirm deletion, unless -y is passed diff --git a/client/keys/delete_test.go b/client/keys/delete_test.go index 29246b1095..17d68a65a3 100644 --- a/client/keys/delete_test.go +++ b/client/keys/delete_test.go @@ -1,6 +1,7 @@ package keys import ( + "bytes" "context" "fmt" "testing" @@ -20,9 +21,11 @@ import ( func Test_runDeleteCmd(t *testing.T) { // Now add a temporary keybase kbHome := t.TempDir() + errBuf := new(bytes.Buffer) cmd := DeleteKeyCommand() cmd.Flags().AddFlagSet(Commands().PersistentFlags()) mockIn := testutil.ApplyMockIODiscardOutErr(cmd) + cmd.SetErr(errBuf) yesF, _ := cmd.Flags().GetBool(flagYes) forceF, _ := cmd.Flags().GetBool(flagForce) @@ -53,8 +56,10 @@ func Test_runDeleteCmd(t *testing.T) { ctx := context.WithValue(context.Background(), client.ClientContextKey, &clientCtx) err = cmd.ExecuteContext(ctx) - require.Error(t, err) - require.EqualError(t, err, "blah.info: key not found") + require.NoError(t, err) + + output := errBuf.String() + require.Contains(t, output, "key blah not found") // User confirmation missing cmd.SetArgs([]string{