Spaces:
Sleeping
Sleeping
; | |
Object.defineProperty(exports, '__esModule', { | |
value: true | |
}); | |
exports.default = void 0; | |
function _chalk() { | |
const data = _interopRequireDefault(require('chalk')); | |
_chalk = function () { | |
return data; | |
}; | |
return data; | |
} | |
function _console() { | |
const data = require('@jest/console'); | |
_console = function () { | |
return data; | |
}; | |
return data; | |
} | |
function _jestUtil() { | |
const data = require('jest-util'); | |
_jestUtil = function () { | |
return data; | |
}; | |
return data; | |
} | |
var _BaseReporter = _interopRequireDefault(require('./BaseReporter')); | |
var _Status = _interopRequireDefault(require('./Status')); | |
var _getResultHeader = _interopRequireDefault(require('./getResultHeader')); | |
var _getSnapshotStatus = _interopRequireDefault(require('./getSnapshotStatus')); | |
function _interopRequireDefault(obj) { | |
return obj && obj.__esModule ? obj : {default: obj}; | |
} | |
function _defineProperty(obj, key, value) { | |
if (key in obj) { | |
Object.defineProperty(obj, key, { | |
value: value, | |
enumerable: true, | |
configurable: true, | |
writable: true | |
}); | |
} else { | |
obj[key] = value; | |
} | |
return obj; | |
} | |
const TITLE_BULLET = _chalk().default.bold('\u25cf '); | |
class DefaultReporter extends _BaseReporter.default { | |
// ANSI clear sequence for the last printed status | |
constructor(globalConfig) { | |
super(); | |
_defineProperty(this, '_clear', void 0); | |
_defineProperty(this, '_err', void 0); | |
_defineProperty(this, '_globalConfig', void 0); | |
_defineProperty(this, '_out', void 0); | |
_defineProperty(this, '_status', void 0); | |
_defineProperty(this, '_bufferedOutput', void 0); | |
this._globalConfig = globalConfig; | |
this._clear = ''; | |
this._out = process.stdout.write.bind(process.stdout); | |
this._err = process.stderr.write.bind(process.stderr); | |
this._status = new _Status.default(); | |
this._bufferedOutput = new Set(); | |
this.__wrapStdio(process.stdout); | |
this.__wrapStdio(process.stderr); | |
this._status.onChange(() => { | |
this.__clearStatus(); | |
this.__printStatus(); | |
}); | |
} | |
__wrapStdio(stream) { | |
const write = stream.write.bind(stream); | |
let buffer = []; | |
let timeout = null; | |
const flushBufferedOutput = () => { | |
const string = buffer.join(''); | |
buffer = []; // This is to avoid conflicts between random output and status text | |
this.__clearStatus(); | |
if (string) { | |
write(string); | |
} | |
this.__printStatus(); | |
this._bufferedOutput.delete(flushBufferedOutput); | |
}; | |
this._bufferedOutput.add(flushBufferedOutput); | |
const debouncedFlush = () => { | |
// If the process blows up no errors would be printed. | |
// There should be a smart way to buffer stderr, but for now | |
// we just won't buffer it. | |
if (stream === process.stderr) { | |
flushBufferedOutput(); | |
} else { | |
if (!timeout) { | |
timeout = setTimeout(() => { | |
flushBufferedOutput(); | |
timeout = null; | |
}, 100); | |
} | |
} | |
}; | |
stream.write = chunk => { | |
buffer.push(chunk); | |
debouncedFlush(); | |
return true; | |
}; | |
} // Don't wait for the debounced call and flush all output immediately. | |
forceFlushBufferedOutput() { | |
for (const flushBufferedOutput of this._bufferedOutput) { | |
flushBufferedOutput(); | |
} | |
} | |
__clearStatus() { | |
if (_jestUtil().isInteractive) { | |
if (this._globalConfig.useStderr) { | |
this._err(this._clear); | |
} else { | |
this._out(this._clear); | |
} | |
} | |
} | |
__printStatus() { | |
const {content, clear} = this._status.get(); | |
this._clear = clear; | |
if (_jestUtil().isInteractive) { | |
if (this._globalConfig.useStderr) { | |
this._err(content); | |
} else { | |
this._out(content); | |
} | |
} | |
} | |
onRunStart(aggregatedResults, options) { | |
this._status.runStarted(aggregatedResults, options); | |
} | |
onTestStart(test) { | |
this._status.testStarted(test.path, test.context.config); | |
} | |
onTestCaseResult(test, testCaseResult) { | |
this._status.addTestCaseResult(test, testCaseResult); | |
} | |
onRunComplete() { | |
this.forceFlushBufferedOutput(); | |
this._status.runFinished(); | |
process.stdout.write = this._out; | |
process.stderr.write = this._err; | |
(0, _jestUtil().clearLine)(process.stderr); | |
} | |
onTestResult(test, testResult, aggregatedResults) { | |
this.testFinished(test.context.config, testResult, aggregatedResults); | |
if (!testResult.skipped) { | |
this.printTestFileHeader( | |
testResult.testFilePath, | |
test.context.config, | |
testResult | |
); | |
this.printTestFileFailureMessage( | |
testResult.testFilePath, | |
test.context.config, | |
testResult | |
); | |
} | |
this.forceFlushBufferedOutput(); | |
} | |
testFinished(config, testResult, aggregatedResults) { | |
this._status.testFinished(config, testResult, aggregatedResults); | |
} | |
printTestFileHeader(_testPath, config, result) { | |
this.log((0, _getResultHeader.default)(result, this._globalConfig, config)); | |
if (result.console) { | |
this.log( | |
' ' + | |
TITLE_BULLET + | |
'Console\n\n' + | |
(0, _console().getConsoleOutput)( | |
result.console, | |
config, | |
this._globalConfig | |
) | |
); | |
} | |
} | |
printTestFileFailureMessage(_testPath, _config, result) { | |
if (result.failureMessage) { | |
this.log(result.failureMessage); | |
} | |
const didUpdate = this._globalConfig.updateSnapshot === 'all'; | |
const snapshotStatuses = (0, _getSnapshotStatus.default)( | |
result.snapshot, | |
didUpdate | |
); | |
snapshotStatuses.forEach(this.log); | |
} | |
} | |
exports.default = DefaultReporter; | |
_defineProperty(DefaultReporter, 'filename', __filename); | |