@cucumber/cucumber
Version:
The official JavaScript implementation of Cucumber.
58 lines • 2.09 kB
JavaScript
;
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