UNPKG

@angular-builders/jest

Version:

Jest runner for Angular build facade. Allows ng test run with Jest instead of Karma

66 lines 3.68 kB
"use strict"; var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } return new (P || (P = Promise))(function (resolve, reject) { function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } step((generator = generator.apply(thisArg, _arguments || [])).next()); }); }; Object.defineProperty(exports, "__esModule", { value: true }); exports.getRoots = getRoots; exports.runJest = runJest; const architect_1 = require("@angular-devkit/architect"); const core_1 = require("@angular-devkit/core"); const node_1 = require("@angular-devkit/core/node"); const jest_1 = require("jest"); const rxjs_1 = require("rxjs"); const operators_1 = require("rxjs/operators"); const custom_config_resolver_1 = require("./custom-config.resolver"); const default_config_resolver_1 = require("./default-config.resolver"); const jest_configuration_builder_1 = require("./jest-configuration-builder"); const options_converter_1 = require("./options-converter"); function getRoots(context) { return __awaiter(this, void 0, void 0, function* () { const registry = new core_1.schema.CoreSchemaRegistry(); registry.addPostTransform(core_1.schema.transforms.addUndefinedDefaults); const { workspace } = yield core_1.workspaces.readWorkspace((0, core_1.normalize)(context.workspaceRoot), core_1.workspaces.createWorkspaceHost(new node_1.NodeJsSyncHost())); const projectName = context.target ? context.target.project : workspace.extensions['defaultProject']; if (typeof projectName !== 'string') { throw new Error('Must either have a target from the context or a default project.'); } const { root } = workspace.projects.get(projectName); return { projectRoot: (0, core_1.normalize)(root), workspaceRoot: (0, core_1.normalize)(context.workspaceRoot), }; }); } function runJest(options, context) { //TODO: run with service worker (augmentAppWithServiceWorker) function buildArgv() { return __awaiter(this, void 0, void 0, function* () { const optionsConverter = new options_converter_1.OptionsConverter(); const { workspaceRoot, projectRoot } = yield getRoots(context); const builder = new jest_configuration_builder_1.JestConfigurationBuilder(new default_config_resolver_1.DefaultConfigResolver(options), new custom_config_resolver_1.CustomConfigResolver(options, context.logger.createChild('Jest runner'))); const configuration = yield builder.buildConfiguration(projectRoot, workspaceRoot, options.configPath); delete options.configPath; const argv = optionsConverter.convertToCliArgs(options); argv.push('--config', JSON.stringify(configuration)); return argv; }); } function runJestCLI() { return __awaiter(this, void 0, void 0, function* () { const argv = yield buildArgv(); //TODO: use runCLI to better determine the outcome return (0, jest_1.run)(argv); }); } return (0, rxjs_1.from)(runJestCLI()).pipe((0, operators_1.map)(() => ({ success: true }))); } exports.default = (0, architect_1.createBuilder)(runJest); //# sourceMappingURL=index.js.map