UNPKG

gherkin-lint

Version:

A Gherkin linter/validator written in javascript

56 lines (49 loc) 1.3 kB
"use strict"; const rule = 'no-dupe-scenario-names'; const availableConfigs = ['anywhere', 'in-feature']; let scenarios = []; function run(feature, file, configuration) { if (!feature) { return []; } let errors = []; if (configuration === 'in-feature') { scenarios = []; } feature.children.forEach(child => { if (child.scenario) { if (child.scenario.name in scenarios) { const dupes = getFileLinePairsAsStr(scenarios[child.scenario.name].locations); scenarios[child.scenario.name].locations.push({ file: file.relativePath, line: child.scenario.location.line }); errors.push({ message: 'Scenario name is already used in: ' + dupes, rule: rule, line: child.scenario.location.line }); } else { scenarios[child.scenario.name] = { locations: [{ file: file.relativePath, line: child.scenario.location.line }] }; } } }); return errors; } function getFileLinePairsAsStr(objects) { let strings = []; objects.forEach(object => { strings.push(object.file + ':' + object.line); }); return strings.join(', '); } module.exports = { name: rule, run: run, availableConfigs: availableConfigs };