rubick/ostack_validator/inspections/lettuce_runner.py
2013-10-18 15:14:58 +04:00

37 lines
1.2 KiB
Python

import os.path
import lettuce
import lettuce.fs
from ostack_validator.common import Inspection, Rule, Issue
class LettuceRunnerInspection(Inspection):
base_path = os.path.join(os.path.dirname(__file__), 'lettuce')
@classmethod
def rules(klass):
rules = []
loader = lettuce.fs.FeatureLoader(klass.base_path)
for path in loader.find_feature_files():
feature = lettuce.Feature.from_file(path)
for scenario in feature.scenarios:
rules.append(Rule(scenario.name,
"\n".join(scenario.remaining_lines)))
def inspect(self, openstack):
runner = lettuce.Runner(base_path=self.base_path)
lettuce.world.openstack = openstack
result = runner.run()
del lettuce.world.openstack
for feature_result in result.feature_results:
for scenario_result in [s for s in feature_result.scenario_results if not s.passed]:
for step in scenario_result.steps_undefined:
openstack.report_issue(
Issue(
Issue.ERROR,
'Undefined step "%s"' %
step.sentence))