mirror of
https://github.com/react/react-native-devtools-frontend.git
synced 2026-10-03 02:21:05 +08:00
This reverts commit ecc4ecb65c.
Reason for revert: This CL is suspected of breaking the roll into
chromium (https://crbug.com/1121242#c2).
Original change's description:
> Update Mocha and rollup-plugin-terser
>
> These two packages had NPM advisories filed against them. Luckily,
> we can upgrade to versions where they are fixed.
>
> The upgrade of rollup-plugin-terser includes the upgrade to Terser 5.
> Looking at its changelog (https://github.com/terser/terser/blob/master/CHANGELOG.md#v500-beta0)
> we seem to not be affected. Our build also works as expected.
>
> DISABLE_THIRD_PARTY_CHECK=Update node modules
> R=petermarshall@chromium.org
>
> Change-Id: I6974a73d92a1a210b705246053be5c2af268605b
> Reviewed-on: https://chromium-review.googlesource.com/c/devtools/devtools-frontend/+/2372148
> Auto-Submit: Tim van der Lippe <tvanderlippe@chromium.org>
> Commit-Queue: Peter Marshall <petermarshall@chromium.org>
> Reviewed-by: Peter Marshall <petermarshall@chromium.org>
TBR=petermarshall@chromium.org,tvanderlippe@chromium.org
Change-Id: I969ca281c77d299038332f93ffd477925e191073
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Reviewed-on: https://chromium-review.googlesource.com/c/devtools/devtools-frontend/+/2374207
Reviewed-by: Wolfgang Beyer <wolfi@chromium.org>
Commit-Queue: Wolfgang Beyer <wolfi@chromium.org>
198 lines
4.8 KiB
JavaScript
198 lines
4.8 KiB
JavaScript
'use strict';
|
|
|
|
var Suite = require('../suite');
|
|
var errors = require('../errors');
|
|
var createMissingArgumentError = errors.createMissingArgumentError;
|
|
var createUnsupportedError = errors.createUnsupportedError;
|
|
var createForbiddenExclusivityError = errors.createForbiddenExclusivityError;
|
|
|
|
/**
|
|
* Functions common to more than one interface.
|
|
*
|
|
* @param {Suite[]} suites
|
|
* @param {Context} context
|
|
* @param {Mocha} mocha
|
|
* @return {Object} An object containing common functions.
|
|
*/
|
|
module.exports = function(suites, context, mocha) {
|
|
/**
|
|
* Check if the suite should be tested.
|
|
*
|
|
* @private
|
|
* @param {Suite} suite - suite to check
|
|
* @returns {boolean}
|
|
*/
|
|
function shouldBeTested(suite) {
|
|
return (
|
|
!mocha.options.grep ||
|
|
(mocha.options.grep &&
|
|
mocha.options.grep.test(suite.fullTitle()) &&
|
|
!mocha.options.invert)
|
|
);
|
|
}
|
|
|
|
return {
|
|
/**
|
|
* This is only present if flag --delay is passed into Mocha. It triggers
|
|
* root suite execution.
|
|
*
|
|
* @param {Suite} suite The root suite.
|
|
* @return {Function} A function which runs the root suite
|
|
*/
|
|
runWithSuite: function runWithSuite(suite) {
|
|
return function run() {
|
|
suite.run();
|
|
};
|
|
},
|
|
|
|
/**
|
|
* Execute before running tests.
|
|
*
|
|
* @param {string} name
|
|
* @param {Function} fn
|
|
*/
|
|
before: function(name, fn) {
|
|
suites[0].beforeAll(name, fn);
|
|
},
|
|
|
|
/**
|
|
* Execute after running tests.
|
|
*
|
|
* @param {string} name
|
|
* @param {Function} fn
|
|
*/
|
|
after: function(name, fn) {
|
|
suites[0].afterAll(name, fn);
|
|
},
|
|
|
|
/**
|
|
* Execute before each test case.
|
|
*
|
|
* @param {string} name
|
|
* @param {Function} fn
|
|
*/
|
|
beforeEach: function(name, fn) {
|
|
suites[0].beforeEach(name, fn);
|
|
},
|
|
|
|
/**
|
|
* Execute after each test case.
|
|
*
|
|
* @param {string} name
|
|
* @param {Function} fn
|
|
*/
|
|
afterEach: function(name, fn) {
|
|
suites[0].afterEach(name, fn);
|
|
},
|
|
|
|
suite: {
|
|
/**
|
|
* Create an exclusive Suite; convenience function
|
|
* See docstring for create() below.
|
|
*
|
|
* @param {Object} opts
|
|
* @returns {Suite}
|
|
*/
|
|
only: function only(opts) {
|
|
if (mocha.options.forbidOnly) {
|
|
throw createForbiddenExclusivityError(mocha);
|
|
}
|
|
opts.isOnly = true;
|
|
return this.create(opts);
|
|
},
|
|
|
|
/**
|
|
* Create a Suite, but skip it; convenience function
|
|
* See docstring for create() below.
|
|
*
|
|
* @param {Object} opts
|
|
* @returns {Suite}
|
|
*/
|
|
skip: function skip(opts) {
|
|
opts.pending = true;
|
|
return this.create(opts);
|
|
},
|
|
|
|
/**
|
|
* Creates a suite.
|
|
*
|
|
* @param {Object} opts Options
|
|
* @param {string} opts.title Title of Suite
|
|
* @param {Function} [opts.fn] Suite Function (not always applicable)
|
|
* @param {boolean} [opts.pending] Is Suite pending?
|
|
* @param {string} [opts.file] Filepath where this Suite resides
|
|
* @param {boolean} [opts.isOnly] Is Suite exclusive?
|
|
* @returns {Suite}
|
|
*/
|
|
create: function create(opts) {
|
|
var suite = Suite.create(suites[0], opts.title);
|
|
suite.pending = Boolean(opts.pending);
|
|
suite.file = opts.file;
|
|
suites.unshift(suite);
|
|
if (opts.isOnly) {
|
|
suite.markOnly();
|
|
}
|
|
if (
|
|
suite.pending &&
|
|
mocha.options.forbidPending &&
|
|
shouldBeTested(suite)
|
|
) {
|
|
throw createUnsupportedError('Pending test forbidden');
|
|
}
|
|
if (typeof opts.fn === 'function') {
|
|
opts.fn.call(suite);
|
|
suites.shift();
|
|
} else if (typeof opts.fn === 'undefined' && !suite.pending) {
|
|
throw createMissingArgumentError(
|
|
'Suite "' +
|
|
suite.fullTitle() +
|
|
'" was defined but no callback was supplied. ' +
|
|
'Supply a callback or explicitly skip the suite.',
|
|
'callback',
|
|
'function'
|
|
);
|
|
} else if (!opts.fn && suite.pending) {
|
|
suites.shift();
|
|
}
|
|
|
|
return suite;
|
|
}
|
|
},
|
|
|
|
test: {
|
|
/**
|
|
* Exclusive test-case.
|
|
*
|
|
* @param {Object} mocha
|
|
* @param {Function} test
|
|
* @returns {*}
|
|
*/
|
|
only: function(mocha, test) {
|
|
if (mocha.options.forbidOnly) {
|
|
throw createForbiddenExclusivityError(mocha);
|
|
}
|
|
test.markOnly();
|
|
return test;
|
|
},
|
|
|
|
/**
|
|
* Pending test case.
|
|
*
|
|
* @param {string} title
|
|
*/
|
|
skip: function(title) {
|
|
context.test(title);
|
|
},
|
|
|
|
/**
|
|
* Number of retry attempts
|
|
*
|
|
* @param {number} n
|
|
*/
|
|
retries: function(n) {
|
|
context.retries(n);
|
|
}
|
|
}
|
|
};
|
|
};
|