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) {