@@ -428,3 +428,104 @@ func TestGHIssue23(t *testing.T) {
428428 }
429429 }
430430}
431+
432+ func TestForceNewFile (t * testing.T ) {
433+ dir , err := ioutil .TempDir ("" , "file-rotatelogs-force-new-file" )
434+ if ! assert .NoError (t , err , `creating temporary directory should succeed` ) {
435+ return
436+ }
437+ defer os .RemoveAll (dir )
438+
439+ t .Run ("Force a new file" , func (t * testing.T ) {
440+
441+ rl , err := rotatelogs .New (
442+ filepath .Join (dir , "force-new-file.log" ),
443+ rotatelogs .ForceNewFile (),
444+ )
445+ if ! assert .NoError (t , err , "rotatelogs.New should succeed" ) {
446+ return
447+ }
448+ rl .Write ([]byte ("Hello, World!" ))
449+ rl .Close ()
450+
451+ for i := 0 ; i < 10 ; i ++ {
452+ baseFn := filepath .Join (dir , "force-new-file.log" )
453+ rl , err := rotatelogs .New (
454+ baseFn ,
455+ rotatelogs .ForceNewFile (),
456+ )
457+ if ! assert .NoError (t , err , "rotatelogs.New should succeed" ) {
458+ return
459+ }
460+ rl .Write ([]byte ("Hello, World" ))
461+ rl .Write ([]byte (fmt .Sprintf ("%d" , i )))
462+ rl .Close ()
463+
464+ fn := filepath .Base (rl .CurrentFileName ())
465+ suffix := strings .TrimPrefix (fn , "force-new-file.log" )
466+ expectedSuffix := fmt .Sprintf (".%d" , i + 1 )
467+ if ! assert .True (t , suffix == expectedSuffix , "expected suffix %s found %s" , expectedSuffix , suffix ) {
468+ return
469+ }
470+ assert .FileExists (t , rl .CurrentFileName (), "file does not exist %s" , rl .CurrentFileName ())
471+ content , err := ioutil .ReadFile (rl .CurrentFileName ())
472+ if ! assert .NoError (t , err , "ioutil.ReadFile %s should succeed" , rl .CurrentFileName ()) {
473+ return
474+ }
475+ str := fmt .Sprintf ("Hello, World%d" , i )
476+ if ! assert .Equal (t , str , string (content ), "read %s from file %s, not expected %s" , string (content ), rl .CurrentFileName (), str ) {
477+ return
478+ }
479+
480+ assert .FileExists (t , baseFn , "file does not exist %s" , baseFn )
481+ content , err = ioutil .ReadFile (baseFn )
482+ if ! assert .NoError (t , err , "ioutil.ReadFile should succeed" ) {
483+ return
484+ }
485+ if ! assert .Equal (t , "Hello, World!" , string (content ), "read %s from file %s, not expected Hello, World!" , string (content ), baseFn ) {
486+ return
487+ }
488+ }
489+
490+ })
491+
492+ t .Run ("Force a new file with Rotate" , func (t * testing.T ) {
493+
494+ baseFn := filepath .Join (dir , "force-new-file-rotate.log" )
495+ rl , err := rotatelogs .New (
496+ baseFn ,
497+ rotatelogs .ForceNewFile (),
498+ )
499+ if ! assert .NoError (t , err , "rotatelogs.New should succeed" ) {
500+ return
501+ }
502+ rl .Write ([]byte ("Hello, World!" ))
503+
504+ for i := 0 ; i < 10 ; i ++ {
505+ if ! assert .NoError (t , rl .Rotate (), "rl.Rotate should succeed" ) {
506+ return
507+ }
508+ rl .Write ([]byte ("Hello, World" ))
509+ rl .Write ([]byte (fmt .Sprintf ("%d" , i )))
510+ assert .FileExists (t , rl .CurrentFileName (), "file does not exist %s" , rl .CurrentFileName ())
511+ content , err := ioutil .ReadFile (rl .CurrentFileName ())
512+ if ! assert .NoError (t , err , "ioutil.ReadFile %s should succeed" , rl .CurrentFileName ()) {
513+ return
514+ }
515+ str := fmt .Sprintf ("Hello, World%d" , i )
516+ if ! assert .Equal (t , str , string (content ), "read %s from file %s, not expected %s" , string (content ), rl .CurrentFileName (), str ) {
517+ return
518+ }
519+
520+ assert .FileExists (t , baseFn , "file does not exist %s" , baseFn )
521+ content , err = ioutil .ReadFile (baseFn )
522+ if ! assert .NoError (t , err , "ioutil.ReadFile should succeed" ) {
523+ return
524+ }
525+ if ! assert .Equal (t , "Hello, World!" , string (content ), "read %s from file %s, not expected Hello, World!" , string (content ), baseFn ) {
526+ return
527+ }
528+ }
529+ })
530+ }
531+
0 commit comments