summaryrefslogtreecommitdiff
path: root/template_test.go
diff options
context:
space:
mode:
authorDave Henderson <dhenderson@gmail.com>2018-11-27 23:08:08 -0500
committerDave Henderson <dhenderson@gmail.com>2018-11-27 23:15:49 -0500
commit7a1263ced6dfbea47b1a99f07b97d45cf03b4a36 (patch)
treeef38238691a362907a1a34cd3cb34bdd3de2ed50 /template_test.go
parent64849331e9a42ebd6b57c1fc24dec20300a4c401 (diff)
Adding option to suppress empty output files
Signed-off-by: Dave Henderson <dhenderson@gmail.com>
Diffstat (limited to 'template_test.go')
-rw-r--r--template_test.go57
1 files changed, 57 insertions, 0 deletions
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
+}