@@ -16,6 +16,8 @@ import { ToolkitError } from '../../../shared/errors'
1616 * Disposes the logger then waits for the write streams to flush. The `expected` and `unexpected` arrays just look
1717 * for any occurence within the file, passing if all expected strings were found or failing if any unexpected strings
1818 * were found.
19+ *
20+ * TODO: merge this with `globalSetup.test.ts:assertLogsContain`
1921 */
2022async function checkFile (
2123 logger : ToolkitLogger ,
@@ -34,18 +36,22 @@ async function checkFile(
3436 const contents = fs . readFileSync ( logPath . fsPath )
3537
3638 // Error if unexpected messages are in the log file
37- const explicitUnexpectedMessages = unexpected
39+ const foundUnexpected = unexpected
3840 . filter ( ( t ) => contents . includes ( t ) )
3941 . 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 ) )
4244 }
4345
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 )
4750 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+ )
4955 )
5056 }
5157
@@ -106,32 +112,32 @@ describe('ToolkitLogger', function () {
106112 const happyLogScenarios = [
107113 {
108114 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 )
111117 } ,
112118 } ,
113119 {
114120 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 )
117123 } ,
118124 } ,
119125 {
120126 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 )
123129 } ,
124130 } ,
125131 {
126132 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 )
129135 } ,
130136 } ,
131137 {
132138 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 )
135141 } ,
136142 } ,
137143 ]
@@ -174,13 +180,15 @@ describe('ToolkitLogger', function () {
174180
175181 happyLogScenarios . forEach ( ( scenario ) => {
176182 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' ]`
178186 testLogger = new ToolkitLogger ( 'debug' )
179187 testLogger . logToFile ( tempLogPath )
180188
181- scenario . logMessage ( testLogger , message )
189+ scenario . logMessage ( testLogger , msg , args )
182190
183- await checkFile ( testLogger , tempLogPath , [ message ] )
191+ await checkFile ( testLogger , tempLogPath , [ expectedMsg ] )
184192 } )
185193 } )
186194 } )
@@ -297,7 +305,7 @@ describe('ToolkitLogger', function () {
297305
298306 const waitForMessage = waitForLoggedTextByCount ( 1 )
299307
300- scenario . logMessage ( testLogger , message )
308+ scenario . logMessage ( testLogger , message , [ ] )
301309
302310 assert . ok ( ( await waitForMessage ) . includes ( message ) , 'Expected error message to be logged' )
303311 } )
0 commit comments