mirror of
https://github.com/hanzoai/jest.git
synced 2026-10-30 14:46:24 +00:00
90 lines
2.3 KiB
JavaScript
90 lines
2.3 KiB
JavaScript
/**
|
|
* Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
*
|
|
* This source code is licensed under the MIT license found in the
|
|
* LICENSE file in the root directory of this source tree.
|
|
*/
|
|
|
|
'use strict';
|
|
|
|
/**
|
|
* TestReporter
|
|
* Reporter for testing the outputs, without any extra
|
|
* hassle. Uses a JSON like syntax for testing the reporters
|
|
* instead of outputting the text to stdout and using match functions
|
|
* to get the output.
|
|
*/
|
|
class TestReporter {
|
|
constructor(globalConfig, reporterOptions, reporterContext) {
|
|
this._context = reporterContext;
|
|
this._options = reporterOptions;
|
|
|
|
/**
|
|
* statsCollected property
|
|
* contains most of the statistics
|
|
* related to the object to be called,
|
|
* This here helps us in avoiding the string match
|
|
* statements nothing else
|
|
*/
|
|
this._statsCollected = {
|
|
onRunComplete: {},
|
|
onRunStart: {},
|
|
onTestResult: {times: 0},
|
|
onTestStart: {},
|
|
reporterContext,
|
|
reporterOptions,
|
|
};
|
|
}
|
|
|
|
/**
|
|
* clearLine
|
|
* clears the line for easier JSON parsing
|
|
*/
|
|
clearLine() {
|
|
if (process.stdout.isTTY) {
|
|
process.stderr.write('\u001B[999D\u001B[K');
|
|
}
|
|
}
|
|
|
|
onTestStart(path) {
|
|
const onTestStart = this._statsCollected.onTestStart;
|
|
|
|
onTestStart.called = true;
|
|
onTestStart.path = typeof path === 'string';
|
|
}
|
|
|
|
onTestResult(test, testResult, results) {
|
|
const onTestResult = this._statsCollected.onTestResult;
|
|
|
|
onTestResult.called = true;
|
|
onTestResult.times++;
|
|
}
|
|
|
|
onRunStart(results, options) {
|
|
this.clearLine();
|
|
const onRunStart = this._statsCollected.onRunStart;
|
|
|
|
onRunStart.called = true;
|
|
onRunStart.options = typeof options;
|
|
}
|
|
|
|
onRunComplete(testContexts, results) {
|
|
const onRunComplete = this._statsCollected.onRunComplete;
|
|
|
|
onRunComplete.called = true;
|
|
|
|
onRunComplete.numPassedTests = results.numPassedTests;
|
|
onRunComplete.numFailedTests = results.numFailedTests;
|
|
onRunComplete.numTotalTests = results.numTotalTests;
|
|
|
|
if (this._statsCollected.reporterOptions.maxWorkers) {
|
|
// Since it's a different number on different machines.
|
|
this._statsCollected.reporterOptions.maxWorkers = '<<REPLACED>>';
|
|
}
|
|
// The Final Call
|
|
process.stdout.write(JSON.stringify(this._statsCollected, null, 4));
|
|
}
|
|
}
|
|
|
|
module.exports = TestReporter;
|