package lumberjack_afero import ( "fmt" "github.com/spf13/afero" "io" "os" "testing" "time" ) var FS afero.Fs var FakeDay int func TestMain(m *testing.M) { tdir, err := os.MkdirTemp("", "lumberjack_afero_test") fmt.Println("Test Dir: ", tdir) if err != nil { panic(err) } osfs := afero.NewOsFs() FS = afero.NewBasePathFs(osfs, tdir) FakeDay = 0 currentTime = testCurrentTime m.Run() fmt.Println("Test Dir: ", tdir) fmt.Println("Please check the results manually and cleanup the test directory.") } func testCurrentTime() time.Time { now := time.Now() fakeTime := now.AddDate(0, 0, FakeDay) return fakeTime } func printLine(t *testing.T, f io.Writer, l ...interface{}) { _, err := fmt.Fprintln(f, l...) if err != nil { t.Fatalf("failed to print line: %v", err) } } func TestCommonCase(t *testing.T) { l := &Logger{ Filesystem: FS, Filename: "common-case-test.log", MaxSize: 1, MaxBackups: 5, LocalTime: false, Compress: true, } printLine(t, l, "common-case-test at start") printLine(t, l, "common-case-test 2") FakeDay = 3 printLine(t, l, "common-case-test next 3 day") FakeDay = 4 printLine(t, l, "common-case-test next 4 day") printLine(t, l, "will test a super long text") for i := 0; i <= 114514; i++ { printLine(t, l, "1145141919810") } printLine(t, l, "after the super long text") printLine(t, l, "then close the logger") _ = l.Close() l = &Logger{ Filesystem: FS, Filename: "common-case-test.log", MaxSize: 1, MaxBackups: 5, LocalTime: false, Compress: true, } printLine(t, l, "recreate the logger") printLine(t, l, "then close the logger") _ = l.Close() }