From b9cfd8264512c3534698605bc841c6b71521a69f Mon Sep 17 00:00:00 2001 From: Paul Seiffert Date: Wed, 12 Jul 2017 17:15:13 +0200 Subject: [PATCH] Quote non-string values if necessary --- text_formatter.go | 7 ++++++- text_formatter_test.go | 11 +++++++++++ 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/text_formatter.go b/text_formatter.go index e125015..6f573a2 100644 --- a/text_formatter.go +++ b/text_formatter.go @@ -184,7 +184,12 @@ func (f *TextFormatter) appendValue(b *bytes.Buffer, value interface{}) { b.WriteString(f.quoteString(errmsg)) } default: - fmt.Fprint(b, value) + s := fmt.Sprint(value) + if !f.needsQuoting(s) { + b.WriteString(s) + } else { + b.WriteString(f.quoteString(s)) + } } } diff --git a/text_formatter_test.go b/text_formatter_test.go index 1fc55ae..93f47b7 100644 --- a/text_formatter_test.go +++ b/text_formatter_test.go @@ -6,6 +6,7 @@ import ( "strings" "testing" "time" + "fmt" ) func TestQuoting(t *testing.T) { @@ -83,6 +84,16 @@ func TestEscaping_DefaultQuoteCharacter(t *testing.T) { } } +func TestEscaping_Time(t *testing.T) { + tf := &TextFormatter{DisableColors: true} + ts := time.Now() + + b, _ := tf.Format(WithField("test", ts)) + if !bytes.Contains(b, []byte(fmt.Sprintf("\"%s\"", ts.Format("2006-01-02 15:04:05.999999999 -0700 MST")))) { + t.Errorf("escaping expected for %q (result was %q)", ts, string(b)) + } +} + func TestEscaping_CustomQuoteCharacter(t *testing.T) { tf := &TextFormatter{DisableColors: true}