@@ -93,15 +93,19 @@ describe('winston/transports/daily-rotate-file', function () {
93
93
} ) ;
94
94
95
95
it ( 'should write to the file' , function ( done ) {
96
- this . transport . on ( 'finish' , function ( ) {
96
+ const finishListener = ( ) => {
97
97
var logEntries = fs . readFileSync ( filename ) . toString ( ) . split ( '\n' ) . slice ( 0 , - 1 ) ;
98
98
expect ( logEntries . length ) . to . equal ( 1 ) ;
99
99
100
100
var logEntry = JSON . parse ( logEntries [ 0 ] ) ;
101
101
expect ( logEntry . level ) . to . equal ( 'info' ) ;
102
102
expect ( logEntry . message ) . to . equal ( 'this message should write to the file' ) ;
103
103
done ( ) ;
104
- } ) ;
104
+
105
+ this . transport . removeListener ( 'finish' , finishListener )
106
+ }
107
+
108
+ this . transport . on ( 'finish' , finishListener ) ;
105
109
106
110
sendLogItem ( this . transport , 'info' , 'this message should write to the file' , { } , function ( err , logged ) {
107
111
expect ( err ) . to . be . null ;
@@ -155,20 +159,44 @@ describe('winston/transports/daily-rotate-file', function () {
155
159
156
160
this . transport = new DailyRotateFile ( opts ) ;
157
161
158
- this . transport . on ( 'finish' , function ( ) {
162
+ const finishListener = ( ) => {
159
163
fs . readdir ( logDir , function ( err , files ) {
160
164
expect ( files . filter ( function ( file ) {
161
165
return path . extname ( file ) === '.gz' ;
162
166
} ) . length ) . to . equal ( 1 ) ;
163
167
done ( ) ;
164
168
} ) ;
165
- } ) ;
169
+
170
+ this . transport . removeListener ( 'finish' , finishListener )
171
+ }
172
+
173
+ this . transport . on ( 'finish' , finishListener ) ;
166
174
sendLogItem ( this . transport , 'info' , randomString ( 1056 ) ) ;
167
175
sendLogItem ( this . transport , 'info' , randomString ( 1056 ) ) ;
168
176
this . transport . close ( ) ;
169
177
} ) ;
170
178
} ) ;
171
179
180
+ describe ( 'when setting watchLog' , function ( ) {
181
+ it ( 'should addWatcher to recreate log if deleted' , function ( done ) {
182
+ var opts = Object . assign ( { } , options ) ;
183
+ opts . watchLog = true ;
184
+ this . transport = new DailyRotateFile ( opts ) ;
185
+
186
+ this . transport . on ( 'addWatcher' , ( newFile ) => {
187
+ expect ( newFile ) . to . equal ( filename ) ;
188
+ done ( )
189
+ } ) ;
190
+
191
+ this . transport . on ( 'new' , ( newFile ) => {
192
+ expect ( newFile ) . to . equal ( filename ) ;
193
+ } ) ;
194
+
195
+ sendLogItem ( this . transport , 'info' , 'First message to file' ) ;
196
+ this . transport . close ( ) ;
197
+ } ) ;
198
+ } ) ;
199
+
172
200
describe ( 'query' , function ( ) {
173
201
it ( 'should call callback when no files are present' , function ( ) {
174
202
this . transport . query ( function ( err , results ) {
@@ -200,13 +228,16 @@ describe('winston/transports/daily-rotate-file', function () {
200
228
sendLogItem ( this . transport , 'info' , randomString ( 1056 ) ) ;
201
229
202
230
var self = this ;
203
- this . transport . on ( 'finish' , function ( ) {
231
+ const finishListener = ( ) => {
204
232
self . transport . query ( function ( err , results ) {
205
233
expect ( results ) . to . not . be . null ;
206
234
expect ( results . length ) . to . equal ( 4 ) ;
207
235
done ( ) ;
208
236
} ) ;
209
- } ) ;
237
+ this . transport . removeListener ( 'finish' , finishListener )
238
+ }
239
+
240
+ this . transport . on ( 'finish' , finishListener ) ;
210
241
211
242
this . transport . close ( ) ;
212
243
} ) ;
0 commit comments