From 08cac50eedf85e4d650f7dcf898dbed5707e20a5 Mon Sep 17 00:00:00 2001 From: Nev Wylie <54870357+MSNev@users.noreply.github.com> Date: Wed, 27 Jan 2021 17:08:46 -0800 Subject: [PATCH] fix(test): ci environment doesn't handle replacing console with a mock --- .../test/diag/consoleLogger.test.ts | 140 ++++++++++-------- 1 file changed, 80 insertions(+), 60 deletions(-) diff --git a/packages/opentelemetry-api/test/diag/consoleLogger.test.ts b/packages/opentelemetry-api/test/diag/consoleLogger.test.ts index d3ba79de55e..ee0a984d756 100644 --- a/packages/opentelemetry-api/test/diag/consoleLogger.test.ts +++ b/packages/opentelemetry-api/test/diag/consoleLogger.test.ts @@ -32,6 +32,16 @@ describe('DiagConsoleLogger', () => { let errorCalledArgs: unknown; let logCalledArgs: unknown; + let canMockConsole = true; + + try { + // eslint-disable-next-line no-global-assign + console = origConsole; + } catch (ex) { + // Not supported on CI pipeline (works locally) + canMockConsole = false; + } + beforeEach(() => { // mock console.debug = (...args: unknown[]) => { @@ -62,8 +72,16 @@ describe('DiagConsoleLogger', () => { errorCalledArgs = null; logCalledArgs = null; traceCalledArgs = null; - // eslint-disable-next-line no-global-assign - console = origConsole; + + if (canMockConsole) { + try { + // eslint-disable-next-line no-global-assign + console = origConsole; + } catch (ex) { + // Not supported on CI pipeline + canMockConsole = false; + } + } console.debug = origDebug; console.info = origInfo; console.warn = origWarn; @@ -265,66 +283,68 @@ describe('DiagConsoleLogger', () => { assert.deepStrictEqual(infoCalledArgs, null); }); - it('should not throw even when console is invalid after construction', () => { - const invalidConsole = { - debug: 1, - warn: 2, - error: 3, - trace: 4, - info: 5, - log: 6, - }; + if (canMockConsole) { + it('should not throw even when console is invalid after construction', () => { + const invalidConsole = { + debug: 1, + warn: 2, + error: 3, + trace: 4, + info: 5, + log: 6, + }; - const consoleLogger = new DiagConsoleLogger(); - (console as any) = invalidConsole; - consoleLogger.terminal('terminal called %s', 'param1'); - assert.deepStrictEqual(errorCalledArgs, null); - consoleLogger.critical('critical called %s', 'param1'); - assert.deepStrictEqual(errorCalledArgs, null); - consoleLogger.error('error called %s', 'param1'); - assert.deepStrictEqual(errorCalledArgs, null); - consoleLogger.warn('warn called %s', 'param1'); - assert.deepStrictEqual(warnCalledArgs, null); - consoleLogger.info('info called %s', 'param1'); - assert.deepStrictEqual(infoCalledArgs, null); - consoleLogger.debug('debug called %s', 'param1'); - assert.deepStrictEqual(debugCalledArgs, null); - consoleLogger.trace('trace called %s', 'param1'); - assert.deepStrictEqual(traceCalledArgs, null); - assert.deepStrictEqual(logCalledArgs, null); - consoleLogger.forcedInfo('forcedInfo called %s', 'param1'); - assert.deepStrictEqual(infoCalledArgs, null); - }); + const consoleLogger = new DiagConsoleLogger(); + (console as any) = invalidConsole; + consoleLogger.terminal('terminal called %s', 'param1'); + assert.deepStrictEqual(errorCalledArgs, null); + consoleLogger.critical('critical called %s', 'param1'); + assert.deepStrictEqual(errorCalledArgs, null); + consoleLogger.error('error called %s', 'param1'); + assert.deepStrictEqual(errorCalledArgs, null); + consoleLogger.warn('warn called %s', 'param1'); + assert.deepStrictEqual(warnCalledArgs, null); + consoleLogger.info('info called %s', 'param1'); + assert.deepStrictEqual(infoCalledArgs, null); + consoleLogger.debug('debug called %s', 'param1'); + assert.deepStrictEqual(debugCalledArgs, null); + consoleLogger.trace('trace called %s', 'param1'); + assert.deepStrictEqual(traceCalledArgs, null); + assert.deepStrictEqual(logCalledArgs, null); + consoleLogger.forcedInfo('forcedInfo called %s', 'param1'); + assert.deepStrictEqual(infoCalledArgs, null); + }); - it('should not throw even when console is invalid before construction', () => { - const invalidConsole = { - debug: 1, - warn: 2, - error: 3, - trace: 4, - info: 5, - log: 6, - }; + it('should not throw even when console is invalid before construction', () => { + const invalidConsole = { + debug: 1, + warn: 2, + error: 3, + trace: 4, + info: 5, + log: 6, + }; - (console as any) = invalidConsole; - const consoleLogger = new DiagConsoleLogger(); - consoleLogger.terminal('terminal called %s', 'param1'); - assert.deepStrictEqual(errorCalledArgs, null); - consoleLogger.critical('critical called %s', 'param1'); - assert.deepStrictEqual(errorCalledArgs, null); - consoleLogger.error('error called %s', 'param1'); - assert.deepStrictEqual(errorCalledArgs, null); - consoleLogger.warn('warn called %s', 'param1'); - assert.deepStrictEqual(warnCalledArgs, null); - consoleLogger.info('info called %s', 'param1'); - assert.deepStrictEqual(infoCalledArgs, null); - consoleLogger.debug('debug called %s', 'param1'); - assert.deepStrictEqual(debugCalledArgs, null); - consoleLogger.trace('trace called %s', 'param1'); - assert.deepStrictEqual(traceCalledArgs, null); - assert.deepStrictEqual(logCalledArgs, null); - consoleLogger.forcedInfo('forcedInfo called %s', 'param1'); - assert.deepStrictEqual(infoCalledArgs, null); - }); + (console as any) = invalidConsole; + const consoleLogger = new DiagConsoleLogger(); + consoleLogger.terminal('terminal called %s', 'param1'); + assert.deepStrictEqual(errorCalledArgs, null); + consoleLogger.critical('critical called %s', 'param1'); + assert.deepStrictEqual(errorCalledArgs, null); + consoleLogger.error('error called %s', 'param1'); + assert.deepStrictEqual(errorCalledArgs, null); + consoleLogger.warn('warn called %s', 'param1'); + assert.deepStrictEqual(warnCalledArgs, null); + consoleLogger.info('info called %s', 'param1'); + assert.deepStrictEqual(infoCalledArgs, null); + consoleLogger.debug('debug called %s', 'param1'); + assert.deepStrictEqual(debugCalledArgs, null); + consoleLogger.trace('trace called %s', 'param1'); + assert.deepStrictEqual(traceCalledArgs, null); + assert.deepStrictEqual(logCalledArgs, null); + consoleLogger.forcedInfo('forcedInfo called %s', 'param1'); + assert.deepStrictEqual(infoCalledArgs, null); + }); + } }); });