You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
265 lines
6.1 KiB
265 lines
6.1 KiB
'use strict'; |
|
|
|
Object.defineProperty(exports, '__esModule', { |
|
value: true |
|
}); |
|
exports.buildArgv = void 0; |
|
exports.run = run; |
|
|
|
function path() { |
|
const data = _interopRequireWildcard(require('path')); |
|
|
|
path = function () { |
|
return data; |
|
}; |
|
|
|
return data; |
|
} |
|
|
|
function _chalk() { |
|
const data = _interopRequireDefault(require('chalk')); |
|
|
|
_chalk = function () { |
|
return data; |
|
}; |
|
|
|
return data; |
|
} |
|
|
|
function _exit() { |
|
const data = _interopRequireDefault(require('exit')); |
|
|
|
_exit = function () { |
|
return data; |
|
}; |
|
|
|
return data; |
|
} |
|
|
|
function _yargs() { |
|
const data = _interopRequireDefault(require('yargs')); |
|
|
|
_yargs = function () { |
|
return data; |
|
}; |
|
|
|
return data; |
|
} |
|
|
|
function _core() { |
|
const data = require('@jest/core'); |
|
|
|
_core = function () { |
|
return data; |
|
}; |
|
|
|
return data; |
|
} |
|
|
|
function _jestConfig() { |
|
const data = require('jest-config'); |
|
|
|
_jestConfig = function () { |
|
return data; |
|
}; |
|
|
|
return data; |
|
} |
|
|
|
function _jestUtil() { |
|
const data = require('jest-util'); |
|
|
|
_jestUtil = function () { |
|
return data; |
|
}; |
|
|
|
return data; |
|
} |
|
|
|
function _jestValidate() { |
|
const data = require('jest-validate'); |
|
|
|
_jestValidate = function () { |
|
return data; |
|
}; |
|
|
|
return data; |
|
} |
|
|
|
var _init = _interopRequireDefault(require('../init')); |
|
|
|
var args = _interopRequireWildcard(require('./args')); |
|
|
|
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; |
|
} |
|
|
|
/** |
|
* Copyright (c) Facebook, Inc. and its affiliates. 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. |
|
*/ |
|
async function run(maybeArgv, project) { |
|
try { |
|
const argv = buildArgv(maybeArgv); |
|
|
|
if (argv.init) { |
|
await (0, _init.default)(); |
|
return; |
|
} |
|
|
|
const projects = getProjectListFromCLIArgs(argv, project); |
|
const {results, globalConfig} = await (0, _core().runCLI)(argv, projects); |
|
readResultsAndExit(results, globalConfig); |
|
} catch (error) { |
|
(0, _jestUtil().clearLine)(process.stderr); |
|
(0, _jestUtil().clearLine)(process.stdout); |
|
|
|
if (error !== null && error !== void 0 && error.stack) { |
|
console.error(_chalk().default.red(error.stack)); |
|
} else { |
|
console.error(_chalk().default.red(error)); |
|
} |
|
|
|
(0, _exit().default)(1); |
|
throw error; |
|
} |
|
} |
|
|
|
const buildArgv = maybeArgv => { |
|
const version = |
|
(0, _core().getVersion)() + |
|
(__dirname.includes(`packages${path().sep}jest-cli`) ? '-dev' : ''); |
|
const rawArgv = maybeArgv || process.argv.slice(2); |
|
const argv = (0, _yargs().default)(rawArgv) |
|
.usage(args.usage) |
|
.version(version) |
|
.alias('help', 'h') |
|
.options(args.options) |
|
.epilogue(args.docs) |
|
.check(args.check).argv; |
|
(0, _jestValidate().validateCLIOptions)( |
|
argv, |
|
{...args.options, deprecationEntries: _jestConfig().deprecationEntries}, // strip leading dashes |
|
Array.isArray(rawArgv) |
|
? rawArgv.map(rawArgv => rawArgv.replace(/^--?/, '')) |
|
: Object.keys(rawArgv) |
|
); // strip dashed args |
|
|
|
return Object.keys(argv).reduce( |
|
(result, key) => { |
|
if (!key.includes('-')) { |
|
result[key] = argv[key]; |
|
} |
|
|
|
return result; |
|
}, |
|
{ |
|
$0: argv.$0, |
|
_: argv._ |
|
} |
|
); |
|
}; |
|
|
|
exports.buildArgv = buildArgv; |
|
|
|
const getProjectListFromCLIArgs = (argv, project) => { |
|
const projects = argv.projects ? argv.projects : []; |
|
|
|
if (project) { |
|
projects.push(project); |
|
} |
|
|
|
if (!projects.length && process.platform === 'win32') { |
|
try { |
|
projects.push((0, _jestUtil().tryRealpath)(process.cwd())); |
|
} catch { |
|
// do nothing, just catch error |
|
// process.binding('fs').realpath can throw, e.g. on mapped drives |
|
} |
|
} |
|
|
|
if (!projects.length) { |
|
projects.push(process.cwd()); |
|
} |
|
|
|
return projects; |
|
}; |
|
|
|
const readResultsAndExit = (result, globalConfig) => { |
|
const code = !result || result.success ? 0 : globalConfig.testFailureExitCode; // Only exit if needed |
|
|
|
process.on('exit', () => { |
|
if (typeof code === 'number' && code !== 0) { |
|
process.exitCode = code; |
|
} |
|
}); |
|
|
|
if (globalConfig.forceExit) { |
|
if (!globalConfig.detectOpenHandles) { |
|
console.warn( |
|
_chalk().default.bold('Force exiting Jest: ') + |
|
'Have you considered using `--detectOpenHandles` to detect ' + |
|
'async operations that kept running after all tests finished?' |
|
); |
|
} |
|
|
|
(0, _exit().default)(code); |
|
} else if (!globalConfig.detectOpenHandles) { |
|
setTimeout(() => { |
|
console.warn( |
|
_chalk().default.yellow.bold( |
|
'Jest did not exit one second after the test run has completed.\n\n' |
|
) + |
|
_chalk().default.yellow( |
|
'This usually means that there are asynchronous operations that ' + |
|
"weren't stopped in your tests. Consider running Jest with " + |
|
'`--detectOpenHandles` to troubleshoot this issue.' |
|
) |
|
); |
|
}, 1000).unref(); |
|
} |
|
};
|
|
|