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 +++++++++++++ 1 file changed, 13 insertions(+) (limited to 'yarn') 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: -- cgit v1.2.1