just-scripts
Version:
Just Stack Scripts
59 lines • 3.01 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.jestTask = void 0;
const just_task_1 = require("just-task");
const just_scripts_utils_1 = require("just-scripts-utils");
const fs_1 = require("fs");
const supportsColor = require("supports-color");
function jestTask(options = {}) {
const jestConfigFile = just_task_1.resolveCwd('./jest.config.js');
const packageConfigPath = process.cwd();
return function jest() {
const jestCmd = just_task_1.resolve('jest/bin/jest.js');
const configFile = options.config || jestConfigFile;
const configFileExists = configFile && fs_1.existsSync(configFile);
let packageConfigExists = false;
if (configFileExists) {
just_task_1.logger.verbose(`Using jest config file ${configFile}`);
}
else {
const packageConfig = just_scripts_utils_1.readPackageJson(packageConfigPath);
if (packageConfig && packageConfig.jest) {
packageConfigExists = true;
just_task_1.logger.verbose(`Using jest config from package.json`);
}
}
if ((configFileExists || packageConfigExists) && jestCmd) {
just_task_1.logger.info(`Running Jest`);
const cmd = process.execPath;
const positional = just_task_1.argv()._.slice(1);
const args = [
...(options.nodeArgs || []),
jestCmd,
...(configFileExists ? ['--config', configFile] : []),
...(options.rootDir ? ['--rootDir', options.rootDir] : []),
...(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);
just_task_1.logger.info(cmd, just_scripts_utils_1.encodeArgs(args).join(' '));
return just_scripts_utils_1.spawn(cmd, args, { stdio: 'inherit', env: options.env });
}
else {
just_task_1.logger.warn('no jest configuration found, skipping jest');
return Promise.resolve();
}
};
}
exports.jestTask = jestTask;
//# sourceMappingURL=jestTask.js.map