use of cucumber.runtime.model.CucumberFeature in project cucumber-jvm by cucumber.
the class FeatureBuilder method feature.
@Override
public void feature(Feature feature) {
currentCucumberFeature = new CucumberFeature(feature, featurePath);
cucumberFeatures.add(currentCucumberFeature);
}
use of cucumber.runtime.model.CucumberFeature in project cucumber-jvm by cucumber.
the class BackgroundTest method should_run_background.
@Test
public void should_run_background() throws IOException {
ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
RuntimeOptions runtimeOptions = new RuntimeOptions("");
Runtime runtime = new Runtime(new ClasspathResourceLoader(classLoader), classLoader, asList(mock(Backend.class)), runtimeOptions);
CucumberFeature feature = feature("test.feature", "" + "Feature:\n" + " Background:\n" + " Given b\n" + " Scenario:\n" + " When s\n");
StringBuilder out = new StringBuilder();
PrettyFormatter pretty = new PrettyFormatter(out, true, true);
feature.run(pretty, pretty, runtime);
String expectedOutput = "" + "Feature: \n" + "\n" + " Background: # test.feature:2\n" + " Given b\n" + "\n" + " Scenario: # test.feature:4\n" + " When s\n";
assertEquals(expectedOutput, out.toString());
}
use of cucumber.runtime.model.CucumberFeature in project cucumber-jvm by cucumber.
the class FeatureBuilderTest method works_when_path_and_uri_are_the_same.
@Test
public void works_when_path_and_uri_are_the_same() throws IOException {
char fileSeparatorChar = '/';
String featurePath = "path" + fileSeparatorChar + "foo.feature";
Resource resource = createResourceMock(featurePath);
List<CucumberFeature> features = new ArrayList<CucumberFeature>();
FeatureBuilder builder = new FeatureBuilder(features, fileSeparatorChar);
builder.parse(resource, NO_FILTERS);
assertEquals(1, features.size());
assertEquals(featurePath, features.get(0).getPath());
}
use of cucumber.runtime.model.CucumberFeature in project cucumber-jvm by cucumber.
the class ScenarioCounterTest method createCucumberFeaturesWithScenarioOutlines.
private List<CucumberFeature> createCucumberFeaturesWithScenarioOutlines(final int numberOfCucumberFeatures, final int numberOfScenarioOutlines, final int numberOfCucumberExamples, final int numberOfExampleRows) {
final int numberOfExampleRowsIncludingHeaderRow = numberOfExampleRows + 1;
final List<CucumberFeature> cucumberFeatures = new ArrayList<CucumberFeature>();
for (int f = 0; f < numberOfCucumberFeatures; f++) {
final CucumberFeature cucumberFeature = mock(CucumberFeature.class);
cucumberFeatures.add(cucumberFeature);
// set up 2 scenarios outlines
final List<CucumberTagStatement> cucumberTagStatements = new ArrayList<CucumberTagStatement>();
for (int o = 0; o < numberOfScenarioOutlines; o++) {
cucumberTagStatements.add(mock(CucumberScenarioOutline.class));
}
when(cucumberFeature.getFeatureElements()).thenReturn(cucumberTagStatements);
// with 2 examples for each scenario outline
for (final CucumberTagStatement cucumberTagStatement : cucumberTagStatements) {
final CucumberScenarioOutline cucumberScenarioOutline = (CucumberScenarioOutline) cucumberTagStatement;
final List<CucumberExamples> cucumberExamplesList = createMockList(CucumberExamples.class, numberOfCucumberExamples);
when(cucumberScenarioOutline.getCucumberExamplesList()).thenReturn(cucumberExamplesList);
// each example should have two rows (excluding the header row)
for (final CucumberExamples cucumberExamples : cucumberExamplesList) {
final Examples examples = mock(Examples.class);
when(examples.getRows()).thenReturn(createMockList(ExamplesTableRow.class, numberOfExampleRowsIncludingHeaderRow));
when(cucumberExamples.getExamples()).thenReturn(examples);
}
}
}
return cucumberFeatures;
}
use of cucumber.runtime.model.CucumberFeature in project cucumber-jvm by cucumber.
the class StepdefGenerator method generate.
public List<MetaStepdef> generate(Collection<StepDefinition> stepDefinitions, List<CucumberFeature> features) {
List<MetaStepdef> result = new ArrayList<MetaStepdef>();
List<StepDefinition> sortedStepdefs = new ArrayList<StepDefinition>();
sortedStepdefs.addAll(stepDefinitions);
Collections.sort(sortedStepdefs, STEP_DEFINITION_COMPARATOR);
for (StepDefinition stepDefinition : sortedStepdefs) {
MetaStepdef metaStepdef = new MetaStepdef();
metaStepdef.source = stepDefinition.getPattern();
// TODO = get the flags too
metaStepdef.flags = "";
for (CucumberFeature feature : features) {
List<CucumberTagStatement> cucumberTagStatements = feature.getFeatureElements();
for (CucumberTagStatement tagStatement : cucumberTagStatements) {
List<Step> steps = tagStatement.getSteps();
for (Step step : steps) {
List<Argument> arguments = stepDefinition.matchedArguments(step);
if (arguments != null) {
MetaStepdef.MetaStep ms = new MetaStepdef.MetaStep();
ms.name = step.getName();
for (Argument argument : arguments) {
MetaStepdef.MetaArgument ma = new MetaStepdef.MetaArgument();
ma.offset = argument.getOffset();
ma.val = argument.getVal();
ms.args.add(ma);
}
metaStepdef.steps.add(ms);
}
}
}
Collections.sort(cucumberTagStatements, CUCUMBER_TAG_STATEMENT_COMPARATOR);
}
result.add(metaStepdef);
}
return result;
}
Aggregations