github.com/fastly/cli@v1.7.2-0.20240304164155-9d0f1d77c3bf/pkg/fmt/fmt.go (about) 1 package fmt 2 3 import ( 4 "bytes" 5 "encoding/json" 6 "fmt" 7 8 "github.com/fastly/cli/pkg/text" 9 ) 10 11 // Success is a test helper used to generate output for asserting against. 12 func Success(format string, args ...any) string { 13 var b bytes.Buffer 14 text.Success(&b, format, args...) 15 return b.String() 16 } 17 18 // JSON decodes then re-encodes back to JSON, with indentation matching 19 // that of ../cmd/argparser.go's argparser.WriteJSON. 20 func JSON(format string, args ...any) string { 21 var r json.RawMessage 22 if err := json.Unmarshal([]byte(fmt.Sprintf(format, args...)), &r); err != nil { 23 panic(err) 24 } 25 return EncodeJSON(r) 26 } 27 28 // EncodeJSON is a test helper that encodes any Go type into JSON. 29 func EncodeJSON(value any) string { 30 var b bytes.Buffer 31 enc := json.NewEncoder(&b) 32 enc.SetIndent("", " ") 33 _ = enc.Encode(value) 34 return b.String() 35 }