From 6be994f1cab4c339b93399d783f44b44d5f7ff0f Mon Sep 17 00:00:00 2001 From: Andrey Nering Date: Sun, 22 Apr 2018 21:40:03 -0300 Subject: [PATCH] Write test for ouput types --- Taskfile.yml | 1 + internal/output/output_test.go | 62 ++++++++++++++++++++++++++++++++++ 2 files changed, 63 insertions(+) create mode 100644 internal/output/output_test.go diff --git a/Taskfile.yml b/Taskfile.yml index 8c2a2a7b..f92f726d 100644 --- a/Taskfile.yml +++ b/Taskfile.yml @@ -13,6 +13,7 @@ vars: ./internal/compiler/v2 ./internal/execext ./internal/logger + ./internal/output ./internal/status ./internal/taskfile ./internal/taskfile/version diff --git a/internal/output/output_test.go b/internal/output/output_test.go new file mode 100644 index 00000000..e2efd2db --- /dev/null +++ b/internal/output/output_test.go @@ -0,0 +1,62 @@ +package output_test + +import ( + "bytes" + "fmt" + "testing" + + "github.com/go-task/task/internal/output" + + "github.com/stretchr/testify/assert" +) + +func TestInterleaved(t *testing.T) { + var b bytes.Buffer + var o output.Output = output.Interleaved{} + var w = o.WrapWriter(&b, "") + + fmt.Fprintln(w, "foo\nbar") + assert.Equal(t, "foo\nbar\n", b.String()) + fmt.Fprintln(w, "baz") + assert.Equal(t, "foo\nbar\nbaz\n", b.String()) +} + +func TestGroup(t *testing.T) { + var b bytes.Buffer + var o output.Output = output.Group{} + var w = o.WrapWriter(&b, "") + + fmt.Fprintln(w, "foo\nbar") + assert.Equal(t, "", b.String()) + fmt.Fprintln(w, "baz") + assert.Equal(t, "", b.String()) + assert.NoError(t, w.Close()) + assert.Equal(t, "foo\nbar\nbaz\n", b.String()) +} + +func TestPrefixed(t *testing.T) { + var b bytes.Buffer + var o output.Output = output.Prefixed{} + var w = o.WrapWriter(&b, "prefix") + + t.Run("simple use cases", func(t *testing.T) { + b.Reset() + + fmt.Fprintln(w, "foo\nbar") + assert.Equal(t, "[prefix] foo\n[prefix] bar\n", b.String()) + fmt.Fprintln(w, "baz") + assert.Equal(t, "[prefix] foo\n[prefix] bar\n[prefix] baz\n", b.String()) + }) + + t.Run("multiple writes for a single line", func(t *testing.T) { + b.Reset() + + for _, char := range []string{"T", "e", "s", "t", "!"} { + fmt.Fprint(w, char) + assert.Equal(t, "", b.String()) + } + + assert.NoError(t, w.Close()) + assert.Equal(t, "[prefix] Test!\n", b.String()) + }) +}