|
|
'use strict';
Object.defineProperty(exports, '__esModule', { value: true }); exports.default = void 0;
function path() { const data = _interopRequireWildcard(require('path'));
path = function () { return data; };
return data; }
function util() { const data = _interopRequireWildcard(require('util'));
util = function () { return data; };
return data; }
function _exit() { const data = _interopRequireDefault(require('exit'));
_exit = function () { return data; };
return data; }
function _jestUtil() { const data = require('jest-util');
_jestUtil = function () { return data; };
return data; }
var _BaseReporter = _interopRequireDefault(require('./BaseReporter'));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : {default: obj}; }
function _getRequireWildcardCache() { if (typeof WeakMap !== 'function') return null; var cache = new WeakMap(); _getRequireWildcardCache = function () { return cache; }; return cache; }
function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || (typeof obj !== 'object' && typeof obj !== 'function')) { return {default: obj}; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
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 isDarwin = process.platform === 'darwin'; const icon = path().resolve(__dirname, '../assets/jest_logo.png');
class NotifyReporter extends _BaseReporter.default { constructor(globalConfig, startRun, context) { super();
_defineProperty(this, '_notifier', loadNotifier());
_defineProperty(this, '_startRun', void 0);
_defineProperty(this, '_globalConfig', void 0);
_defineProperty(this, '_context', void 0);
this._globalConfig = globalConfig; this._startRun = startRun; this._context = context; }
onRunComplete(contexts, result) { const success = result.numFailedTests === 0 && result.numRuntimeErrorTestSuites === 0; const firstContext = contexts.values().next(); const hasteFS = firstContext && firstContext.value && firstContext.value.hasteFS; let packageName;
if (hasteFS != null) { // assuming root package.json is the first one
const [filePath] = hasteFS.matchFiles('package.json'); packageName = filePath != null ? hasteFS.getModuleName(filePath) : this._globalConfig.rootDir; } else { packageName = this._globalConfig.rootDir; }
packageName = packageName != null ? `${packageName} - ` : ''; const notifyMode = this._globalConfig.notifyMode; const statusChanged = this._context.previousSuccess !== success || this._context.firstRun; const testsHaveRun = result.numTotalTests !== 0;
if ( testsHaveRun && success && (notifyMode === 'always' || notifyMode === 'success' || notifyMode === 'success-change' || (notifyMode === 'change' && statusChanged) || (notifyMode === 'failure-change' && statusChanged)) ) { const title = util().format('%s%d%% Passed', packageName, 100); const message = `${isDarwin ? '\u2705 ' : ''}${(0, _jestUtil().pluralize)( 'test', result.numPassedTests )} passed`;
this._notifier.notify({ icon, message, timeout: false, title }); } else if ( testsHaveRun && !success && (notifyMode === 'always' || notifyMode === 'failure' || notifyMode === 'failure-change' || (notifyMode === 'change' && statusChanged) || (notifyMode === 'success-change' && statusChanged)) ) { const failed = result.numFailedTests / result.numTotalTests; const title = util().format( '%s%d%% Failed', packageName, Math.ceil(Number.isNaN(failed) ? 0 : failed * 100) ); const message = util().format( (isDarwin ? '\u26D4\uFE0F ' : '') + '%d of %d tests failed', result.numFailedTests, result.numTotalTests ); const watchMode = this._globalConfig.watch || this._globalConfig.watchAll; const restartAnswer = 'Run again'; const quitAnswer = 'Exit tests';
if (!watchMode) { this._notifier.notify({ icon, message, timeout: false, title }); } else { this._notifier.notify( { actions: [restartAnswer, quitAnswer], closeLabel: 'Close', icon, message, timeout: false, title }, (err, _, metadata) => { if (err || !metadata) { return; }
if (metadata.activationValue === quitAnswer) { (0, _exit().default)(0); return; }
if (metadata.activationValue === restartAnswer) { this._startRun(this._globalConfig); } } ); } }
this._context.previousSuccess = success; this._context.firstRun = false; } }
exports.default = NotifyReporter;
function loadNotifier() { try { return require('node-notifier'); } catch (err) { if (err.code !== 'MODULE_NOT_FOUND') { throw err; } else { throw Error( 'notify reporter requires optional dependeny node-notifier but it was not found' ); } } }
|