github.com/fredbi/git-chglog@v0.0.0-20190706071416-d35c598eac81/cmd/git-chglog/logger_test.go (about)

     1  package main
     2  
     3  import (
     4  	"bytes"
     5  	"fmt"
     6  	"testing"
     7  
     8  	"github.com/fatih/color"
     9  	"github.com/stretchr/testify/assert"
    10  	emoji "gopkg.in/kyokomi/emoji.v1"
    11  )
    12  
    13  func TestLoggerLogSilent(t *testing.T) {
    14  	color.NoColor = false
    15  	assert := assert.New(t)
    16  
    17  	stdout := &bytes.Buffer{}
    18  	stderr := &bytes.Buffer{}
    19  	logger := NewLogger(stdout, stderr, true, false)
    20  	logger.Log(":+1:Hello, World! :)")
    21  	assert.Equal("", stdout.String())
    22  }
    23  
    24  func TestLoggerLog(t *testing.T) {
    25  	color.NoColor = false
    26  	assert := assert.New(t)
    27  
    28  	stdout := &bytes.Buffer{}
    29  	stderr := &bytes.Buffer{}
    30  	logger := NewLogger(stdout, stderr, false, false)
    31  	logger.Log(":+1:Hello, World! :)")
    32  	assert.Equal(emoji.Sprint(":+1:Hello, World! :)\n"), stdout.String())
    33  }
    34  
    35  func TestLoggerLogNoEmoji(t *testing.T) {
    36  	color.NoColor = false
    37  	assert := assert.New(t)
    38  
    39  	stdout := &bytes.Buffer{}
    40  	stderr := &bytes.Buffer{}
    41  	logger := NewLogger(stdout, stderr, false, true)
    42  	logger.Log(":+1:Hello, World! :)")
    43  	assert.Equal(fmt.Sprint("Hello, World! :)\n"), stdout.String())
    44  }
    45  
    46  func TestLoggerError(t *testing.T) {
    47  	color.NoColor = false
    48  	assert := assert.New(t)
    49  
    50  	prefix := color.New(color.FgWhite, color.BgRed, color.Bold).SprintFunc()
    51  
    52  	// Basic
    53  	stdout := &bytes.Buffer{}
    54  	stderr := &bytes.Buffer{}
    55  	logger := NewLogger(stdout, stderr, false, false)
    56  	logger.Error("This is error message!! :dog:")
    57  	assert.Equal("", stdout.String())
    58  	assert.Equal(emoji.Sprint(fmt.Sprintf("%s %s\n", prefix(" ERROR "), color.RedString("This is error message!! :dog:"))), stderr.String())
    59  
    60  	// Silent
    61  	stdout = &bytes.Buffer{}
    62  	stderr = &bytes.Buffer{}
    63  	logger = NewLogger(stdout, stderr, true, false)
    64  	logger.Error("Foo")
    65  	assert.Equal("", stdout.String())
    66  	assert.NotEqual("", stderr.String())
    67  
    68  	// NoEmoji
    69  	stdout = &bytes.Buffer{}
    70  	stderr = &bytes.Buffer{}
    71  	logger = NewLogger(stdout, stderr, true, true)
    72  	logger.Error("HOGE :hand:")
    73  	assert.Equal("", stdout.String())
    74  	assert.NotContains(stderr.String(), emoji.Sprint(":hand:"))
    75  }