diff options
author | Lars Wirzenius <liw@liw.fi> | 2013-08-25 13:38:14 +0100 |
---|---|---|
committer | Lars Wirzenius <liw@liw.fi> | 2013-08-25 13:38:14 +0100 |
commit | 99eb7132499d14b604d67d8d8104243c3f9a35e6 (patch) | |
tree | aa407a6e091cfd63d9dde080af40c25a82dee50e | |
parent | 0f7cfd5fc4f94446c54bb2712eb0aaf5043f7cd5 (diff) | |
download | cmdtest-99eb7132499d14b604d67d8d8104243c3f9a35e6.tar.gz |
Implement check for duplicate scenario names
-rwxr-xr-x | yarn | 13 | ||||
-rw-r--r-- | yarn.tests/duplicate-scenario-names.stderr | 3 |
2 files changed, 16 insertions, 0 deletions
@@ -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 + |