turbo-gulp
Version:
Gulp tasks to boost high-quality projects.
69 lines (67 loc) • 8.35 kB
JavaScript
;
var __importStar = (this && this.__importStar) || function (mod) {
if (mod && mod.__esModule) return mod;
var result = {};
if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];
result["default"] = mod;
return result;
}
Object.defineProperty(exports, "__esModule", { value: true });
const incident_1 = require("incident");
const minimatch_1 = require("minimatch");
const project_1 = require("../project");
const matcher = __importStar(require("./matcher"));
const node_async_1 = require("./node-async");
const MOCHA_BIN = project_1.toPosix(require.resolve("mocha/bin/mocha"));
async function execMocha(args = [], options) {
return new node_async_1.SpawnedProcess(MOCHA_BIN, args, Object.assign({ stdio: "pipe" }, options)).toPromise();
}
exports.execMocha = execMocha;
function getSources(options) {
const baseDir = options.testDir;
const glob = new minimatch_1.Minimatch(options.mjs ? "**/*.spec.mjs" : "**/*.spec.js");
const specs = matcher.asString(matcher.join(baseDir, glob));
return {
baseDir,
specs: [specs],
};
}
exports.getSources = getSources;
/**
* Return the command line arguments equivalent to this task
*
* @param options Mocha options
* @return Command line arguments
*/
function getCommand(options) {
return [MOCHA_BIN, ...getCommandArgs(options)];
}
exports.getCommand = getCommand;
function getCommandArgs(options) {
const sources = getSources(options);
const result = [];
result.push("--ui", "bdd");
result.push("--reporter", options.reporter);
if (options.colors) {
result.push("--colors");
}
if (options.mjs) {
result.push("--require", "@std/esm");
}
result.push("--", ...sources.specs);
return result;
}
exports.getCommandArgs = getCommandArgs;
async function run(options) {
const args = getCommandArgs(options);
const result = await execMocha(args, { cwd: options.cwd, stdio: "inherit" });
if (result.exit.type === "code") {
if (result.exit.code === 0) {
return;
}
throw incident_1.Incident("TestError");
}
throw new incident_1.Incident("UnexpectedExitValue", { exit: result.exit });
}
exports.run = run;
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInV0aWxzL21vY2hhLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUFBLHVDQUFvQztBQUNwQyx5Q0FBa0Q7QUFDbEQsd0NBQXFDO0FBR3JDLG1EQUFxQztBQUNyQyw2Q0FBeUU7QUFFekUsTUFBTSxTQUFTLEdBQWlCLGlCQUFPLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLENBQUM7QUFFckUsS0FBSyxvQkFBb0IsT0FBaUIsRUFBRSxFQUFFLE9BQXNCO0lBQ3pFLE1BQU0sQ0FBQyxJQUFJLDJCQUFjLENBQ3ZCLFNBQVMsRUFDVCxJQUFJLGtCQUNILEtBQUssRUFBRSxNQUFNLElBQUssT0FBTyxFQUMzQixDQUFDLFNBQVMsRUFBRSxDQUFDO0FBQ2hCLENBQUM7QUFORCw4QkFNQztBQU9ELG9CQUEyQixPQUE4QztJQUN2RSxNQUFNLE9BQU8sR0FBVyxPQUFPLENBQUMsT0FBTyxDQUFDO0lBQ3hDLE1BQU0sSUFBSSxHQUFlLElBQUkscUJBQVMsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxDQUFDO0lBQ3ZGLE1BQU0sS0FBSyxHQUFXLE9BQU8sQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUVwRSxNQUFNLENBQUM7UUFDTCxPQUFPO1FBQ1AsS0FBSyxFQUFFLENBQUMsS0FBSyxDQUFDO0tBQ2YsQ0FBQztBQUNKLENBQUM7QUFURCxnQ0FTQztBQUVEOzs7OztHQUtHO0FBQ0gsb0JBQTJCLE9BQThCO0lBQ3ZELE1BQU0sQ0FBQyxDQUFDLFNBQVMsRUFBRSxHQUFHLGNBQWMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO0FBQ2pELENBQUM7QUFGRCxnQ0FFQztBQVNELHdCQUErQixPQUE4QjtJQUMzRCxNQUFNLE9BQU8sR0FBWSxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDN0MsTUFBTSxNQUFNLEdBQWEsRUFBRSxDQUFDO0lBQzVCLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQzNCLE1BQU0sQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUM1QyxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztRQUNuQixNQUFNLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQzFCLENBQUM7SUFDRCxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztRQUNoQixNQUFNLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxVQUFVLENBQUMsQ0FBQztJQUN2QyxDQUFDO0lBQ0QsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsR0FBRyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDcEMsTUFBTSxDQUFDLE1BQU0sQ0FBQztBQUNoQixDQUFDO0FBYkQsd0NBYUM7QUFVTSxLQUFLLGNBQWMsT0FBbUI7SUFDM0MsTUFBTSxJQUFJLEdBQWEsY0FBYyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBRS9DLE1BQU0sTUFBTSxHQUFnQixNQUFNLFNBQVMsQ0FBQyxJQUFJLEVBQUUsRUFBQyxHQUFHLEVBQUUsT0FBTyxDQUFDLEdBQUcsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFDLENBQUMsQ0FBQztJQUN4RixFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksS0FBSyxNQUFNLENBQUMsQ0FBQyxDQUFDO1FBQ2hDLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDM0IsTUFBTSxDQUFDO1FBQ1QsQ0FBQztRQUNELE1BQU0sbUJBQVEsQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUM5QixDQUFDO0lBQ0QsTUFBTSxJQUFJLG1CQUFRLENBQUMscUJBQXFCLEVBQUUsRUFBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLElBQUksRUFBQyxDQUFDLENBQUM7QUFDakUsQ0FBQztBQVhELGtCQVdDIiwiZmlsZSI6InV0aWxzL21vY2hhLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5jaWRlbnQgfSBmcm9tIFwiaW5jaWRlbnRcIjtcbmltcG9ydCB7IElNaW5pbWF0Y2gsIE1pbmltYXRjaCB9IGZyb20gXCJtaW5pbWF0Y2hcIjtcbmltcG9ydCB7IHRvUG9zaXggfSBmcm9tIFwiLi4vcHJvamVjdFwiO1xuaW1wb3J0IHsgTW9jaGFPcHRpb25zLCBNb2NoYVJlcG9ydGVyLCBSZXNvbHZlZE1vY2hhT3B0aW9ucywgcmVzb2x2ZU1vY2hhT3B0aW9ucyB9IGZyb20gXCIuLi90YXNrLWdlbmVyYXRvcnMvbW9jaGFcIjtcbmltcG9ydCB7IEFic1Bvc2l4UGF0aCB9IGZyb20gXCIuLi90eXBlc1wiO1xuaW1wb3J0ICogYXMgbWF0Y2hlciBmcm9tIFwiLi9tYXRjaGVyXCI7XG5pbXBvcnQgeyBTcGF3bmVkUHJvY2VzcywgU3Bhd25PcHRpb25zLCBTcGF3blJlc3VsdCB9IGZyb20gXCIuL25vZGUtYXN5bmNcIjtcblxuY29uc3QgTU9DSEFfQklOOiBBYnNQb3NpeFBhdGggPSB0b1Bvc2l4KHJlcXVpcmUucmVzb2x2ZShcIm1vY2hhL2Jpbi9tb2NoYVwiKSk7XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBleGVjTW9jaGEoYXJnczogc3RyaW5nW10gPSBbXSwgb3B0aW9ucz86IFNwYXduT3B0aW9ucyk6IFByb21pc2U8U3Bhd25SZXN1bHQ+IHtcbiAgcmV0dXJuIG5ldyBTcGF3bmVkUHJvY2VzcyhcbiAgICBNT0NIQV9CSU4sXG4gICAgYXJncyxcbiAgICB7c3RkaW86IFwicGlwZVwiLCAuLi5vcHRpb25zfSxcbiAgKS50b1Byb21pc2UoKTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTb3VyY2VzIHtcbiAgYmFzZURpcjogc3RyaW5nO1xuICBzcGVjczogc3RyaW5nW107XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRTb3VyY2VzKG9wdGlvbnM6IHttanM6IGJvb2xlYW47IHRlc3REaXI6IEFic1Bvc2l4UGF0aH0pOiBTb3VyY2VzIHtcbiAgY29uc3QgYmFzZURpcjogc3RyaW5nID0gb3B0aW9ucy50ZXN0RGlyO1xuICBjb25zdCBnbG9iOiBJTWluaW1hdGNoID0gbmV3IE1pbmltYXRjaChvcHRpb25zLm1qcyA/IFwiKiovKi5zcGVjLm1qc1wiIDogXCIqKi8qLnNwZWMuanNcIik7XG4gIGNvbnN0IHNwZWNzOiBzdHJpbmcgPSBtYXRjaGVyLmFzU3RyaW5nKG1hdGNoZXIuam9pbihiYXNlRGlyLCBnbG9iKSk7XG5cbiAgcmV0dXJuIHtcbiAgICBiYXNlRGlyLFxuICAgIHNwZWNzOiBbc3BlY3NdLFxuICB9O1xufVxuXG4vKipcbiAqIFJldHVybiB0aGUgY29tbWFuZCBsaW5lIGFyZ3VtZW50cyBlcXVpdmFsZW50IHRvIHRoaXMgdGFza1xuICpcbiAqIEBwYXJhbSBvcHRpb25zIE1vY2hhIG9wdGlvbnNcbiAqIEByZXR1cm4gQ29tbWFuZCBsaW5lIGFyZ3VtZW50c1xuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0Q29tbWFuZChvcHRpb25zOiBHZXRDb21tYW5kQXJnc09wdGlvbnMpOiBzdHJpbmdbXSB7XG4gIHJldHVybiBbTU9DSEFfQklOLCAuLi5nZXRDb21tYW5kQXJncyhvcHRpb25zKV07XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgR2V0Q29tbWFuZEFyZ3NPcHRpb25zIHtcbiAgdGVzdERpcjogQWJzUG9zaXhQYXRoO1xuICByZXBvcnRlcjogTW9jaGFSZXBvcnRlcjtcbiAgY29sb3JzOiBib29sZWFuO1xuICBtanM6IGJvb2xlYW47XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRDb21tYW5kQXJncyhvcHRpb25zOiBHZXRDb21tYW5kQXJnc09wdGlvbnMpOiBzdHJpbmdbXSB7XG4gIGNvbnN0IHNvdXJjZXM6IFNvdXJjZXMgPSBnZXRTb3VyY2VzKG9wdGlvbnMpO1xuICBjb25zdCByZXN1bHQ6IHN0cmluZ1tdID0gW107XG4gIHJlc3VsdC5wdXNoKFwiLS11aVwiLCBcImJkZFwiKTtcbiAgcmVzdWx0LnB1c2goXCItLXJlcG9ydGVyXCIsIG9wdGlvbnMucmVwb3J0ZXIpO1xuICBpZiAob3B0aW9ucy5jb2xvcnMpIHtcbiAgICByZXN1bHQucHVzaChcIi0tY29sb3JzXCIpO1xuICB9XG4gIGlmIChvcHRpb25zLm1qcykge1xuICAgIHJlc3VsdC5wdXNoKFwiLS1yZXF1aXJlXCIsIFwiQHN0ZC9lc21cIik7XG4gIH1cbiAgcmVzdWx0LnB1c2goXCItLVwiLCAuLi5zb3VyY2VzLnNwZWNzKTtcbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBSdW5PcHRpb25zIHtcbiAgY3dkOiBBYnNQb3NpeFBhdGg7XG4gIHRlc3REaXI6IEFic1Bvc2l4UGF0aDtcbiAgcmVwb3J0ZXI6IE1vY2hhUmVwb3J0ZXI7XG4gIG1qczogYm9vbGVhbjtcbiAgY29sb3JzOiBib29sZWFuO1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcnVuKG9wdGlvbnM6IFJ1bk9wdGlvbnMpOiBQcm9taXNlPHZvaWQ+IHtcbiAgY29uc3QgYXJnczogc3RyaW5nW10gPSBnZXRDb21tYW5kQXJncyhvcHRpb25zKTtcblxuICBjb25zdCByZXN1bHQ6IFNwYXduUmVzdWx0ID0gYXdhaXQgZXhlY01vY2hhKGFyZ3MsIHtjd2Q6IG9wdGlvbnMuY3dkLCBzdGRpbzogXCJpbmhlcml0XCJ9KTtcbiAgaWYgKHJlc3VsdC5leGl0LnR5cGUgPT09IFwiY29kZVwiKSB7XG4gICAgaWYgKHJlc3VsdC5leGl0LmNvZGUgPT09IDApIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhyb3cgSW5jaWRlbnQoXCJUZXN0RXJyb3JcIik7XG4gIH1cbiAgdGhyb3cgbmV3IEluY2lkZW50KFwiVW5leHBlY3RlZEV4aXRWYWx1ZVwiLCB7ZXhpdDogcmVzdWx0LmV4aXR9KTtcbn1cbiJdLCJzb3VyY2VSb290IjoiLi4ifQ==