Files
tekelanew_acs/acs/nladmin-ui/node_modules/jest-cli/build/runJest.js
2024-12-05 09:33:18 +08:00

491 lines
13 KiB
JavaScript

'use strict';
Object.defineProperty(exports, '__esModule', {
value: true
});
var _micromatch;
function _load_micromatch() {
return (_micromatch = _interopRequireDefault(require('micromatch')));
}
var _chalk;
function _load_chalk() {
return (_chalk = _interopRequireDefault(require('chalk')));
}
var _path;
function _load_path() {
return (_path = _interopRequireDefault(require('path')));
}
var _jestUtil;
function _load_jestUtil() {
return (_jestUtil = require('jest-util'));
}
var _exit;
function _load_exit() {
return (_exit = _interopRequireDefault(require('exit')));
}
var _gracefulFs;
function _load_gracefulFs() {
return (_gracefulFs = _interopRequireDefault(require('graceful-fs')));
}
var _getNoTestsFoundMessage;
function _load_getNoTestsFoundMessage() {
return (_getNoTestsFoundMessage = _interopRequireDefault(
require('./getNoTestsFoundMessage')
));
}
var _SearchSource;
function _load_SearchSource() {
return (_SearchSource = _interopRequireDefault(require('./SearchSource')));
}
var _TestScheduler;
function _load_TestScheduler() {
return (_TestScheduler = _interopRequireDefault(require('./TestScheduler')));
}
var _TestSequencer;
function _load_TestSequencer() {
return (_TestSequencer = _interopRequireDefault(require('./TestSequencer')));
}
var _testResultHelpers;
function _load_testResultHelpers() {
return (_testResultHelpers = require('./testResultHelpers'));
}
var _FailedTestsCache;
function _load_FailedTestsCache() {
return (_FailedTestsCache = _interopRequireDefault(
require('./FailedTestsCache')
));
}
var _jestWatcher;
function _load_jestWatcher() {
return (_jestWatcher = require('jest-watcher'));
}
var _collectHandles;
function _load_collectHandles() {
return (_collectHandles = _interopRequireDefault(
require('./collectHandles')
));
}
function _interopRequireDefault(obj) {
return obj && obj.__esModule ? obj : {default: obj};
}
function _asyncToGenerator(fn) {
return function() {
var gen = fn.apply(this, arguments);
return new Promise(function(resolve, reject) {
function step(key, arg) {
try {
var info = gen[key](arg);
var value = info.value;
} catch (error) {
reject(error);
return;
}
if (info.done) {
resolve(value);
} else {
return Promise.resolve(value).then(
function(value) {
step('next', value);
},
function(err) {
step('throw', err);
}
);
}
}
return step('next');
});
};
}
/**
* Copyright (c) 2014-present, Facebook, Inc. All rights reserved.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*
*
*/
const setConfig = (contexts, newConfig) =>
contexts.forEach(
context =>
(context.config = Object.freeze(
Object.assign({}, context.config, newConfig)
))
);
const getTestPaths = (() => {
var _ref = _asyncToGenerator(function*(
globalConfig,
context,
outputStream,
changedFilesPromise,
jestHooks
) {
const source = new (_SearchSource || _load_SearchSource()).default(context);
const data = yield source.getTestPaths(globalConfig, changedFilesPromise);
if (!data.tests.length && globalConfig.onlyChanged && data.noSCM) {
new (_jestUtil || _load_jestUtil()).Console(
outputStream,
outputStream
).log(
'Jest can only find uncommitted changed files in a git or hg ' +
'repository. If you make your project a git or hg ' +
'repository (`git init` or `hg init`), Jest will be able ' +
'to only run tests related to files changed since the last ' +
'commit.'
);
}
const shouldTestArray = yield Promise.all(
data.tests.map(function(test) {
return jestHooks.shouldRunTestSuite({
config: test.context.config,
duration: test.duration,
testPath: test.path
});
})
);
const filteredTests = data.tests.filter(function(test, i) {
return shouldTestArray[i];
});
return Object.assign({}, data, {
allTests: filteredTests.length,
tests: filteredTests
});
});
return function getTestPaths(_x, _x2, _x3, _x4, _x5) {
return _ref.apply(this, arguments);
};
})();
const processResults = (runResults, options) => {
const outputFile = options.outputFile,
isJSON = options.isJSON,
onComplete = options.onComplete,
outputStream = options.outputStream,
testResultsProcessor = options.testResultsProcessor,
collectHandles = options.collectHandles;
if (collectHandles) {
runResults.openHandles = collectHandles();
} else {
runResults.openHandles = [];
}
if (testResultsProcessor) {
/* $FlowFixMe */
runResults = require(testResultsProcessor)(runResults);
}
if (isJSON) {
if (outputFile) {
const filePath = (_path || _load_path()).default.resolve(
process.cwd(),
outputFile
);
(_gracefulFs || _load_gracefulFs()).default.writeFileSync(
filePath,
JSON.stringify(
(0, (_jestUtil || _load_jestUtil()).formatTestResults)(runResults)
)
);
outputStream.write(
`Test results written to: ` +
`${(_path || _load_path()).default.relative(
process.cwd(),
filePath
)}\n`
);
} else {
process.stdout.write(
JSON.stringify(
(0, (_jestUtil || _load_jestUtil()).formatTestResults)(runResults)
)
);
}
}
return onComplete && onComplete(runResults);
};
const testSchedulerContext = {
firstRun: true,
previousSuccess: true
};
exports.default = (() => {
var _ref3 = _asyncToGenerator(function*(_ref2) {
let contexts = _ref2.contexts,
globalConfig = _ref2.globalConfig,
outputStream = _ref2.outputStream,
testWatcher = _ref2.testWatcher;
var _ref2$jestHooks = _ref2.jestHooks;
let jestHooks =
_ref2$jestHooks === undefined
? new (_jestWatcher || _load_jestWatcher()).JestHook().getEmitter()
: _ref2$jestHooks,
startRun = _ref2.startRun,
changedFilesPromise = _ref2.changedFilesPromise,
onComplete = _ref2.onComplete,
failedTestsCache = _ref2.failedTestsCache;
const sequencer = new (_TestSequencer || _load_TestSequencer()).default();
let allTests = [];
if (changedFilesPromise && globalConfig.watch) {
var _ref4 = yield changedFilesPromise;
const repos = _ref4.repos;
const noSCM = Object.keys(repos).every(function(scm) {
return repos[scm].size === 0;
});
if (noSCM) {
process.stderr.write(
'\n' +
(_chalk || _load_chalk()).default.bold('--watch') +
' is not supported without git/hg, please use --watchAll ' +
'\n'
);
(0, (_exit || _load_exit()).default)(1);
}
}
let collectCoverageFrom = [];
const testRunData = yield Promise.all(
contexts.map(
(() => {
var _ref5 = _asyncToGenerator(function*(context) {
const matches = yield getTestPaths(
globalConfig,
context,
outputStream,
changedFilesPromise,
jestHooks
);
allTests = allTests.concat(matches.tests);
if (matches.collectCoverageFrom) {
collectCoverageFrom = collectCoverageFrom.concat(
matches.collectCoverageFrom.filter(function(filename) {
if (
globalConfig.collectCoverageFrom &&
!(0, (_micromatch || _load_micromatch()).default)(
[
(_path || _load_path()).default.relative(
globalConfig.rootDir,
filename
)
],
globalConfig.collectCoverageFrom
).length
) {
return false;
}
if (
globalConfig.coveragePathIgnorePatterns &&
globalConfig.coveragePathIgnorePatterns.some(function(
pattern
) {
return filename.match(pattern);
})
) {
return false;
}
return true;
})
);
}
return {context: context, matches: matches};
});
return function(_x7) {
return _ref5.apply(this, arguments);
};
})()
)
);
if (collectCoverageFrom.length) {
// $FlowFixMe Object.assign
const newConfig = Object.assign({}, globalConfig, {
collectCoverageFrom: collectCoverageFrom
});
globalConfig = Object.freeze(newConfig);
}
allTests = sequencer.sort(allTests);
if (globalConfig.listTests) {
const testsPaths = Array.from(
new Set(
allTests.map(function(test) {
return test.path;
})
)
);
if (globalConfig.json) {
console.log(JSON.stringify(testsPaths));
} else {
console.log(testsPaths.join('\n'));
}
onComplete &&
onComplete(
(0,
(_testResultHelpers || _load_testResultHelpers())
.makeEmptyAggregatedTestResult)()
);
return null;
}
if (globalConfig.onlyFailures && failedTestsCache) {
allTests = failedTestsCache.filterTests(allTests);
globalConfig = failedTestsCache.updateConfig(globalConfig);
}
if (!allTests.length) {
const noTestsFoundMessage = (0,
(_getNoTestsFoundMessage || _load_getNoTestsFoundMessage()).default)(
testRunData,
globalConfig
);
if (
globalConfig.passWithNoTests ||
globalConfig.findRelatedTests ||
globalConfig.lastCommit ||
globalConfig.onlyChanged
) {
new (_jestUtil || _load_jestUtil()).Console(
outputStream,
outputStream
).log(noTestsFoundMessage);
} else {
new (_jestUtil || _load_jestUtil()).Console(
outputStream,
outputStream
).error(noTestsFoundMessage);
(0, (_exit || _load_exit()).default)(1);
}
} else if (
allTests.length === 1 &&
globalConfig.silent !== true &&
globalConfig.verbose !== false
) {
// $FlowFixMe Object.assign
const newConfig = Object.assign({}, globalConfig, {
verbose: true
});
globalConfig = Object.freeze(newConfig);
}
// When using more than one context, make all printed paths relative to the
// current cwd. Do not modify rootDir, since will be used by custom resolvers.
// If --runInBand is true, the resolver saved a copy during initialization,
// however, if it is running on spawned processes, the initiation of the
// custom resolvers is done within each spawned process and it needs the
// original value of rootDir. Instead, use the {cwd: Path} property to resolve
// paths when printing.
setConfig(contexts, {cwd: process.cwd()});
let collectHandles;
if (globalConfig.detectOpenHandles) {
collectHandles = (0,
(_collectHandles || _load_collectHandles()).default)();
}
if (globalConfig.globalSetup) {
// $FlowFixMe
const globalSetup = require(globalConfig.globalSetup);
if (typeof globalSetup !== 'function') {
throw new TypeError(
`globalSetup file must export a function at ${
globalConfig.globalSetup
}`
);
}
yield globalSetup(globalConfig);
}
const results = yield new (_TestScheduler || _load_TestScheduler()).default(
globalConfig,
{
startRun: startRun
},
testSchedulerContext
).scheduleTests(allTests, testWatcher);
sequencer.cacheResults(allTests, results);
if (globalConfig.globalTeardown) {
// $FlowFixMe
const globalTeardown = require(globalConfig.globalTeardown);
if (typeof globalTeardown !== 'function') {
throw new TypeError(
`globalTeardown file must export a function at ${
globalConfig.globalTeardown
}`
);
}
yield globalTeardown(globalConfig);
}
return processResults(results, {
collectHandles: collectHandles,
isJSON: globalConfig.json,
onComplete: onComplete,
outputFile: globalConfig.outputFile,
outputStream: outputStream,
testResultsProcessor: globalConfig.testResultsProcessor
});
});
function runJest(_x6) {
return _ref3.apply(this, arguments);
}
return runJest;
})();