const { test } = require('tap'); test('Stacktraces from errors in different VM context', (t) => { const log4js = require('../../lib/log4js'); const recorder = require('../../lib/appenders/recording'); const layout = require('../../lib/layouts').basicLayout; const vm = require('vm'); log4js.configure({ appenders: { vcr: { type: 'recording' } }, categories: { default: { appenders: ['vcr'], level: 'debug' } }, }); const logger = log4js.getLogger(); try { // Access not defined variable. vm.runInNewContext('myVar();', {}, 'myfile.js'); } catch (e) { // Expect to have a stack trace printed. logger.error(e); } const events = recorder.replay(); // recording appender events do not go through layouts, so let's do it const output = layout(events[0]); t.match(output, 'stacktraces-test.js'); t.end(); });