UNPKG

@cucumber/cucumber

Version:

The official JavaScript implementation of Cucumber.

58 lines 2.09 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.loadSources = loadSources; const messages_1 = require("@cucumber/messages"); const paths_1 = require("../paths"); const environment_1 = require("../environment"); const gherkin_1 = require("./gherkin"); const plugins_1 = require("./plugins"); /** * Load and parse features, produce a filtered and ordered test plan and/or * parse errors * * @public * @param coordinates - Coordinates required to find and process features * @param environment - Project environment */ async function loadSources(coordinates, environment = {}) { const mergedEnvironment = (0, environment_1.makeEnvironment)(environment); const { cwd, logger } = mergedEnvironment; const newId = messages_1.IdGenerator.uuid(); const pluginManager = await (0, plugins_1.initializeForLoadSources)(coordinates, mergedEnvironment); const resolvedPaths = await (0, paths_1.resolvePaths)(logger, cwd, coordinates); pluginManager.emit('paths:resolve', resolvedPaths); const { sourcePaths } = resolvedPaths; if (sourcePaths.length === 0) { return { plan: [], errors: [], }; } const { filterablePickles, parseErrors } = await (0, gherkin_1.getPicklesAndErrors)({ newId, cwd, sourcePaths, coordinates, onEnvelope: (envelope) => pluginManager.emit('message', envelope), }); const filteredPickles = await pluginManager.transform('pickles:filter', filterablePickles); const orderedPickles = await pluginManager.transform('pickles:order', filteredPickles); const plan = orderedPickles.map(({ location, pickle }) => ({ name: pickle.name, uri: pickle.uri, location, })); const errors = parseErrors.map(({ source, message }) => { return { uri: source.uri, location: source.location, message, }; }); await pluginManager.cleanup(); return { plan, errors, }; } //# sourceMappingURL=load_sources.js.map