aboutsummaryrefslogtreecommitdiff
path: root/node_modules/@jest/reporters/build/NotifyReporter.js
diff options
context:
space:
mode:
Diffstat (limited to 'node_modules/@jest/reporters/build/NotifyReporter.js')
-rw-r--r--node_modules/@jest/reporters/build/NotifyReporter.js256
1 files changed, 256 insertions, 0 deletions
diff --git a/node_modules/@jest/reporters/build/NotifyReporter.js b/node_modules/@jest/reporters/build/NotifyReporter.js
new file mode 100644
index 0000000..14242b6
--- /dev/null
+++ b/node_modules/@jest/reporters/build/NotifyReporter.js
@@ -0,0 +1,256 @@
+'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(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'
+ );
+ }
+}