in packages/just-scripts/src/tasks/jestTask.ts [32:85]
export function jestTask(options: JestTaskOptions = {}): TaskFunction {
const jestConfigFile = resolveCwd('./jest.config.js');
const packageConfigPath = process.cwd();
return function jest() {
const jestCmd = resolve('jest/bin/jest.js');
const configFile = options.config || jestConfigFile;
const configFileExists = configFile && existsSync(configFile);
let packageConfigExists = false;
if (configFileExists) {
logger.verbose(`Using jest config file ${configFile}`);
} else {
const packageConfig = readPackageJson(packageConfigPath);
if (packageConfig && packageConfig.jest) {
packageConfigExists = true;
logger.verbose(`Using jest config from package.json`);
}
}
if ((configFileExists || packageConfigExists) && jestCmd) {
logger.info(`Running Jest`);
const cmd = process.execPath;
const positional = argv()._.slice(1);
const args = [
...(options.nodeArgs || []),
jestCmd,
...(configFileExists ? ['--config', configFile] : []),
...(options.passWithNoTests ? ['--passWithNoTests'] : []),
...(options.clearCache ? ['--clearCache'] : []),
...(options.colors !== false && supportsColor.stdout ? ['--colors'] : []),
...(options.runInBand ? ['--runInBand'] : []),
...(options.coverage ? ['--coverage'] : []),
...(options.watch ? ['--watch'] : []),
...(options.silent ? ['--silent'] : []),
...(options.testPathPattern ? ['--testPathPattern', options.testPathPattern] : []),
...(options.testNamePattern ? ['--testNamePattern', options.testNamePattern] : []),
...(options.u || options.updateSnapshot ? ['--updateSnapshot'] : ['']),
// Only include the positional args if `options._` wasn't specified
// (to avoid possibly including them twice)
...(options._ || positional),
].filter(arg => !!arg) as string[];
logger.info(cmd, encodeArgs(args).join(' '));
return spawn(cmd, args, { stdio: 'inherit', env: options.env });
} else {
logger.warn('no jest configuration found, skipping jest');
return Promise.resolve();
}
};
}