eae5d8c807
These conflicts will be resolved in the following commits. We do it this way so that PR review is possible.
53 lines
1.6 KiB
JavaScript
53 lines
1.6 KiB
JavaScript
/*---------------------------------------------------------------------------------------------
|
|
* Copyright (c) Microsoft Corporation. All rights reserved.
|
|
* Licensed under the MIT License. See License.txt in the project root for license information.
|
|
*--------------------------------------------------------------------------------------------*/
|
|
|
|
const { constants } = require('mocha/lib/runner');
|
|
const BaseRunner = require('mocha/lib/reporters/base');
|
|
|
|
const {
|
|
EVENT_TEST_PASS,
|
|
EVENT_TEST_FAIL,
|
|
EVENT_RUN_BEGIN,
|
|
EVENT_RUN_END,
|
|
} = constants;
|
|
|
|
/**
|
|
* Similar to the mocha JSON stream, but includes additional information
|
|
* on failure. Specifically, the mocha json-stream does not include unmangled
|
|
* expected versus actual results.
|
|
*
|
|
* Writes a superset of the data that json-stream normally would.
|
|
*/
|
|
module.exports = class FullJsonStreamReporter extends BaseRunner {
|
|
constructor(runner, options) {
|
|
super(runner, options);
|
|
|
|
const total = runner.total;
|
|
runner.once(EVENT_RUN_BEGIN, () => writeEvent(['start', { total }]));
|
|
runner.once(EVENT_RUN_END, () => writeEvent(['end', this.stats]));
|
|
|
|
runner.on(EVENT_TEST_PASS, test => writeEvent(['pass', clean(test)]));
|
|
runner.on(EVENT_TEST_FAIL, (test, err) => {
|
|
test = clean(test);
|
|
test.actual = err.actual;
|
|
test.expected = err.expected;
|
|
test.err = err.message;
|
|
test.stack = err.stack || null;
|
|
writeEvent(['fail', test]);
|
|
});
|
|
}
|
|
}
|
|
|
|
function writeEvent(event) {
|
|
process.stdout.write(JSON.stringify(event) + '\n');
|
|
}
|
|
|
|
const clean = test => ({
|
|
title: test.title,
|
|
fullTitle: test.fullTitle(),
|
|
duration: test.duration,
|
|
currentRetry: test.currentRetry()
|
|
});
|