'use strict'; Object.defineProperty(exports, '__esModule', { value: true }); exports.run = run; exports.buildArgv = void 0; function path() { const data = _interopRequireWildcard(require('path')); path = 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; } function _jestConfig() { const data = require('jest-config'); _jestConfig = function () { return data; }; return data; } function _core() { const data = require('@jest/core'); _core = 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 _realpathNative() { const data = require('realpath-native'); _realpathNative = function () { return data; }; return data; } function _init() { const data = _interopRequireDefault(require('../init')); _init = function () { return data; }; return data; } var args = _interopRequireWildcard(require('./args')); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : {default: obj}; } function _getRequireWildcardCache() { if (typeof WeakMap !== 'function') return null; var cache = new WeakMap(); _getRequireWildcardCache = function () { return cache; }; return cache; } function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || (typeof obj !== 'object' && typeof obj !== 'function')) { return {default: obj}; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (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 ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; } function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty( target, key, Object.getOwnPropertyDescriptor(source, key) ); }); } } return target; } 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; } 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.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, _objectSpread({}, 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; }, {}); }; 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, _realpathNative().sync)(process.cwd())); } catch (err) { // 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(); } };