37 lines
920 B
JavaScript
37 lines
920 B
JavaScript
'use strict';
|
|
|
|
const util = require('util');
|
|
|
|
const STDOUT_PREFIX = 'TSAMURAI_STDOUT ';
|
|
|
|
function getCurrentTestName() {
|
|
if (typeof expect !== 'function') return null;
|
|
try {
|
|
const state = expect.getState();
|
|
if (state && state.currentTestName) {
|
|
return String(state.currentTestName);
|
|
}
|
|
} catch (_err) {
|
|
return null;
|
|
}
|
|
return null;
|
|
}
|
|
|
|
function emitStdout(name, args) {
|
|
if (!name) return;
|
|
const message = util.format(...args);
|
|
if (message === '') return;
|
|
process.stdout.write(`${STDOUT_PREFIX}${JSON.stringify({ jestName: name, output: message })}\n`);
|
|
}
|
|
|
|
function wrapConsoleMethod(method) {
|
|
if (typeof console[method] !== 'function') return;
|
|
const original = console[method].bind(console);
|
|
console[method] = (...args) => {
|
|
emitStdout(getCurrentTestName(), args);
|
|
return original(...args);
|
|
};
|
|
}
|
|
|
|
['log', 'info', 'warn', 'error', 'debug'].forEach(wrapConsoleMethod);
|