From 99eb7132499d14b604d67d8d8104243c3f9a35e6 Mon Sep 17 00:00:00 2001 From: Lars Wirzenius Date: Sun, 25 Aug 2013 13:38:14 +0100 Subject: Implement check for duplicate scenario names --- yarn | 13 +++++++++++++ yarn.tests/duplicate-scenario-names.stderr | 3 +++ 2 files changed, 16 insertions(+) create mode 100644 yarn.tests/duplicate-scenario-names.stderr diff --git a/yarn b/yarn index 3bb26e8..c13681b 100755 --- a/yarn +++ b/yarn @@ -18,6 +18,7 @@ import cliapp +import collections import logging import os import re @@ -108,6 +109,7 @@ class YarnRunner(cliapp.Application): 'step %Index(step,steps): %String(step_name)') scenarios, implementations = self.parse_scenarios(args) + self.check_for_duplicate_scenario_names(scenarios) self.check_for_thens(scenarios) self.connect_implementations(scenarios, implementations) shell_prelude = self.load_shell_libraries() @@ -158,6 +160,17 @@ class YarnRunner(cliapp.Application): return block_parser.scenarios, block_parser.implementations + def check_for_duplicate_scenario_names(self, scenarios): + counts = collections.Counter() + for s in scenarios: + counts[s.name] += 1 + + duplicates = [name for name in counts if counts[name] > 1] + if duplicates: + duplist = ''.join(' %s\n' % name for name in duplicates) + raise cliapp.AppException( + 'There are scenarios with duplicate names:\n%s' % duplist) + def check_for_thens(self, scenarios): no_thens = [] for scenario in scenarios: diff --git a/yarn.tests/duplicate-scenario-names.stderr b/yarn.tests/duplicate-scenario-names.stderr new file mode 100644 index 0000000..d3fbc95 --- /dev/null +++ b/yarn.tests/duplicate-scenario-names.stderr @@ -0,0 +1,3 @@ +ERROR: There are scenarios with duplicate names: + foo + -- cgit v1.2.1