util_test.go 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. package logx
  2. import (
  3. "path/filepath"
  4. "runtime"
  5. "testing"
  6. "time"
  7. "github.com/stretchr/testify/assert"
  8. )
  9. func TestGetCaller(t *testing.T) {
  10. _, file, _, _ := runtime.Caller(0)
  11. assert.Contains(t, getCaller(1), filepath.Base(file))
  12. assert.True(t, len(getCaller(1<<10)) == 0)
  13. }
  14. func TestGetTimestamp(t *testing.T) {
  15. ts := getTimestamp()
  16. tm, err := time.Parse(timeFormat, ts)
  17. assert.Nil(t, err)
  18. assert.True(t, time.Since(tm) < time.Minute)
  19. }
  20. func TestPrettyCaller(t *testing.T) {
  21. tests := []struct {
  22. name string
  23. file string
  24. line int
  25. want string
  26. }{
  27. {
  28. name: "regular",
  29. file: "logx_test.go",
  30. line: 123,
  31. want: "logx_test.go:123",
  32. },
  33. {
  34. name: "relative",
  35. file: "adhoc/logx_test.go",
  36. line: 123,
  37. want: "adhoc/logx_test.go:123",
  38. },
  39. {
  40. name: "long path",
  41. file: "github.com/wuntsong-org/go-zero-plus/core/logx/util_test.go",
  42. line: 12,
  43. want: "logx/util_test.go:12",
  44. },
  45. {
  46. name: "local path",
  47. file: "/Users/kevin/go-zero/core/logx/util_test.go",
  48. line: 1234,
  49. want: "logx/util_test.go:1234",
  50. },
  51. }
  52. for _, test := range tests {
  53. test := test
  54. t.Run(test.name, func(t *testing.T) {
  55. assert.Equal(t, test.want, prettyCaller(test.file, test.line))
  56. })
  57. }
  58. }
  59. func BenchmarkGetCaller(b *testing.B) {
  60. b.ReportAllocs()
  61. for i := 0; i < b.N; i++ {
  62. getCaller(1)
  63. }
  64. }