summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLars Wirzenius <liw@liw.fi>2013-08-25 13:38:14 +0100
committerLars Wirzenius <liw@liw.fi>2013-08-25 13:38:14 +0100
commit99eb7132499d14b604d67d8d8104243c3f9a35e6 (patch)
treeaa407a6e091cfd63d9dde080af40c25a82dee50e
parent0f7cfd5fc4f94446c54bb2712eb0aaf5043f7cd5 (diff)
downloadcmdtest-99eb7132499d14b604d67d8d8104243c3f9a35e6.tar.gz
Implement check for duplicate scenario names
-rwxr-xr-xyarn13
-rw-r--r--yarn.tests/duplicate-scenario-names.stderr3
2 files changed, 16 insertions, 0 deletions
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
+