From af7dfff3583faf4a0579ad08c2be162563f52ef0 Mon Sep 17 00:00:00 2001 From: stopiccot Date: Thu, 1 Sep 2016 23:21:21 +0300 Subject: [PATCH] JENKINS-29328 --- .../jsontestsupport/GherkinCallback.java | 17 ++++++++++++++++- .../ScenarioResultTest/backgroundFailure.json | 11 +++++++++++ 2 files changed, 27 insertions(+), 1 deletion(-) diff --git a/src/main/java/org/jenkinsci/plugins/cucumber/jsontestsupport/GherkinCallback.java b/src/main/java/org/jenkinsci/plugins/cucumber/jsontestsupport/GherkinCallback.java index 434aef5..63ba205 100644 --- a/src/main/java/org/jenkinsci/plugins/cucumber/jsontestsupport/GherkinCallback.java +++ b/src/main/java/org/jenkinsci/plugins/cucumber/jsontestsupport/GherkinCallback.java @@ -39,6 +39,7 @@ import java.io.File; import java.io.IOException; import java.util.List; +import java.util.ArrayList; import java.util.logging.Level; import java.util.logging.Logger; @@ -64,6 +65,8 @@ class GherkinCallback implements Formatter, Reporter { private CucumberTestResult testResult; + private List backgroundBeforeAfterResults = null; + GherkinCallback(CucumberTestResult testResult) { this.testResult = testResult; @@ -113,6 +116,7 @@ public void background(Background background) { throw new CucumberModelException("Background: {" + background.getName() + "} received before previous background: {" + currentBackground.getName()+ "} handled"); } currentBackground = new BackgroundResult(background); + backgroundBeforeAfterResults = new ArrayList(); } @@ -130,6 +134,12 @@ public void scenario(Scenario scenario) { currentScenarioResult = new ScenarioResult(scenario, currentBackground); currentBackground = null; currentFeatureResult.addScenarioResult(currentScenarioResult); + + if (backgroundBeforeAfterResults != null) { + for (BeforeAfterResult beforeAfterResult : backgroundBeforeAfterResults) { + currentScenarioResult.addBeforeResult(beforeAfterResult); + } + } } @@ -218,7 +228,12 @@ public void before(Match match, Result result) { LOG.log(Level.FINE, "rep result : " + result.getErrorMessage()); LOG.log(Level.FINE, "rep result : " + result.getError()); } - currentScenarioResult.addBeforeResult(new BeforeAfterResult(match, result)); + + if (currentScenarioResult != null) { + currentScenarioResult.addBeforeResult(new BeforeAfterResult(match, result)); + } else { + backgroundBeforeAfterResults.add(new BeforeAfterResult(match, result)); + } } diff --git a/src/test/resources/org/jenkinsci/plugins/cucumber/jsontestsupport/ScenarioResultTest/backgroundFailure.json b/src/test/resources/org/jenkinsci/plugins/cucumber/jsontestsupport/ScenarioResultTest/backgroundFailure.json index f775ae2..199fe3d 100644 --- a/src/test/resources/org/jenkinsci/plugins/cucumber/jsontestsupport/ScenarioResultTest/backgroundFailure.json +++ b/src/test/resources/org/jenkinsci/plugins/cucumber/jsontestsupport/ScenarioResultTest/backgroundFailure.json @@ -17,6 +17,17 @@ "name": "A Calculator", "keyword": "Background", "line": 4, + "before":[ + { + "match":{ + "location":"SomeLocation" + }, + "result":{ + "status":"passed", + "duration":0 + } + } + ], "steps": [ { "result": {