From 810f50173e3631130cdbe6a7cf45edd2b8c82e7d Mon Sep 17 00:00:00 2001 From: Aditya kumar singh <143548997+Adityakk9031@users.noreply.github.com> Date: Tue, 6 Oct 2026 00:09:18 +0530 Subject: [PATCH] fix(cmdutil): return converted YAML bytes directly in formatJSON and prevent nil-pointer panic --- pkg/cmd/cmdutil.go | 3 +-- pkg/cmd/cmdutil_test.go | 12 ++++++++++++ 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/pkg/cmd/cmdutil.go b/pkg/cmd/cmdutil.go index 0867816..91e87db 100644 --- a/pkg/cmd/cmdutil.go +++ b/pkg/cmd/cmdutil.go @@ -355,8 +355,7 @@ func formatJSON(res gjson.Result, opts ShowJSONOpts) ([]byte, error) { if err := json2yaml.Convert(&yaml, input); err != nil { return nil, err } - _, err := opts.Stdout.Write([]byte(yaml.String())) - return nil, err + return []byte(yaml.String()), nil default: return nil, fmt.Errorf("Invalid format: %s, valid formats are: %s", opts.Format, strings.Join(OutputFormats, ", ")) } diff --git a/pkg/cmd/cmdutil_test.go b/pkg/cmd/cmdutil_test.go index 1ecb22c..b0f4201 100644 --- a/pkg/cmd/cmdutil_test.go +++ b/pkg/cmd/cmdutil_test.go @@ -220,6 +220,18 @@ func TestFormatJSON(t *testing.T) { require.NoError(t, err) require.Equal(t, `{"a":1}`+"\n", string(formatted)) }) + + t.Run("YAMLFormat", func(t *testing.T) { + t.Parallel() + + res := gjson.Parse(`{"name":"alice","age":30}`) + // Test with Stdout: nil to ensure it does not panic on nil Stdout + formatted, err := formatJSON(res, ShowJSONOpts{Format: "yaml"}) + require.NoError(t, err) + require.NotEmpty(t, formatted) + require.Contains(t, string(formatted), "name: alice") + require.Contains(t, string(formatted), "age: 30") + }) } func TestShowJSONIterator(t *testing.T) {