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 _jestUtil() { | |
| const data = require('jest-util'); | |
| _jestUtil = function () { | |
| return data; | |
| }; | |
| return data; | |
| } | |
| var _DefaultReporter = _interopRequireDefault(require('./DefaultReporter')); | |
| 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 {ICONS} = _jestUtil().specialChars; | |
| class VerboseReporter extends _DefaultReporter.default { | |
| constructor(globalConfig) { | |
| super(globalConfig); | |
| _defineProperty(this, '_globalConfig', void 0); | |
| this._globalConfig = globalConfig; | |
| } // Verbose mode is for debugging. Buffering of output is undesirable. | |
| // See https://github.com/facebook/jest/issues/8208 | |
| __wrapStdio(stream) { | |
| const write = stream.write.bind(stream); | |
| stream.write = chunk => { | |
| this.__clearStatus(); | |
| write(chunk); | |
| this.__printStatus(); | |
| return true; | |
| }; | |
| } | |
| static filterTestResults(testResults) { | |
| return testResults.filter(({status}) => status !== 'pending'); | |
| } | |
| static groupTestsBySuites(testResults) { | |
| const root = { | |
| suites: [], | |
| tests: [], | |
| title: '' | |
| }; | |
| testResults.forEach(testResult => { | |
| let targetSuite = root; // Find the target suite for this test, | |
| // creating nested suites as necessary. | |
| for (const title of testResult.ancestorTitles) { | |
| let matchingSuite = targetSuite.suites.find(s => s.title === title); | |
| if (!matchingSuite) { | |
| matchingSuite = { | |
| suites: [], | |
| tests: [], | |
| title | |
| }; | |
| targetSuite.suites.push(matchingSuite); | |
| } | |
| targetSuite = matchingSuite; | |
| } | |
| targetSuite.tests.push(testResult); | |
| }); | |
| return root; | |
| } | |
| onTestResult(test, result, aggregatedResults) { | |
| super.testFinished(test.context.config, result, aggregatedResults); | |
| if (!result.skipped) { | |
| this.printTestFileHeader( | |
| result.testFilePath, | |
| test.context.config, | |
| result | |
| ); | |
| if (!result.testExecError && !result.skipped) { | |
| this._logTestResults(result.testResults); | |
| } | |
| this.printTestFileFailureMessage( | |
| result.testFilePath, | |
| test.context.config, | |
| result | |
| ); | |
| } | |
| super.forceFlushBufferedOutput(); | |
| } | |
| _logTestResults(testResults) { | |
| this._logSuite(VerboseReporter.groupTestsBySuites(testResults), 0); | |
| this._logLine(); | |
| } | |
| _logSuite(suite, indentLevel) { | |
| if (suite.title) { | |
| this._logLine(suite.title, indentLevel); | |
| } | |
| this._logTests(suite.tests, indentLevel + 1); | |
| suite.suites.forEach(suite => this._logSuite(suite, indentLevel + 1)); | |
| } | |
| _getIcon(status) { | |
| if (status === 'failed') { | |
| return _chalk().default.red(ICONS.failed); | |
| } else if (status === 'pending') { | |
| return _chalk().default.yellow(ICONS.pending); | |
| } else if (status === 'todo') { | |
| return _chalk().default.magenta(ICONS.todo); | |
| } else { | |
| return _chalk().default.green(ICONS.success); | |
| } | |
| } | |
| _logTest(test, indentLevel) { | |
| const status = this._getIcon(test.status); | |
| const time = test.duration | |
| ? ` (${(0, _jestUtil().formatTime)(Math.round(test.duration))})` | |
| : ''; | |
| this._logLine( | |
| status + ' ' + _chalk().default.dim(test.title + time), | |
| indentLevel | |
| ); | |
| } | |
| _logTests(tests, indentLevel) { | |
| if (this._globalConfig.expand) { | |
| tests.forEach(test => this._logTest(test, indentLevel)); | |
| } else { | |
| const summedTests = tests.reduce( | |
| (result, test) => { | |
| if (test.status === 'pending') { | |
| result.pending.push(test); | |
| } else if (test.status === 'todo') { | |
| result.todo.push(test); | |
| } else { | |
| this._logTest(test, indentLevel); | |
| } | |
| return result; | |
| }, | |
| { | |
| pending: [], | |
| todo: [] | |
| } | |
| ); | |
| if (summedTests.pending.length > 0) { | |
| summedTests.pending.forEach(this._logTodoOrPendingTest(indentLevel)); | |
| } | |
| if (summedTests.todo.length > 0) { | |
| summedTests.todo.forEach(this._logTodoOrPendingTest(indentLevel)); | |
| } | |
| } | |
| } | |
| _logTodoOrPendingTest(indentLevel) { | |
| return test => { | |
| const printedTestStatus = | |
| test.status === 'pending' ? 'skipped' : test.status; | |
| const icon = this._getIcon(test.status); | |
| const text = _chalk().default.dim(`${printedTestStatus} ${test.title}`); | |
| this._logLine(`${icon} ${text}`, indentLevel); | |
| }; | |
| } | |
| _logLine(str, indentLevel) { | |
| const indentation = ' '.repeat(indentLevel || 0); | |
| this.log(indentation + (str || '')); | |
| } | |
| } | |
| exports.default = VerboseReporter; | |
| _defineProperty(VerboseReporter, 'filename', __filename); | |