From 7a1263ced6dfbea47b1a99f07b97d45cf03b4a36 Mon Sep 17 00:00:00 2001 From: Dave Henderson Date: Tue, 27 Nov 2018 23:08:08 -0500 Subject: Adding option to suppress empty output files Signed-off-by: Dave Henderson --- template_test.go | 57 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 57 insertions(+) (limited to 'template_test.go') diff --git a/template_test.go b/template_test.go index 190fb35f..fb71ecea 100644 --- a/template_test.go +++ b/template_test.go @@ -295,3 +295,60 @@ func TestProcessTemplates(t *testing.T) { fs.Remove("out") } } + +func TestAllWhitespace(t *testing.T) { + testdata := []struct { + in []byte + expected bool + }{ + {[]byte(" "), true}, + {[]byte("foo"), false}, + {[]byte(" \t\n\n\v\r\n"), true}, + {[]byte(" foo "), false}, + } + + for _, d := range testdata { + assert.Equal(t, d.expected, allWhitespace(d.in)) + } +} + +func TestEmptySkipper(t *testing.T) { + testdata := []struct { + in []byte + empty bool + }{ + {[]byte(" "), true}, + {[]byte("foo"), false}, + {[]byte(" \t\n\n\v\r\n"), true}, + {[]byte(" foo "), false}, + } + + for _, d := range testdata { + w := &bufferCloser{&bytes.Buffer{}} + opened := false + f := newEmptySkipper(func() (io.WriteCloser, error) { + t.Logf("I got called %#v", w) + opened = true + return w, nil + }) + n, err := f.Write(d.in) + assert.NoError(t, err) + assert.Equal(t, len(d.in), n) + if d.empty { + assert.Nil(t, f.w) + assert.False(t, opened) + } else { + assert.NotNil(t, f.w) + assert.True(t, opened) + assert.EqualValues(t, d.in, w.Bytes()) + } + } +} + +type bufferCloser struct { + *bytes.Buffer +} + +func (b *bufferCloser) Close() error { + return nil +} -- cgit v1.2.3