@interaktiv/dia-scripts
Version:
CLI toolbox with common scripts for most sort of projects at DIA
56 lines (42 loc) • 1.82 kB
JavaScript
;
process.env.BABEL_ENV = 'test';
process.env.NODE_ENV = 'test';
const path = require('path');
const exit = require('exit');
const spawn = require('cross-spawn');
const mkdirp = require('mkdirp');
const isCI = require('is-ci');
const yargsParser = require('yargs-parser');
const {
fromRoot,
resolveBin,
envIsSet,
parseEnv
} = require('../../utils');
const rawArgv = process.argv.slice(2);
const args = yargsParser(rawArgv);
let argv = rawArgv;
const filesGiven = args._.length > 0;
if (filesGiven) argv = argv.filter(a => args._.includes(a) === false);
let user = [];
if (envIsSet('SCRATCH_ORG_NAME') && argv.includes('--targetusername') === false) {
user = ['--targetusername', parseEnv('SCRATCH_ORG_NAME')];
}
let coverage = [];
if (argv.includes('--coverage')) {
coverage = ['--codecoverage'];
argv = argv.filter(a => a !== '--coverage');
}
let format = ['--resultformat', 'human'];
if (isCI) format = ['--resultformat', 'junit'];
if (argv.includes('--resultformat')) format = [];
const builtinOutputDir = fromRoot('test-reports', 'apex');
const useBuiltinOutputDir = argv.includes('--outputdir') === false;
const outputDir = useBuiltinOutputDir ? ['--outputdir', builtinOutputDir] : [];
mkdirp.sync(path.dirname(useBuiltinOutputDir ? builtinOutputDir : args.outputdir));
const wait = argv.includes('--wait') ? [] : ['--wait', '10']; // TODO: Find a way to simulate Jest's `--findRelatedTests` and run tests according to given source files. In the meantime run all local tests on pre-commit
const testLevel = argv.includes('--testlevel') ? [] : ['--testlevel', 'RunLocalTests'];
const result = spawn.sync(resolveBin('sfdx'), ['force:apex:test:run', ...user, ...coverage, ...format, ...outputDir, ...wait, ...testLevel, ...argv], {
stdio: 'inherit'
});
exit(result.status);