UNPKG

turbo-gulp

Version:

Gulp tasks to boost high-quality projects.

69 lines (67 loc) 8.35 kB
"use strict"; 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,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LEVBQUUsRUFBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLElBQUksRUFBQyxDQUFDLENBQUM7QUFDakUsQ0FBQztBQVhELGtCQVdDIiwiZmlsZSI6InV0aWxzL21vY2hhLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5jaWRlbnQgfSBmcm9tIFwiaW5jaWRlbnRcIjtcbmltcG9ydCB7IElNaW5pbWF0Y2gsIE1pbmltYXRjaCB9IGZyb20gXCJtaW5pbWF0Y2hcIjtcbmltcG9ydCB7IHRvUG9zaXggfSBmcm9tIFwiLi4vcHJvamVjdFwiO1xuaW1wb3J0IHsgTW9jaGFPcHRpb25zLCBNb2NoYVJlcG9ydGVyLCBSZXNvbHZlZE1vY2hhT3B0aW9ucywgcmVzb2x2ZU1vY2hhT3B0aW9ucyB9IGZyb20gXCIuLi90YXNrLWdlbmVyYXRvcnMvbW9jaGFcIjtcbmltcG9ydCB7IEFic1Bvc2l4UGF0aCB9IGZyb20gXCIuLi90eXBlc1wiO1xuaW1wb3J0ICogYXMgbWF0Y2hlciBmcm9tIFwiLi9tYXRjaGVyXCI7XG5pbXBvcnQgeyBTcGF3bmVkUHJvY2VzcywgU3Bhd25PcHRpb25zLCBTcGF3blJlc3VsdCB9IGZyb20gXCIuL25vZGUtYXN5bmNcIjtcblxuY29uc3QgTU9DSEFfQklOOiBBYnNQb3NpeFBhdGggPSB0b1Bvc2l4KHJlcXVpcmUucmVzb2x2ZShcIm1vY2hhL2Jpbi9tb2NoYVwiKSk7XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBleGVjTW9jaGEoYXJnczogc3RyaW5nW10gPSBbXSwgb3B0aW9ucz86IFNwYXduT3B0aW9ucyk6IFByb21pc2U8U3Bhd25SZXN1bHQ+IHtcbiAgcmV0dXJuIG5ldyBTcGF3bmVkUHJvY2VzcyhcbiAgICBNT0NIQV9CSU4sXG4gICAgYXJncyxcbiAgICB7c3RkaW86IFwicGlwZVwiLCAuLi5vcHRpb25zfSxcbiAgKS50b1Byb21pc2UoKTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTb3VyY2VzIHtcbiAgYmFzZURpcjogc3RyaW5nO1xuICBzcGVjczogc3RyaW5nW107XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRTb3VyY2VzKG9wdGlvbnM6IHttanM6IGJvb2xlYW47IHRlc3REaXI6IEFic1Bvc2l4UGF0aH0pOiBTb3VyY2VzIHtcbiAgY29uc3QgYmFzZURpcjogc3RyaW5nID0gb3B0aW9ucy50ZXN0RGlyO1xuICBjb25zdCBnbG9iOiBJTWluaW1hdGNoID0gbmV3IE1pbmltYXRjaChvcHRpb25zLm1qcyA/IFwiKiovKi5zcGVjLm1qc1wiIDogXCIqKi8qLnNwZWMuanNcIik7XG4gIGNvbnN0IHNwZWNzOiBzdHJpbmcgPSBtYXRjaGVyLmFzU3RyaW5nKG1hdGNoZXIuam9pbihiYXNlRGlyLCBnbG9iKSk7XG5cbiAgcmV0dXJuIHtcbiAgICBiYXNlRGlyLFxuICAgIHNwZWNzOiBbc3BlY3NdLFxuICB9O1xufVxuXG4vKipcbiAqIFJldHVybiB0aGUgY29tbWFuZCBsaW5lIGFyZ3VtZW50cyBlcXVpdmFsZW50IHRvIHRoaXMgdGFza1xuICpcbiAqIEBwYXJhbSBvcHRpb25zIE1vY2hhIG9wdGlvbnNcbiAqIEByZXR1cm4gQ29tbWFuZCBsaW5lIGFyZ3VtZW50c1xuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0Q29tbWFuZChvcHRpb25zOiBHZXRDb21tYW5kQXJnc09wdGlvbnMpOiBzdHJpbmdbXSB7XG4gIHJldHVybiBbTU9DSEFfQklOLCAuLi5nZXRDb21tYW5kQXJncyhvcHRpb25zKV07XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgR2V0Q29tbWFuZEFyZ3NPcHRpb25zIHtcbiAgdGVzdERpcjogQWJzUG9zaXhQYXRoO1xuICByZXBvcnRlcjogTW9jaGFSZXBvcnRlcjtcbiAgY29sb3JzOiBib29sZWFuO1xuICBtanM6IGJvb2xlYW47XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRDb21tYW5kQXJncyhvcHRpb25zOiBHZXRDb21tYW5kQXJnc09wdGlvbnMpOiBzdHJpbmdbXSB7XG4gIGNvbnN0IHNvdXJjZXM6IFNvdXJjZXMgPSBnZXRTb3VyY2VzKG9wdGlvbnMpO1xuICBjb25zdCByZXN1bHQ6IHN0cmluZ1tdID0gW107XG4gIHJlc3VsdC5wdXNoKFwiLS11aVwiLCBcImJkZFwiKTtcbiAgcmVzdWx0LnB1c2goXCItLXJlcG9ydGVyXCIsIG9wdGlvbnMucmVwb3J0ZXIpO1xuICBpZiAob3B0aW9ucy5jb2xvcnMpIHtcbiAgICByZXN1bHQucHVzaChcIi0tY29sb3JzXCIpO1xuICB9XG4gIGlmIChvcHRpb25zLm1qcykge1xuICAgIHJlc3VsdC5wdXNoKFwiLS1yZXF1aXJlXCIsIFwiQHN0ZC9lc21cIik7XG4gIH1cbiAgcmVzdWx0LnB1c2goXCItLVwiLCAuLi5zb3VyY2VzLnNwZWNzKTtcbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBSdW5PcHRpb25zIHtcbiAgY3dkOiBBYnNQb3NpeFBhdGg7XG4gIHRlc3REaXI6IEFic1Bvc2l4UGF0aDtcbiAgcmVwb3J0ZXI6IE1vY2hhUmVwb3J0ZXI7XG4gIG1qczogYm9vbGVhbjtcbiAgY29sb3JzOiBib29sZWFuO1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcnVuKG9wdGlvbnM6IFJ1bk9wdGlvbnMpOiBQcm9taXNlPHZvaWQ+IHtcbiAgY29uc3QgYXJnczogc3RyaW5nW10gPSBnZXRDb21tYW5kQXJncyhvcHRpb25zKTtcblxuICBjb25zdCByZXN1bHQ6IFNwYXduUmVzdWx0ID0gYXdhaXQgZXhlY01vY2hhKGFyZ3MsIHtjd2Q6IG9wdGlvbnMuY3dkLCBzdGRpbzogXCJpbmhlcml0XCJ9KTtcbiAgaWYgKHJlc3VsdC5leGl0LnR5cGUgPT09IFwiY29kZVwiKSB7XG4gICAgaWYgKHJlc3VsdC5leGl0LmNvZGUgPT09IDApIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhyb3cgSW5jaWRlbnQoXCJUZXN0RXJyb3JcIik7XG4gIH1cbiAgdGhyb3cgbmV3IEluY2lkZW50KFwiVW5leHBlY3RlZEV4aXRWYWx1ZVwiLCB7ZXhpdDogcmVzdWx0LmV4aXR9KTtcbn1cbiJdLCJzb3VyY2VSb290IjoiLi4ifQ==