From cc22fd7990943fdbb32840b1c0710a40d3851101 Mon Sep 17 00:00:00 2001 From: Antonio Murdaca Date: Tue, 12 May 2015 20:18:54 +0200 Subject: [PATCH] Refactor pkg/stremformatter with custom constructors instead of passing a boolean Signed-off-by: Antonio Murdaca --- streamformatter/streamformatter.go | 15 ++++----- streamformatter/streamformatter_test.go | 42 +++++++++++++++++++------ 2 files changed, 41 insertions(+), 16 deletions(-) diff --git a/streamformatter/streamformatter.go b/streamformatter/streamformatter.go index 90f2b69..792ce00 100644 --- a/streamformatter/streamformatter.go +++ b/streamformatter/streamformatter.go @@ -12,8 +12,14 @@ type StreamFormatter struct { json bool } -func NewStreamFormatter(json bool) *StreamFormatter { - return &StreamFormatter{json} +// NewStreamFormatter returns a simple StreamFormatter +func NewStreamFormatter() *StreamFormatter { + return &StreamFormatter{} +} + +// NewJSONStreamFormatter returns a StreamFormatter configured to stream json +func NewJSONStreamFormatter() *StreamFormatter { + return &StreamFormatter{true} } const streamNewline = "\r\n" @@ -62,7 +68,6 @@ func (sf *StreamFormatter) FormatProgress(id, action string, progress *jsonmessa progress = &jsonmessage.JSONProgress{} } if sf.json { - b, err := json.Marshal(&jsonmessage.JSONMessage{ Status: action, ProgressMessage: progress.String(), @@ -81,10 +86,6 @@ func (sf *StreamFormatter) FormatProgress(id, action string, progress *jsonmessa return []byte(action + " " + progress.String() + endl) } -func (sf *StreamFormatter) Json() bool { - return sf.json -} - type StdoutFormater struct { io.Writer *StreamFormatter diff --git a/streamformatter/streamformatter_test.go b/streamformatter/streamformatter_test.go index 1dee05a..acf81be 100644 --- a/streamformatter/streamformatter_test.go +++ b/streamformatter/streamformatter_test.go @@ -10,31 +10,55 @@ import ( ) func TestFormatStream(t *testing.T) { - sf := NewStreamFormatter(true) + sf := NewStreamFormatter() + res := sf.FormatStream("stream") + if string(res) != "stream"+"\r" { + t.Fatalf("%q", res) + } +} + +func TestFormatJSONStatus(t *testing.T) { + sf := NewStreamFormatter() + res := sf.FormatStatus("ID", "%s%d", "a", 1) + if string(res) != "a1\r\n" { + t.Fatalf("%q", res) + } +} + +func TestFormatSimpleError(t *testing.T) { + sf := NewStreamFormatter() + res := sf.FormatError(errors.New("Error for formatter")) + if string(res) != "Error: Error for formatter\r\n" { + t.Fatalf("%q", res) + } +} + +func TestJSONFormatStream(t *testing.T) { + sf := NewJSONStreamFormatter() res := sf.FormatStream("stream") if string(res) != `{"stream":"stream"}`+"\r\n" { t.Fatalf("%q", res) } } -func TestFormatStatus(t *testing.T) { - sf := NewStreamFormatter(true) +func TestJSONFormatStatus(t *testing.T) { + sf := NewJSONStreamFormatter() res := sf.FormatStatus("ID", "%s%d", "a", 1) if string(res) != `{"status":"a1","id":"ID"}`+"\r\n" { t.Fatalf("%q", res) } } -func TestFormatSimpleError(t *testing.T) { - sf := NewStreamFormatter(true) +func TestJSONFormatSimpleError(t *testing.T) { + sf := NewJSONStreamFormatter() res := sf.FormatError(errors.New("Error for formatter")) if string(res) != `{"errorDetail":{"message":"Error for formatter"},"error":"Error for formatter"}`+"\r\n" { t.Fatalf("%q", res) } } -func TestFormatJSONError(t *testing.T) { - sf := NewStreamFormatter(true) +func TestJSONFormatJSONError(t *testing.T) { + sf := NewJSONStreamFormatter() err := &jsonmessage.JSONError{Code: 50, Message: "Json error"} res := sf.FormatError(err) if string(res) != `{"errorDetail":{"code":50,"message":"Json error"},"error":"Json error"}`+"\r\n" { @@ -42,8 +66,8 @@ func TestFormatJSONError(t *testing.T) { } } -func TestFormatProgress(t *testing.T) { - sf := NewStreamFormatter(true) +func TestJSONFormatProgress(t *testing.T) { + sf := NewJSONStreamFormatter() progress := &jsonmessage.JSONProgress{ Current: 15, Total: 30,