github.com/lingyao2333/mo-zero@v1.4.1/core/logc/logs_test.go (about)

     1  package logc
     2  
     3  import (
     4  	"bytes"
     5  	"context"
     6  	"encoding/json"
     7  	"fmt"
     8  	"runtime"
     9  	"strings"
    10  	"testing"
    11  
    12  	"github.com/lingyao2333/mo-zero/core/logx"
    13  	"github.com/stretchr/testify/assert"
    14  )
    15  
    16  func TestAddGlobalFields(t *testing.T) {
    17  	var buf bytes.Buffer
    18  	writer := logx.NewWriter(&buf)
    19  	old := logx.Reset()
    20  	logx.SetWriter(writer)
    21  	defer logx.SetWriter(old)
    22  
    23  	Info(context.Background(), "hello")
    24  	buf.Reset()
    25  
    26  	AddGlobalFields(Field("a", "1"), Field("b", "2"))
    27  	AddGlobalFields(Field("c", "3"))
    28  	Info(context.Background(), "world")
    29  	var m map[string]interface{}
    30  	assert.NoError(t, json.Unmarshal(buf.Bytes(), &m))
    31  	assert.Equal(t, "1", m["a"])
    32  	assert.Equal(t, "2", m["b"])
    33  	assert.Equal(t, "3", m["c"])
    34  }
    35  
    36  func TestAlert(t *testing.T) {
    37  	var buf strings.Builder
    38  	writer := logx.NewWriter(&buf)
    39  	old := logx.Reset()
    40  	logx.SetWriter(writer)
    41  	defer logx.SetWriter(old)
    42  
    43  	Alert(context.Background(), "foo")
    44  	assert.True(t, strings.Contains(buf.String(), "foo"), buf.String())
    45  }
    46  
    47  func TestError(t *testing.T) {
    48  	var buf strings.Builder
    49  	writer := logx.NewWriter(&buf)
    50  	old := logx.Reset()
    51  	logx.SetWriter(writer)
    52  	defer logx.SetWriter(old)
    53  
    54  	file, line := getFileLine()
    55  	Error(context.Background(), "foo")
    56  	assert.True(t, strings.Contains(buf.String(), fmt.Sprintf("%s:%d", file, line+1)))
    57  }
    58  
    59  func TestErrorf(t *testing.T) {
    60  	var buf strings.Builder
    61  	writer := logx.NewWriter(&buf)
    62  	old := logx.Reset()
    63  	logx.SetWriter(writer)
    64  	defer logx.SetWriter(old)
    65  
    66  	file, line := getFileLine()
    67  	Errorf(context.Background(), "foo %s", "bar")
    68  	assert.True(t, strings.Contains(buf.String(), fmt.Sprintf("%s:%d", file, line+1)))
    69  }
    70  
    71  func TestErrorv(t *testing.T) {
    72  	var buf strings.Builder
    73  	writer := logx.NewWriter(&buf)
    74  	old := logx.Reset()
    75  	logx.SetWriter(writer)
    76  	defer logx.SetWriter(old)
    77  
    78  	file, line := getFileLine()
    79  	Errorv(context.Background(), "foo")
    80  	assert.True(t, strings.Contains(buf.String(), fmt.Sprintf("%s:%d", file, line+1)))
    81  }
    82  
    83  func TestErrorw(t *testing.T) {
    84  	var buf strings.Builder
    85  	writer := logx.NewWriter(&buf)
    86  	old := logx.Reset()
    87  	logx.SetWriter(writer)
    88  	defer logx.SetWriter(old)
    89  
    90  	file, line := getFileLine()
    91  	Errorw(context.Background(), "foo", Field("a", "b"))
    92  	assert.True(t, strings.Contains(buf.String(), fmt.Sprintf("%s:%d", file, line+1)))
    93  }
    94  
    95  func TestInfo(t *testing.T) {
    96  	var buf strings.Builder
    97  	writer := logx.NewWriter(&buf)
    98  	old := logx.Reset()
    99  	logx.SetWriter(writer)
   100  	defer logx.SetWriter(old)
   101  
   102  	file, line := getFileLine()
   103  	Info(context.Background(), "foo")
   104  	assert.True(t, strings.Contains(buf.String(), fmt.Sprintf("%s:%d", file, line+1)))
   105  }
   106  
   107  func TestInfof(t *testing.T) {
   108  	var buf strings.Builder
   109  	writer := logx.NewWriter(&buf)
   110  	old := logx.Reset()
   111  	logx.SetWriter(writer)
   112  	defer logx.SetWriter(old)
   113  
   114  	file, line := getFileLine()
   115  	Infof(context.Background(), "foo %s", "bar")
   116  	assert.True(t, strings.Contains(buf.String(), fmt.Sprintf("%s:%d", file, line+1)))
   117  }
   118  
   119  func TestInfov(t *testing.T) {
   120  	var buf strings.Builder
   121  	writer := logx.NewWriter(&buf)
   122  	old := logx.Reset()
   123  	logx.SetWriter(writer)
   124  	defer logx.SetWriter(old)
   125  
   126  	file, line := getFileLine()
   127  	Infov(context.Background(), "foo")
   128  	assert.True(t, strings.Contains(buf.String(), fmt.Sprintf("%s:%d", file, line+1)))
   129  }
   130  
   131  func TestInfow(t *testing.T) {
   132  	var buf strings.Builder
   133  	writer := logx.NewWriter(&buf)
   134  	old := logx.Reset()
   135  	logx.SetWriter(writer)
   136  	defer logx.SetWriter(old)
   137  
   138  	file, line := getFileLine()
   139  	Infow(context.Background(), "foo", Field("a", "b"))
   140  	assert.True(t, strings.Contains(buf.String(), fmt.Sprintf("%s:%d", file, line+1)))
   141  }
   142  
   143  func TestMust(t *testing.T) {
   144  	assert.NotPanics(t, func() {
   145  		Must(nil)
   146  	})
   147  	assert.NotPanics(t, func() {
   148  		MustSetup(LogConf{})
   149  	})
   150  }
   151  
   152  func TestMisc(t *testing.T) {
   153  	SetLevel(logx.DebugLevel)
   154  	assert.NoError(t, SetUp(LogConf{}))
   155  	assert.NoError(t, Close())
   156  }
   157  
   158  func TestSlow(t *testing.T) {
   159  	var buf strings.Builder
   160  	writer := logx.NewWriter(&buf)
   161  	old := logx.Reset()
   162  	logx.SetWriter(writer)
   163  	defer logx.SetWriter(old)
   164  
   165  	file, line := getFileLine()
   166  	Slow(context.Background(), "foo")
   167  	assert.True(t, strings.Contains(buf.String(), fmt.Sprintf("%s:%d", file, line+1)), buf.String())
   168  }
   169  
   170  func TestSlowf(t *testing.T) {
   171  	var buf strings.Builder
   172  	writer := logx.NewWriter(&buf)
   173  	old := logx.Reset()
   174  	logx.SetWriter(writer)
   175  	defer logx.SetWriter(old)
   176  
   177  	file, line := getFileLine()
   178  	Slowf(context.Background(), "foo %s", "bar")
   179  	assert.True(t, strings.Contains(buf.String(), fmt.Sprintf("%s:%d", file, line+1)), buf.String())
   180  }
   181  
   182  func TestSlowv(t *testing.T) {
   183  	var buf strings.Builder
   184  	writer := logx.NewWriter(&buf)
   185  	old := logx.Reset()
   186  	logx.SetWriter(writer)
   187  	defer logx.SetWriter(old)
   188  
   189  	file, line := getFileLine()
   190  	Slowv(context.Background(), "foo")
   191  	assert.True(t, strings.Contains(buf.String(), fmt.Sprintf("%s:%d", file, line+1)), buf.String())
   192  }
   193  
   194  func TestSloww(t *testing.T) {
   195  	var buf strings.Builder
   196  	writer := logx.NewWriter(&buf)
   197  	old := logx.Reset()
   198  	logx.SetWriter(writer)
   199  	defer logx.SetWriter(old)
   200  
   201  	file, line := getFileLine()
   202  	Sloww(context.Background(), "foo", Field("a", "b"))
   203  	assert.True(t, strings.Contains(buf.String(), fmt.Sprintf("%s:%d", file, line+1)), buf.String())
   204  }
   205  
   206  func getFileLine() (string, int) {
   207  	_, file, line, _ := runtime.Caller(1)
   208  	short := file
   209  
   210  	for i := len(file) - 1; i > 0; i-- {
   211  		if file[i] == '/' {
   212  			short = file[i+1:]
   213  			break
   214  		}
   215  	}
   216  
   217  	return short, line
   218  }