@@ -16,6 +16,8 @@ import { ToolkitError } from '../../../shared/errors'
16
16
* Disposes the logger then waits for the write streams to flush. The `expected` and `unexpected` arrays just look
17
17
* for any occurence within the file, passing if all expected strings were found or failing if any unexpected strings
18
18
* were found.
19
+ *
20
+ * TODO: merge this with `globalSetup.test.ts:assertLogsContain`
19
21
*/
20
22
async function checkFile (
21
23
logger : ToolkitLogger ,
@@ -34,18 +36,22 @@ async function checkFile(
34
36
const contents = fs . readFileSync ( logPath . fsPath )
35
37
36
38
// Error if unexpected messages are in the log file
37
- const explicitUnexpectedMessages = unexpected
39
+ const foundUnexpected = unexpected
38
40
. filter ( ( t ) => contents . includes ( t ) )
39
41
. reduce ( ( a , b ) => a + `Unexpected message in log: ${ b } \n` , '' )
40
- if ( explicitUnexpectedMessages ) {
41
- return reject ( new Error ( explicitUnexpectedMessages ) )
42
+ if ( foundUnexpected ) {
43
+ return reject ( new Error ( foundUnexpected ) )
42
44
}
43
45
44
- // Error if any of the expected messages are not in the log file
45
- const expectedMessagesNotInLogFile = expected . filter ( ( t ) => ! contents . includes ( t ) )
46
- if ( expectedMessagesNotInLogFile . length > 0 ) {
46
+ // Fail if any of the expected messages are not in the log file
47
+ const notFound = expected . filter ( ( t ) => ! contents . includes ( t ) )
48
+ if ( notFound . length > 0 ) {
49
+ const last10Lines = contents . toString ( ) . split ( '\n' ) . slice ( - 10 )
47
50
reject (
48
- new Error ( expectedMessagesNotInLogFile . reduce ( ( a , b ) => a + `Unexpected message in log: ${ b } \n` , '' ) )
51
+ new Error (
52
+ notFound . reduce ( ( a , b ) => a + `Expected message not found in log: ${ b } \n` , '' ) +
53
+ `\n\n Last 10 log lines:\n${ last10Lines . join ( '\n' ) } `
54
+ )
49
55
)
50
56
}
51
57
@@ -106,32 +112,32 @@ describe('ToolkitLogger', function () {
106
112
const happyLogScenarios = [
107
113
{
108
114
name : 'logs debug' ,
109
- logMessage : ( logger : ToolkitLogger , message : string ) => {
110
- logger . debug ( message )
115
+ logMessage : ( logger : ToolkitLogger , msg : string , args : any [ ] ) => {
116
+ logger . debug ( msg , ... args )
111
117
} ,
112
118
} ,
113
119
{
114
120
name : 'logs verbose' ,
115
- logMessage : ( logger : ToolkitLogger , message : string ) => {
116
- logger . verbose ( message )
121
+ logMessage : ( logger : ToolkitLogger , msg : string , args : any [ ] ) => {
122
+ logger . verbose ( msg , ... args )
117
123
} ,
118
124
} ,
119
125
{
120
126
name : 'logs info' ,
121
- logMessage : ( logger : ToolkitLogger , message : string ) => {
122
- logger . info ( message )
127
+ logMessage : ( logger : ToolkitLogger , msg : string , args : any [ ] ) => {
128
+ logger . info ( msg , ... args )
123
129
} ,
124
130
} ,
125
131
{
126
132
name : 'logs warn' ,
127
- logMessage : ( logger : ToolkitLogger , message : string ) => {
128
- logger . warn ( message )
133
+ logMessage : ( logger : ToolkitLogger , msg : string , args : any [ ] ) => {
134
+ logger . warn ( msg , ... args )
129
135
} ,
130
136
} ,
131
137
{
132
138
name : 'logs error' ,
133
- logMessage : ( logger : ToolkitLogger , message : string ) => {
134
- logger . error ( message )
139
+ logMessage : ( logger : ToolkitLogger , msg : string , args : any [ ] ) => {
140
+ logger . error ( msg , ... args )
135
141
} ,
136
142
} ,
137
143
]
@@ -174,13 +180,15 @@ describe('ToolkitLogger', function () {
174
180
175
181
happyLogScenarios . forEach ( ( scenario ) => {
176
182
it ( scenario . name , async ( ) => {
177
- const message = `message for ${ scenario . name } `
183
+ const msg = `message for ${ scenario . name } arg1 %s, arg2 %O`
184
+ const args = [ 42 , [ 'a' , 'b' ] ]
185
+ const expectedMsg = `message for ${ scenario . name } arg1 42, arg2 [ 'a', 'b' ]`
178
186
testLogger = new ToolkitLogger ( 'debug' )
179
187
testLogger . logToFile ( tempLogPath )
180
188
181
- scenario . logMessage ( testLogger , message )
189
+ scenario . logMessage ( testLogger , msg , args )
182
190
183
- await checkFile ( testLogger , tempLogPath , [ message ] )
191
+ await checkFile ( testLogger , tempLogPath , [ expectedMsg ] )
184
192
} )
185
193
} )
186
194
} )
@@ -297,7 +305,7 @@ describe('ToolkitLogger', function () {
297
305
298
306
const waitForMessage = waitForLoggedTextByCount ( 1 )
299
307
300
- scenario . logMessage ( testLogger , message )
308
+ scenario . logMessage ( testLogger , message , [ ] )
301
309
302
310
assert . ok ( ( await waitForMessage ) . includes ( message ) , 'Expected error message to be logged' )
303
311
} )
0 commit comments