Spaces:
Sleeping
Sleeping
; | |
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(nodeInterop) { | |
if (typeof WeakMap !== 'function') return null; | |
var cacheBabelInterop = new WeakMap(); | |
var cacheNodeInterop = new WeakMap(); | |
return (_getRequireWildcardCache = function (nodeInterop) { | |
return nodeInterop ? cacheNodeInterop : cacheBabelInterop; | |
})(nodeInterop); | |
} | |
function _interopRequireWildcard(obj, nodeInterop) { | |
if (!nodeInterop && obj && obj.__esModule) { | |
return obj; | |
} | |
if (obj === null || (typeof obj !== 'object' && typeof obj !== 'function')) { | |
return {default: obj}; | |
} | |
var cache = _getRequireWildcardCache(nodeInterop); | |
if (cache && cache.has(obj)) { | |
return cache.get(obj); | |
} | |
var newObj = {}; | |
var hasPropertyDescriptor = | |
Object.defineProperty && Object.getOwnPropertyDescriptor; | |
for (var key in obj) { | |
if (key !== 'default' && 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; | |
_defineProperty(NotifyReporter, 'filename', __filename); | |
function loadNotifier() { | |
try { | |
return require('node-notifier'); | |
} catch (err) { | |
if (err.code !== 'MODULE_NOT_FOUND') { | |
throw err; | |
} | |
throw Error( | |
'notify reporter requires optional peer dependency "node-notifier" but it was not found' | |
); | |
} | |
} | |