2020-09-09 08:22:13 -04:00
|
|
|
package d2util
|
2020-09-08 15:45:26 -04:00
|
|
|
|
|
|
|
import (
|
|
|
|
"fmt"
|
|
|
|
"testing"
|
|
|
|
)
|
|
|
|
|
|
|
|
type testWriter struct {
|
|
|
|
data []byte
|
|
|
|
}
|
|
|
|
|
|
|
|
func (tw *testWriter) Write(msg []byte) (int, error) {
|
|
|
|
tw.data = msg
|
|
|
|
|
|
|
|
return len(msg), nil
|
|
|
|
}
|
|
|
|
|
|
|
|
func Test_logger_SetLevel(t *testing.T) {
|
refactored logging in d2loader, d2record, and d2asset (#898)
* refactored logging in d2config, d2record, and d2asset
* asset manager, record manager, and file loader now utilitize d2util.Logger
* added colored logging to d2util.Logger (excluding windows platforms)
* removed mpq file verification from d2config; d2loader handles this
* record loaders now use the record manager's logger for printing info
* added command line argument for setting log level (`--loglevel 4`, `-l4`, or `-l 4`
* added `LogLevel` parameter to config file
* default log level will show errors, warnings, and info log messages
* specifying log level as an argument overrides setting from config file
* fixed log level tests
2020-11-02 21:23:07 -05:00
|
|
|
l := NewLogger()
|
|
|
|
l.Writer = &testWriter{}
|
2020-09-08 15:45:26 -04:00
|
|
|
|
|
|
|
tests := []struct {
|
|
|
|
level LogLevel
|
|
|
|
}{
|
|
|
|
{LogLevelNone},
|
|
|
|
{LogLevelError},
|
|
|
|
{LogLevelWarning},
|
|
|
|
{LogLevelInfo},
|
|
|
|
{LogLevelDebug},
|
|
|
|
}
|
|
|
|
|
|
|
|
for idx := range tests {
|
|
|
|
targetLevel := tests[idx].level
|
|
|
|
l.SetLevel(targetLevel)
|
|
|
|
|
|
|
|
if l.level != targetLevel {
|
|
|
|
t.Error("unexpected log level")
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
func Test_logger_LogLevels(t *testing.T) {
|
refactored logging in d2loader, d2record, and d2asset (#898)
* refactored logging in d2config, d2record, and d2asset
* asset manager, record manager, and file loader now utilitize d2util.Logger
* added colored logging to d2util.Logger (excluding windows platforms)
* removed mpq file verification from d2config; d2loader handles this
* record loaders now use the record manager's logger for printing info
* added command line argument for setting log level (`--loglevel 4`, `-l4`, or `-l 4`
* added `LogLevel` parameter to config file
* default log level will show errors, warnings, and info log messages
* specifying log level as an argument overrides setting from config file
* fixed log level tests
2020-11-02 21:23:07 -05:00
|
|
|
l := NewLogger()
|
2020-09-08 15:45:26 -04:00
|
|
|
w := &testWriter{}
|
refactored logging in d2loader, d2record, and d2asset (#898)
* refactored logging in d2config, d2record, and d2asset
* asset manager, record manager, and file loader now utilitize d2util.Logger
* added colored logging to d2util.Logger (excluding windows platforms)
* removed mpq file verification from d2config; d2loader handles this
* record loaders now use the record manager's logger for printing info
* added command line argument for setting log level (`--loglevel 4`, `-l4`, or `-l 4`
* added `LogLevel` parameter to config file
* default log level will show errors, warnings, and info log messages
* specifying log level as an argument overrides setting from config file
* fixed log level tests
2020-11-02 21:23:07 -05:00
|
|
|
l.Writer = w
|
2020-09-08 15:45:26 -04:00
|
|
|
|
|
|
|
noMessage := ""
|
|
|
|
message := "test"
|
|
|
|
expectedError := fmt.Sprintf(LogFmtError, message)
|
|
|
|
expectedWarning := fmt.Sprintf(LogFmtWarning, message)
|
|
|
|
expectedInfo := fmt.Sprintf(LogFmtInfo, message)
|
|
|
|
expectedDebug := fmt.Sprintf(LogFmtDebug, message)
|
|
|
|
|
|
|
|
// for each log level we set, we will use different log methods (info, warning, etc) and check
|
|
|
|
// what the output in the writer is (clearing the writer data before each test)
|
|
|
|
tests := []struct {
|
|
|
|
logLevel LogLevel
|
|
|
|
expect map[LogLevel]string
|
|
|
|
}{
|
|
|
|
{LogLevelDebug, map[LogLevel]string{
|
|
|
|
LogLevelError: expectedError,
|
|
|
|
LogLevelWarning: expectedWarning,
|
|
|
|
LogLevelInfo: expectedInfo,
|
|
|
|
LogLevelDebug: expectedDebug,
|
|
|
|
}},
|
|
|
|
{LogLevelInfo, map[LogLevel]string{
|
|
|
|
LogLevelError: expectedError,
|
|
|
|
LogLevelWarning: expectedWarning,
|
|
|
|
LogLevelInfo: expectedInfo,
|
|
|
|
LogLevelDebug: noMessage,
|
|
|
|
}},
|
|
|
|
{LogLevelWarning, map[LogLevel]string{
|
|
|
|
LogLevelError: expectedError,
|
|
|
|
LogLevelWarning: expectedWarning,
|
|
|
|
LogLevelInfo: noMessage,
|
|
|
|
LogLevelDebug: noMessage,
|
|
|
|
}},
|
|
|
|
{LogLevelError, map[LogLevel]string{
|
|
|
|
LogLevelError: expectedError,
|
|
|
|
LogLevelWarning: noMessage,
|
|
|
|
LogLevelInfo: noMessage,
|
|
|
|
LogLevelDebug: noMessage,
|
|
|
|
}},
|
|
|
|
{LogLevelNone, map[LogLevel]string{
|
|
|
|
LogLevelError: noMessage,
|
|
|
|
LogLevelWarning: noMessage,
|
|
|
|
LogLevelInfo: noMessage,
|
|
|
|
LogLevelDebug: noMessage,
|
|
|
|
}},
|
|
|
|
}
|
|
|
|
|
|
|
|
for idx := range tests {
|
|
|
|
level := tests[idx].logLevel
|
|
|
|
l.SetLevel(level)
|
|
|
|
|
|
|
|
for levelTry, msgExpect := range tests[idx].expect {
|
|
|
|
w.data = make([]byte, 0)
|
|
|
|
|
|
|
|
switch levelTry {
|
|
|
|
case LogLevelError:
|
|
|
|
l.Error(message)
|
|
|
|
case LogLevelWarning:
|
|
|
|
l.Warning(message)
|
|
|
|
case LogLevelInfo:
|
|
|
|
l.Info(message)
|
|
|
|
case LogLevelDebug:
|
|
|
|
l.Debug(message)
|
|
|
|
}
|
|
|
|
|
|
|
|
msgGot := string(w.data)
|
|
|
|
|
refactored logging in d2loader, d2record, and d2asset (#898)
* refactored logging in d2config, d2record, and d2asset
* asset manager, record manager, and file loader now utilitize d2util.Logger
* added colored logging to d2util.Logger (excluding windows platforms)
* removed mpq file verification from d2config; d2loader handles this
* record loaders now use the record manager's logger for printing info
* added command line argument for setting log level (`--loglevel 4`, `-l4`, or `-l 4`
* added `LogLevel` parameter to config file
* default log level will show errors, warnings, and info log messages
* specifying log level as an argument overrides setting from config file
* fixed log level tests
2020-11-02 21:23:07 -05:00
|
|
|
if len(msgGot) > 0 && len(msgExpect) < 1 {
|
|
|
|
t.Errorf("logger printed when it should not have")
|
|
|
|
}
|
|
|
|
|
|
|
|
if len(msgGot) < 1 && len(msgExpect) > 0 {
|
|
|
|
t.Errorf("logger didnt print when expected")
|
2020-09-08 15:45:26 -04:00
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|