private init(): void { // Enable gracefulFs gracefulFs.gracefulify(fs); // Massage configuration file URIs this.reviveUris(); // Setup perf importEntries(this.configuration.perfEntries); // Browser config setZoomFactor(webFrame.getZoomFactor()); // Ensure others can listen to zoom level changes setZoomLevel(webFrame.getZoomLevel(), true /* isTrusted */); // Can be trusted because we are not setting it ourselves (https://github.com/Microsoft/vscode/issues/26151) setFullscreen(!!this.configuration.fullscreen); // Keyboard support KeyboardMapperFactory.INSTANCE._onKeyboardLayoutChanged(); }
export const runCLI = async ( argv: Config.Argv, projects: Array<Config.Path>, ): Promise<{ results: AggregatedResult; globalConfig: Config.GlobalConfig; }> => { const realFs = require('fs'); const fs = require('graceful-fs'); fs.gracefulify(realFs); let results: AggregatedResult | undefined; // If we output a JSON object, we can't write anything to stdout, since // it'll break the JSON structure and it won't be valid. const outputStream = argv.json || argv.useStderr ? process.stderr : process.stdout; const {globalConfig, configs, hasDeprecationWarnings} = readConfigs( argv, projects, ); if (argv.debug) { logDebugMessages(globalConfig, configs, outputStream); } if (argv.showConfig) { logDebugMessages(globalConfig, configs, process.stdout); exit(0); } if (argv.clearCache) { configs.forEach(config => { rimraf.sync(config.cacheDirectory); process.stdout.write(`Cleared ${config.cacheDirectory}\n`); }); exit(0); } await _run( globalConfig, configs, hasDeprecationWarnings, outputStream, r => (results = r), ); if (argv.watch || argv.watchAll) { // If in watch mode, return the promise that will never resolve. // If the watch mode is interrupted, watch should handle the process // shutdown. return new Promise(() => {}); } if (!results) { throw new Error( 'AggregatedResult must be present after test run is complete', ); } const {openHandles} = results; if (openHandles && openHandles.length) { const formatted = formatHandleErrors(openHandles, configs[0]); const openHandlesString = pluralize('open handle', formatted.length, 's'); const message = chalk.red( `\nJest has detected the following ${openHandlesString} potentially keeping Jest from exiting:\n\n`, ) + formatted.join('\n\n'); console.error(message); } return {globalConfig, results}; };