Skip to content

Commit d5d5c90

Browse files
Artem Eroshenkobaev
authored andcommitted
fix cucumberjvm2 examples processing (via allure-framework#388)
1 parent 8e242a7 commit d5d5c90

4 files changed

Lines changed: 38 additions & 17 deletions

File tree

allure-cucumber2-jvm/src/main/java/io/qameta/allure/cucumber2jvm/AllureCucumber2Jvm.java

Lines changed: 19 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@
3535
import gherkin.ast.Feature;
3636
import gherkin.ast.ScenarioDefinition;
3737
import gherkin.ast.ScenarioOutline;
38+
import gherkin.ast.TableCell;
3839
import gherkin.pickles.PickleCell;
3940
import gherkin.pickles.PickleRow;
4041
import gherkin.pickles.PickleTable;
@@ -52,7 +53,6 @@
5253
import java.io.ByteArrayInputStream;
5354
import java.nio.charset.Charset;
5455
import java.nio.charset.StandardCharsets;
55-
import java.util.ArrayList;
5656
import java.util.Collections;
5757
import java.util.Deque;
5858
import java.util.HashMap;
@@ -291,21 +291,24 @@ private Status translateTestCaseStatus(final Result testCaseResult) {
291291
}
292292

293293
private List<Parameter> getExamplesAsParameters(final ScenarioOutline scenarioOutline) {
294-
final List<Parameter> parameterList = new ArrayList<>();
295-
final List<Examples> scenarioOutlineList = scenarioOutline.getExamples().stream()
296-
.filter(examples -> examples.getLocation().getLine() + 2 == currentTestCase.getLine())
297-
.collect(Collectors.toList());
298-
299-
scenarioOutlineList.forEach(examples -> examples.getTableBody()
300-
.forEach(tableRow -> {
301-
IntStream.range(0, examples.getTableHeader().getCells().size())
302-
.forEach(consumer -> {
303-
final String name = examples.getTableHeader().getCells().get(consumer).getValue();
304-
final String value = tableRow.getCells().get(consumer).getValue();
305-
parameterList.add(new Parameter().setName(name).setValue(value));
306-
});
307-
}));
308-
return parameterList;
294+
final int gap = 2;
295+
final Optional<Examples> examplesBlock = scenarioOutline.getExamples().stream()
296+
.filter(e -> currentTestCase.getLine() >= e.getLocation().getLine() + gap)
297+
.filter(e -> currentTestCase.getLine() < e.getLocation().getLine() + e.getTableBody().size() + gap)
298+
.findFirst();
299+
300+
if (examplesBlock.isPresent()) {
301+
final Examples examples = examplesBlock.get();
302+
final int rowIndex = currentTestCase.getLine() - examples.getLocation().getLine() - gap;
303+
final List<TableCell> names = examples.getTableHeader().getCells();
304+
final List<TableCell> values = examples.getTableBody().get(rowIndex).getCells();
305+
return IntStream.range(0, examplesBlock.get().getTableHeader().getCells().size()).mapToObj(index -> {
306+
final String name = names.get(index).getValue();
307+
final String value = values.get(index).getValue();
308+
return new Parameter().setName(name).setValue(value);
309+
}).collect(Collectors.toList());
310+
}
311+
return Collections.emptyList();
309312
}
310313

311314
private void createDataTableAttachment(final PickleTable pickleTable) {

allure-cucumber2-jvm/src/test/java/io/qameta/allure/cucumber2jvm/AllureCucumber2JvmTest.java

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -280,14 +280,19 @@ void shouldAddParametersFromExamples() {
280280
assertThat(testResults)
281281
.hasSize(2);
282282

283+
assertThat(testResults.get(0).getParameters())
284+
.hasSize(3);
285+
286+
assertThat(testResults.get(1).getParameters())
287+
.hasSize(3);
288+
283289
assertThat(testResults)
284290
.flatExtracting(TestResult::getParameters)
285291
.extracting(Parameter::getName, Parameter::getValue)
286292
.containsExactlyInAnyOrder(
287293
tuple("a", "1"), tuple("b", "3"), tuple("result", "4"),
288294
tuple("a", "2"), tuple("b", "4"), tuple("result", "6")
289295
);
290-
291296
}
292297

293298
@AllureFeatures.Parameters

allure-cucumber3-jvm/src/test/java/io/qameta/allure/cucumber3jvm/AllureCucumber3JvmTest.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -269,6 +269,12 @@ void shouldAddParametersFromExamples() {
269269
assertThat(testResults)
270270
.hasSize(2);
271271

272+
assertThat(testResults.get(0).getParameters())
273+
.hasSize(3);
274+
275+
assertThat(testResults.get(1).getParameters())
276+
.hasSize(3);
277+
272278
assertThat(testResults)
273279
.flatExtracting(TestResult::getParameters)
274280
.extracting(Parameter::getName, Parameter::getValue)

allure-cucumber4-jvm/src/test/java/io/qameta/allure/cucumber4jvm/AllureCucumber4JvmTest.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -301,13 +301,20 @@ void shouldAddParametersFromExamples() {
301301
assertThat(testResults)
302302
.hasSize(2);
303303

304+
assertThat(testResults.get(0).getParameters())
305+
.hasSize(3);
306+
307+
assertThat(testResults.get(1).getParameters())
308+
.hasSize(3);
309+
304310
assertThat(testResults)
305311
.flatExtracting(TestResult::getParameters)
306312
.extracting(Parameter::getName, Parameter::getValue)
307313
.containsExactlyInAnyOrder(
308314
tuple("a", "1"), tuple("b", "3"), tuple("result", "4"),
309315
tuple("a", "2"), tuple("b", "4"), tuple("result", "6")
310316
);
317+
311318
}
312319

313320
@AllureFeatures.Parameters

0 commit comments

Comments
 (0)