diff --git a/detox/src/utils/customConsoleLogger.js b/detox/src/utils/customConsoleLogger.js index a7be782bbf..94f8629397 100644 --- a/detox/src/utils/customConsoleLogger.js +++ b/detox/src/utils/customConsoleLogger.js @@ -11,8 +11,11 @@ function getStackDump() { function getOrigin() { const userCallsite = callsites()[USER_STACK_FRAME_INDEX]; - const filename = path.relative(process.cwd(), userCallsite.getFileName()); - return `at ${filename}:${userCallsite.getLineNumber() || '?'}:${userCallsite.getColumnNumber() || '?'}`; + const callsiteFilename = userCallsite && userCallsite.getFileName(); + const callsiteLine = userCallsite && userCallsite.getLineNumber(); + const callsiteCol = userCallsite && userCallsite.getColumnNumber(); + const filename = callsiteFilename ? path.relative(process.cwd(), callsiteFilename) : ''; + return `at ${filename}:${callsiteLine || '?'}:${callsiteCol || '?'}`; } function override(consoleLevel, bunyanFn) { diff --git a/detox/src/utils/customConsoleLogger.test.js b/detox/src/utils/customConsoleLogger.test.js index 890ab6a445..0da3a8862b 100644 --- a/detox/src/utils/customConsoleLogger.test.js +++ b/detox/src/utils/customConsoleLogger.test.js @@ -62,6 +62,16 @@ describe('customConsoleLogger', () => { expect(bunyanLogger.mock).toHaveBeenCalledWith(ignored(), expect.stringContaining(expectedOrigin), ignored(), ignored()); }); + it('should handle unknown file in origin', () => { + mockCallsites({file: undefined, line: undefined, col: undefined}); + + const logger = require('./customConsoleLogger'); + logger.override('__log', bunyanLogger.mock); + console.__log(''); + + expect(bunyanLogger.mock).toHaveBeenCalledWith(ignored(), expect.stringContaining(':?:?'), ignored(), ignored()); + }); + it('should handle missing file line/column in origin', () => { mockCallsites({file: 'mockfilename', line: undefined, col: undefined});