datarhei-dragonfork-core/log/log_test.go

236 lines
5.6 KiB
Go
Raw Normal View History

2022-05-13 13:26:45 -04:00
package log
import (
"bufio"
"bytes"
"testing"
2023-01-24 15:04:24 -05:00
"github.com/stretchr/testify/require"
2022-05-13 13:26:45 -04:00
)
func TestLoglevelNames(t *testing.T) {
2023-01-24 15:04:24 -05:00
require.Equal(t, "DEBUG", Ldebug.String())
require.Equal(t, "ERROR", Lerror.String())
require.Equal(t, "WARN", Lwarn.String())
require.Equal(t, "INFO", Linfo.String())
require.Equal(t, `SILENT`, Lsilent.String())
2022-05-13 13:26:45 -04:00
}
func TestLogColorToNotTTY(t *testing.T) {
var buffer bytes.Buffer
writer := bufio.NewWriter(&buffer)
w := NewConsoleWriter(writer, Linfo, true).(*syncWriter)
formatter := w.writer.(*consoleWriter).formatter.(*consoleFormatter)
2023-01-24 15:04:24 -05:00
require.NotEqual(t, true, formatter.color, "Color should not be used on a buffer logger")
2022-05-13 13:26:45 -04:00
}
func TestLogContext(t *testing.T) {
var buffer bytes.Buffer
writer := bufio.NewWriter(&buffer)
logger := New("component").WithOutput(NewConsoleWriter(writer, Ldebug, false))
logger.Debug().Log("debug")
logger.Info().Log("info")
logger.Warn().Log("warn")
logger.Error().Log("error")
writer.Flush()
lenWithCtx := buffer.Len()
buffer.Reset()
logger = logger.WithComponent("")
logger.Debug().Log("debug")
logger.Info().Log("info")
logger.Warn().Log("warn")
logger.Error().Log("error")
writer.Flush()
lenWithoutCtx := buffer.Len()
buffer.Reset()
2023-01-24 15:04:24 -05:00
require.Greater(t, lenWithCtx, lenWithoutCtx, "Log line length without context is not shorter than with context")
2022-05-13 13:26:45 -04:00
}
func TestLogClone(t *testing.T) {
var buffer bytes.Buffer
writer := bufio.NewWriter(&buffer)
logger := New("test").WithOutput(NewConsoleWriter(writer, Linfo, false))
logger.Info().Log("info")
writer.Flush()
2023-01-24 15:04:24 -05:00
require.Contains(t, buffer.String(), `component="test"`)
2022-05-13 13:26:45 -04:00
buffer.Reset()
logger2 := logger.WithComponent("tset")
logger2.Info().Log("info")
writer.Flush()
2023-01-24 15:04:24 -05:00
require.Contains(t, buffer.String(), `component="tset"`)
2022-05-13 13:26:45 -04:00
}
func TestLogSilent(t *testing.T) {
var buffer bytes.Buffer
writer := bufio.NewWriter(&buffer)
logger := New("test").WithOutput(NewConsoleWriter(writer, Lsilent, false))
logger.Debug().Log("debug")
writer.Flush()
2023-01-24 15:04:24 -05:00
require.Equal(t, 0, buffer.Len(), "Buffer should be empty")
2022-05-13 13:26:45 -04:00
buffer.Reset()
logger.Info().Log("info")
writer.Flush()
2023-01-24 15:04:24 -05:00
require.Equal(t, 0, buffer.Len(), "Buffer should be empty")
2022-05-13 13:26:45 -04:00
buffer.Reset()
logger.Warn().Log("warn")
writer.Flush()
2023-01-24 15:04:24 -05:00
require.Equal(t, 0, buffer.Len(), "Buffer should be empty")
2022-05-13 13:26:45 -04:00
buffer.Reset()
logger.Error().Log("error")
writer.Flush()
2023-01-24 15:04:24 -05:00
require.Equal(t, 0, buffer.Len(), "Buffer should be empty")
2022-05-13 13:26:45 -04:00
buffer.Reset()
}
func TestLogDebug(t *testing.T) {
var buffer bytes.Buffer
writer := bufio.NewWriter(&buffer)
logger := New("test").WithOutput(NewConsoleWriter(writer, Ldebug, false))
logger.Debug().Log("debug")
writer.Flush()
2023-01-24 15:04:24 -05:00
require.NotEqual(t, 0, buffer.Len(), "Buffer should not be empty")
2022-05-13 13:26:45 -04:00
buffer.Reset()
logger.Info().Log("info")
writer.Flush()
2023-01-24 15:04:24 -05:00
require.NotEqual(t, 0, buffer.Len(), "Buffer should not be empty")
2022-05-13 13:26:45 -04:00
buffer.Reset()
logger.Warn().Log("warn")
writer.Flush()
2023-01-24 15:04:24 -05:00
require.NotEqual(t, 0, buffer.Len(), "Buffer should not be empty")
2022-05-13 13:26:45 -04:00
buffer.Reset()
logger.Error().Log("error")
writer.Flush()
2023-01-24 15:04:24 -05:00
require.NotEqual(t, 0, buffer.Len(), "Buffer should not be empty")
2022-05-13 13:26:45 -04:00
buffer.Reset()
}
func TestLogInfo(t *testing.T) {
var buffer bytes.Buffer
writer := bufio.NewWriter(&buffer)
logger := New("test").WithOutput(NewConsoleWriter(writer, Linfo, false))
logger.Debug().Log("debug")
writer.Flush()
2023-01-24 15:04:24 -05:00
require.Equal(t, 0, buffer.Len(), "Buffer should be empty")
2022-05-13 13:26:45 -04:00
buffer.Reset()
logger.Info().Log("info")
writer.Flush()
2023-01-24 15:04:24 -05:00
require.NotEqual(t, 0, buffer.Len(), "Buffer should not be empty")
2022-05-13 13:26:45 -04:00
buffer.Reset()
logger.Warn().Log("warn")
writer.Flush()
2023-01-24 15:04:24 -05:00
require.NotEqual(t, 0, buffer.Len(), "Buffer should not be empty")
2022-05-13 13:26:45 -04:00
buffer.Reset()
logger.Error().Log("error")
writer.Flush()
2023-01-24 15:04:24 -05:00
require.NotEqual(t, 0, buffer.Len(), "Buffer should not be empty")
2022-05-13 13:26:45 -04:00
buffer.Reset()
}
func TestLogWarn(t *testing.T) {
var buffer bytes.Buffer
writer := bufio.NewWriter(&buffer)
logger := New("test").WithOutput(NewConsoleWriter(writer, Lwarn, false))
logger.Debug().Log("debug")
writer.Flush()
2023-01-24 15:04:24 -05:00
require.Equal(t, 0, buffer.Len(), "Buffer should be empty")
2022-05-13 13:26:45 -04:00
buffer.Reset()
logger.Info().Log("info")
writer.Flush()
2023-01-24 15:04:24 -05:00
require.Equal(t, 0, buffer.Len(), "Buffer should be empty")
2022-05-13 13:26:45 -04:00
buffer.Reset()
logger.Warn().Log("warn")
writer.Flush()
2023-01-24 15:04:24 -05:00
require.NotEqual(t, 0, buffer.Len(), "Buffer should not be empty")
2022-05-13 13:26:45 -04:00
buffer.Reset()
logger.Error().Log("error")
writer.Flush()
2023-01-24 15:04:24 -05:00
require.NotEqual(t, 0, buffer.Len(), "Buffer should not be empty")
2022-05-13 13:26:45 -04:00
buffer.Reset()
}
func TestLogError(t *testing.T) {
var buffer bytes.Buffer
writer := bufio.NewWriter(&buffer)
logger := New("test").WithOutput(NewConsoleWriter(writer, Lerror, false))
logger.Debug().Log("debug")
writer.Flush()
2023-01-24 15:04:24 -05:00
require.Equal(t, 0, buffer.Len(), "Buffer should be empty")
2022-05-13 13:26:45 -04:00
buffer.Reset()
logger.Info().Log("info")
writer.Flush()
2023-01-24 15:04:24 -05:00
require.Equal(t, 0, buffer.Len(), "Buffer should be empty")
2022-05-13 13:26:45 -04:00
buffer.Reset()
logger.Warn().Log("warn")
writer.Flush()
2023-01-24 15:04:24 -05:00
require.Equal(t, 0, buffer.Len(), "Buffer should be empty")
2022-05-13 13:26:45 -04:00
buffer.Reset()
logger.Error().Log("error")
writer.Flush()
2023-01-24 15:04:24 -05:00
require.NotEqual(t, 0, buffer.Len(), "Buffer should not be empty")
2022-05-13 13:26:45 -04:00
buffer.Reset()
}
2023-01-24 15:04:24 -05:00
func TestLogWithField(t *testing.T) {
bufwriter := NewBufferWriter(Linfo, 10)
logger := New("test").WithOutput(bufwriter)
logger = logger.WithField("foo", "bar")
logger.Info().Log("hello")
events := bufwriter.Events()
require.Equal(t, 1, len(events))
require.Empty(t, events[0].err)
require.Equal(t, "bar", events[0].Data["foo"])
logger = logger.WithField("func", func() bool { return true })
logger.Info().Log("hello")
events = bufwriter.Events()
require.Equal(t, 2, len(events))
require.NotEmpty(t, events[1].err)
require.Equal(t, "bar", events[0].Data["foo"])
}