log_test.go 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. package log
  2. import (
  3. "bytes"
  4. "testing"
  5. "github.com/stretchr/testify/assert"
  6. "os"
  7. "os/exec"
  8. )
  9. func TestLog(t *testing.T) {
  10. l := New("test")
  11. b := new(bytes.Buffer)
  12. l.SetOutput(b)
  13. test(l, DEBUG, t)
  14. assert.Contains(t, b.String(), "debug")
  15. assert.Contains(t, b.String(), "debugf")
  16. assert.Contains(t, b.String(), "warn")
  17. assert.Contains(t, b.String(), "warnf")
  18. // assert.Contains(t, b.String(), "fatal")
  19. b.Reset()
  20. SetOutput(b)
  21. test(global, WARN, t)
  22. assert.NotContains(t, b.String(), "info")
  23. assert.Contains(t, b.String(), "warn")
  24. // assert.Contains(t, b.String(), "fatal")
  25. }
  26. func TestFatal(t *testing.T) {
  27. l := New("test")
  28. switch os.Getenv("TEST_LOGGER_FATAL") {
  29. case "fatal":
  30. l.Fatal("fatal")
  31. return
  32. case "fatalf":
  33. l.Fatalf("fatal-%s", "f")
  34. return
  35. }
  36. loggerFatalTest(t, "fatal", "fatal")
  37. loggerFatalTest(t, "fatalf", "fatal-f")
  38. }
  39. func loggerFatalTest(t *testing.T, env string, contains string) {
  40. buf := new(bytes.Buffer)
  41. cmd := exec.Command(os.Args[0], "-test.run=TestFatal")
  42. cmd.Env = append(os.Environ(), "TEST_LOGGER_FATAL="+env)
  43. cmd.Stdout = buf
  44. cmd.Stderr = buf
  45. err := cmd.Run()
  46. if e, ok := err.(*exec.ExitError); ok && !e.Success() {
  47. assert.Contains(t, buf.String(), contains)
  48. return
  49. }
  50. t.Fatalf("process ran with err %v, want exit status 1", err)
  51. }
  52. func test(l *Logger, v Level, t *testing.T) {
  53. l.SetLevel(v)
  54. l.Print("print")
  55. l.Printf("print%s", "f")
  56. l.Debug("debug")
  57. l.Debugf("debug%s", "f")
  58. l.Info("info")
  59. l.Infof("info%s", "f")
  60. l.Warn("warn")
  61. l.Warnf("warn%s", "f")
  62. l.Error("error")
  63. l.Errorf("error%s", "f")
  64. // l.Fatal("fatal")
  65. }