la_test.go 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. package lumberjack_afero
  2. import (
  3. "fmt"
  4. "github.com/spf13/afero"
  5. "io"
  6. "os"
  7. "testing"
  8. "time"
  9. )
  10. var FS afero.Fs
  11. var FakeDay int
  12. func TestMain(m *testing.M) {
  13. tdir, err := os.MkdirTemp("", "lumberjack_afero_test")
  14. fmt.Println("Test Dir: ", tdir)
  15. if err != nil {
  16. panic(err)
  17. }
  18. osfs := afero.NewOsFs()
  19. FS = afero.NewBasePathFs(osfs, tdir)
  20. FakeDay = 0
  21. currentTime = testCurrentTime
  22. m.Run()
  23. fmt.Println("Test Dir: ", tdir)
  24. fmt.Println("Please check the results manually and cleanup the test directory.")
  25. }
  26. func testCurrentTime() time.Time {
  27. now := time.Now()
  28. fakeTime := now.AddDate(0, 0, FakeDay)
  29. return fakeTime
  30. }
  31. func printLine(t *testing.T, f io.Writer, l ...interface{}) {
  32. _, err := fmt.Fprintln(f, l...)
  33. if err != nil {
  34. t.Fatalf("failed to print line: %v", err)
  35. }
  36. }
  37. func TestCommonCase(t *testing.T) {
  38. l := &Logger{
  39. Filesystem: FS,
  40. Filename: "common-case-test.log",
  41. MaxSize: 1,
  42. MaxBackups: 5,
  43. LocalTime: false,
  44. Compress: true,
  45. }
  46. printLine(t, l, "common-case-test at start")
  47. printLine(t, l, "common-case-test 2")
  48. FakeDay = 3
  49. printLine(t, l, "common-case-test next 3 day")
  50. FakeDay = 4
  51. printLine(t, l, "common-case-test next 4 day")
  52. printLine(t, l, "will test a super long text")
  53. for i := 0; i <= 114514; i++ {
  54. printLine(t, l, "1145141919810")
  55. }
  56. printLine(t, l, "after the super long text")
  57. printLine(t, l, "then close the logger")
  58. _ = l.Close()
  59. l = &Logger{
  60. Filesystem: FS,
  61. Filename: "common-case-test.log",
  62. MaxSize: 1,
  63. MaxBackups: 5,
  64. LocalTime: false,
  65. Compress: true,
  66. }
  67. printLine(t, l, "recreate the logger")
  68. printLine(t, l, "then close the logger")
  69. _ = l.Close()
  70. }