UNPKG

@analogjs/vitest-angular

Version:

Vitest Builder for Angular

63 lines 7.83 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.getExtraArgs = getExtraArgs; const architect_1 = require("@angular-devkit/architect"); async function vitestBuilder(options, context) { process.env['TEST'] = 'true'; process.env['VITEST'] = 'true'; const { startVitest } = await Function('return import("vitest/node")')(); const projectConfig = await context.getProjectMetadata(context.target); const { coverageArgs, ...extraArgs } = await getExtraArgs(options); const watch = options.watch === true; const ui = options.ui === true; const coverageEnabled = options.coverage === true; const update = options.update === true; const config = { root: `${projectConfig['root'] || '.'}`, watch, ui, config: options.configFile, coverage: { enabled: coverageEnabled, ...coverageArgs, }, update, ...extraArgs, }; const server = await startVitest('test', options.testFiles ?? [], config, { test: { watch }, }); let hasErrors = false; const processExit = () => { server?.exit(); if (hasErrors) { process.exit(1); } else { process.exit(0); } }; if (options.watch) { process.on('SIGINT', processExit); process.on('SIGTERM', processExit); process.on('exit', processExit); } // vitest sets the exitCode = 1 when code coverage isn't met hasErrors = (process.exitCode && process.exitCode !== 0); return { success: !hasErrors, }; } async function getExtraArgs(options) { // support passing extra args to Vitest CLI const schema = await Promise.resolve().then(() => require('./schema.json')); const extraArgs = {}; for (const key of Object.keys(options)) { if (!schema.properties[key]) { extraArgs[key] = options[key]; } } return extraArgs; } exports.default = (0, architect_1.createBuilder)(vitestBuilder); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidml0ZXN0LmltcGwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy92aXRlc3QtYW5ndWxhci9zcmMvbGliL2J1aWxkZXJzL3Rlc3Qvdml0ZXN0LmltcGwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFxRUEsb0NBYUM7QUFsRkQseURBSW1DO0FBSW5DLEtBQUssVUFBVSxhQUFhLENBQzFCLE9BQXFCLEVBQ3JCLE9BQXVCO0lBRXZCLE9BQU8sQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLEdBQUcsTUFBTSxDQUFDO0lBQzdCLE9BQU8sQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLEdBQUcsTUFBTSxDQUFDO0lBRS9CLE1BQU0sRUFBRSxXQUFXLEVBQUUsR0FBRyxNQUFPLFFBQVEsQ0FDckMsOEJBQThCLENBQy9CLEVBQTRDLENBQUM7SUFFOUMsTUFBTSxhQUFhLEdBQUcsTUFBTSxPQUFPLENBQUMsa0JBQWtCLENBQ3BELE9BQU8sQ0FBQyxNQUEyQixDQUNwQyxDQUFDO0lBQ0YsTUFBTSxFQUFFLFlBQVksRUFBRSxHQUFHLFNBQVMsRUFBRSxHQUFHLE1BQU0sWUFBWSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ25FLE1BQU0sS0FBSyxHQUFHLE9BQU8sQ0FBQyxLQUFLLEtBQUssSUFBSSxDQUFDO0lBQ3JDLE1BQU0sRUFBRSxHQUFHLE9BQU8sQ0FBQyxFQUFFLEtBQUssSUFBSSxDQUFDO0lBQy9CLE1BQU0sZUFBZSxHQUFHLE9BQU8sQ0FBQyxRQUFRLEtBQUssSUFBSSxDQUFDO0lBQ2xELE1BQU0sTUFBTSxHQUFHLE9BQU8sQ0FBQyxNQUFNLEtBQUssSUFBSSxDQUFDO0lBQ3ZDLE1BQU0sTUFBTSxHQUFHO1FBQ2IsSUFBSSxFQUFFLEdBQUcsYUFBYSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEdBQUcsRUFBRTtRQUN2QyxLQUFLO1FBQ0wsRUFBRTtRQUNGLE1BQU0sRUFBRSxPQUFPLENBQUMsVUFBVTtRQUMxQixRQUFRLEVBQUU7WUFDUixPQUFPLEVBQUUsZUFBZTtZQUN4QixHQUFHLFlBQVk7U0FDaEI7UUFDRCxNQUFNO1FBQ04sR0FBRyxTQUFTO0tBQ2IsQ0FBQztJQUVGLE1BQU0sTUFBTSxHQUFHLE1BQU0sV0FBVyxDQUFDLE1BQU0sRUFBRSxPQUFPLENBQUMsU0FBUyxJQUFJLEVBQUUsRUFBRSxNQUFNLEVBQUU7UUFDeEUsSUFBSSxFQUFFLEVBQUUsS0FBSyxFQUFFO0tBQ1QsQ0FBQyxDQUFDO0lBRVYsSUFBSSxTQUFTLEdBQUcsS0FBSyxDQUFDO0lBRXRCLE1BQU0sV0FBVyxHQUFHLEdBQUcsRUFBRTtRQUN2QixNQUFNLEVBQUUsSUFBSSxFQUFFLENBQUM7UUFDZixJQUFJLFNBQVMsRUFBRSxDQUFDO1lBQ2QsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNsQixDQUFDO2FBQU0sQ0FBQztZQUNOLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDbEIsQ0FBQztJQUNILENBQUMsQ0FBQztJQUVGLElBQUksT0FBTyxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ2xCLE9BQU8sQ0FBQyxFQUFFLENBQUMsUUFBUSxFQUFFLFdBQVcsQ0FBQyxDQUFDO1FBQ2xDLE9BQU8sQ0FBQyxFQUFFLENBQUMsU0FBUyxFQUFFLFdBQVcsQ0FBQyxDQUFDO1FBQ25DLE9BQU8sQ0FBQyxFQUFFLENBQUMsTUFBTSxFQUFFLFdBQVcsQ0FBQyxDQUFDO0lBQ2xDLENBQUM7SUFFRCw0REFBNEQ7SUFDNUQsU0FBUyxHQUFHLENBQUMsT0FBTyxDQUFDLFFBQVEsSUFBSSxPQUFPLENBQUMsUUFBUSxLQUFLLENBQUMsQ0FBWSxDQUFDO0lBRXBFLE9BQU87UUFDTCxPQUFPLEVBQUUsQ0FBQyxTQUFTO0tBQ3BCLENBQUM7QUFDSixDQUFDO0FBRU0sS0FBSyxVQUFVLFlBQVksQ0FDaEMsT0FBcUI7SUFFckIsMkNBQTJDO0lBQzNDLE1BQU0sTUFBTSxHQUFHLDJDQUFhLGVBQWUsRUFBQyxDQUFDO0lBQzdDLE1BQU0sU0FBUyxHQUF3QixFQUFFLENBQUM7SUFDMUMsS0FBSyxNQUFNLEdBQUcsSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7UUFDdkMsSUFBSSxDQUFFLE1BQWMsQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUNyQyxTQUFTLENBQUMsR0FBRyxDQUFDLEdBQUksT0FBZSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ3pDLENBQUM7SUFDSCxDQUFDO0lBRUQsT0FBTyxTQUFTLENBQUM7QUFDbkIsQ0FBQztBQUVELGtCQUFlLElBQUEseUJBQWEsRUFBQyxhQUFhLENBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEJ1aWxkZXJDb250ZXh0LFxuICBCdWlsZGVyT3V0cHV0LFxuICBjcmVhdGVCdWlsZGVyLFxufSBmcm9tICdAYW5ndWxhci1kZXZraXQvYXJjaGl0ZWN0JztcblxuaW1wb3J0IHsgVml0ZXN0U2NoZW1hIH0gZnJvbSAnLi9zY2hlbWEnO1xuXG5hc3luYyBmdW5jdGlvbiB2aXRlc3RCdWlsZGVyKFxuICBvcHRpb25zOiBWaXRlc3RTY2hlbWEsXG4gIGNvbnRleHQ6IEJ1aWxkZXJDb250ZXh0LFxuKTogUHJvbWlzZTxCdWlsZGVyT3V0cHV0PiB7XG4gIHByb2Nlc3MuZW52WydURVNUJ10gPSAndHJ1ZSc7XG4gIHByb2Nlc3MuZW52WydWSVRFU1QnXSA9ICd0cnVlJztcblxuICBjb25zdCB7IHN0YXJ0Vml0ZXN0IH0gPSBhd2FpdCAoRnVuY3Rpb24oXG4gICAgJ3JldHVybiBpbXBvcnQoXCJ2aXRlc3Qvbm9kZVwiKScsXG4gICkoKSBhcyBQcm9taXNlPHR5cGVvZiBpbXBvcnQoJ3ZpdGVzdC9ub2RlJyk+KTtcblxuICBjb25zdCBwcm9qZWN0Q29uZmlnID0gYXdhaXQgY29udGV4dC5nZXRQcm9qZWN0TWV0YWRhdGEoXG4gICAgY29udGV4dC50YXJnZXQgYXMgdW5rbm93biBhcyBzdHJpbmcsXG4gICk7XG4gIGNvbnN0IHsgY292ZXJhZ2VBcmdzLCAuLi5leHRyYUFyZ3MgfSA9IGF3YWl0IGdldEV4dHJhQXJncyhvcHRpb25zKTtcbiAgY29uc3Qgd2F0Y2ggPSBvcHRpb25zLndhdGNoID09PSB0cnVlO1xuICBjb25zdCB1aSA9IG9wdGlvbnMudWkgPT09IHRydWU7XG4gIGNvbnN0IGNvdmVyYWdlRW5hYmxlZCA9IG9wdGlvbnMuY292ZXJhZ2UgPT09IHRydWU7XG4gIGNvbnN0IHVwZGF0ZSA9IG9wdGlvbnMudXBkYXRlID09PSB0cnVlO1xuICBjb25zdCBjb25maWcgPSB7XG4gICAgcm9vdDogYCR7cHJvamVjdENvbmZpZ1sncm9vdCddIHx8ICcuJ31gLFxuICAgIHdhdGNoLFxuICAgIHVpLFxuICAgIGNvbmZpZzogb3B0aW9ucy5jb25maWdGaWxlLFxuICAgIGNvdmVyYWdlOiB7XG4gICAgICBlbmFibGVkOiBjb3ZlcmFnZUVuYWJsZWQsXG4gICAgICAuLi5jb3ZlcmFnZUFyZ3MsXG4gICAgfSxcbiAgICB1cGRhdGUsXG4gICAgLi4uZXh0cmFBcmdzLFxuICB9O1xuXG4gIGNvbnN0IHNlcnZlciA9IGF3YWl0IHN0YXJ0Vml0ZXN0KCd0ZXN0Jywgb3B0aW9ucy50ZXN0RmlsZXMgPz8gW10sIGNvbmZpZywge1xuICAgIHRlc3Q6IHsgd2F0Y2ggfSxcbiAgfSBhcyBhbnkpO1xuXG4gIGxldCBoYXNFcnJvcnMgPSBmYWxzZTtcblxuICBjb25zdCBwcm9jZXNzRXhpdCA9ICgpID0+IHtcbiAgICBzZXJ2ZXI/LmV4aXQoKTtcbiAgICBpZiAoaGFzRXJyb3JzKSB7XG4gICAgICBwcm9jZXNzLmV4aXQoMSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHByb2Nlc3MuZXhpdCgwKTtcbiAgICB9XG4gIH07XG5cbiAgaWYgKG9wdGlvbnMud2F0Y2gpIHtcbiAgICBwcm9jZXNzLm9uKCdTSUdJTlQnLCBwcm9jZXNzRXhpdCk7XG4gICAgcHJvY2Vzcy5vbignU0lHVEVSTScsIHByb2Nlc3NFeGl0KTtcbiAgICBwcm9jZXNzLm9uKCdleGl0JywgcHJvY2Vzc0V4aXQpO1xuICB9XG5cbiAgLy8gdml0ZXN0IHNldHMgdGhlIGV4aXRDb2RlID0gMSB3aGVuIGNvZGUgY292ZXJhZ2UgaXNuJ3QgbWV0XG4gIGhhc0Vycm9ycyA9IChwcm9jZXNzLmV4aXRDb2RlICYmIHByb2Nlc3MuZXhpdENvZGUgIT09IDApIGFzIGJvb2xlYW47XG5cbiAgcmV0dXJuIHtcbiAgICBzdWNjZXNzOiAhaGFzRXJyb3JzLFxuICB9O1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZ2V0RXh0cmFBcmdzKFxuICBvcHRpb25zOiBWaXRlc3RTY2hlbWEsXG4pOiBQcm9taXNlPFJlY29yZDxzdHJpbmcsIGFueT4+IHtcbiAgLy8gc3VwcG9ydCBwYXNzaW5nIGV4dHJhIGFyZ3MgdG8gVml0ZXN0IENMSVxuICBjb25zdCBzY2hlbWEgPSBhd2FpdCBpbXBvcnQoJy4vc2NoZW1hLmpzb24nKTtcbiAgY29uc3QgZXh0cmFBcmdzOiBSZWNvcmQ8c3RyaW5nLCBhbnk+ID0ge307XG4gIGZvciAoY29uc3Qga2V5IG9mIE9iamVjdC5rZXlzKG9wdGlvbnMpKSB7XG4gICAgaWYgKCEoc2NoZW1hIGFzIGFueSkucHJvcGVydGllc1trZXldKSB7XG4gICAgICBleHRyYUFyZ3Nba2V5XSA9IChvcHRpb25zIGFzIGFueSlba2V5XTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gZXh0cmFBcmdzO1xufVxuXG5leHBvcnQgZGVmYXVsdCBjcmVhdGVCdWlsZGVyKHZpdGVzdEJ1aWxkZXIpIGFzIGFueTtcbiJdfQ==