Title: [1297] trunk/core/jbehave-core/src/java/org/jbehave/scenario: Fixed NPE in PassSilentlyDecorator when using table examples.

Diff

Modified: trunk/core/examples/trader/src/main/java/org/jbehave/examples/trader/TraderScenario.java (1296 => 1297)

--- trunk/core/examples/trader/src/main/java/org/jbehave/examples/trader/TraderScenario.java	2009-10-06 11:34:20 UTC (rev 1296)
+++ trunk/core/examples/trader/src/main/java/org/jbehave/examples/trader/TraderScenario.java	2009-10-07 22:43:07 UTC (rev 1297)
@@ -2,8 +2,6 @@
 
 import org.jbehave.scenario.JUnitScenario;
 import org.jbehave.scenario.PropertyBasedConfiguration;
-import org.jbehave.scenario.definition.KeyWords;
-import org.jbehave.scenario.i18n.I18nKeyWords;
 import org.jbehave.scenario.parser.ClasspathScenarioDefiner;
 import org.jbehave.scenario.parser.PatternScenarioParser;
 import org.jbehave.scenario.parser.ScenarioDefiner;
@@ -28,11 +26,6 @@
 			public ScenarioReporter forReportingScenarios() {
 				return new PrintStreamScenarioReporter();
 			}
-
-			@Override
-			public KeyWords keywords() {
-				return new I18nKeyWords();
-			}
             
         }, new TraderSteps(classLoader)); 
     }

Modified: trunk/core/jbehave-core/src/behaviour/org/jbehave/scenario/reporters/PassSilentlyDecoratorBehaviour.java (1296 => 1297)

--- trunk/core/jbehave-core/src/behaviour/org/jbehave/scenario/reporters/PassSilentlyDecoratorBehaviour.java	2009-10-06 11:34:20 UTC (rev 1296)
+++ trunk/core/jbehave-core/src/behaviour/org/jbehave/scenario/reporters/PassSilentlyDecoratorBehaviour.java	2009-10-07 22:43:07 UTC (rev 1297)
@@ -1,11 +1,15 @@
 package org.jbehave.scenario.reporters;
 
+import static java.util.Arrays.asList;
 import static org.mockito.Mockito.inOrder;
 import static org.mockito.Mockito.mock;
 import static org.mockito.Mockito.never;
 import static org.mockito.Mockito.verify;
 
+import java.util.List;
+
 import org.jbehave.scenario.definition.Blurb;
+import org.jbehave.scenario.definition.ExamplesTable;
 import org.junit.Test;
 import org.mockito.InOrder;
 
@@ -15,6 +19,8 @@
     public void shouldSwallowOutputFromPassingScenarios() {
         ScenarioReporter delegate = mock(ScenarioReporter.class);
         PassSilentlyDecorator decorator = new PassSilentlyDecorator(delegate);
+        List<String> givenScenarios = asList("path/to/scenario1", "path/to/scenario2");
+        ExamplesTable examplesTable = new ExamplesTable("|one|two|\n|1|2|\n");
         IllegalArgumentException anException = new IllegalArgumentException();
         Blurb blurb = new Blurb("Some blurb");
         
@@ -26,12 +32,14 @@
         decorator.afterScenario();
         
         decorator.beforeScenario("My scenario 2");
+		decorator.givenScenarios(givenScenarios);
         decorator.successful("Given step 2.1");
         decorator.pending("When step 2.2");
         decorator.notPerformed("Then step 2.3");
         decorator.afterScenario();
         
         decorator.beforeScenario("My scenario 3");
+		decorator.examplesTable(examplesTable);
         decorator.successful("Given step 3.1");
         decorator.successful("When step 3.2");
         decorator.failed("Then step 3.3", anException);
@@ -58,15 +66,18 @@
         
         inOrder.verify(delegate).beforeStory(blurb);
         inOrder.verify(delegate).beforeScenario("My scenario 2");
+        inOrder.verify(delegate).givenScenarios(givenScenarios);
         inOrder.verify(delegate).successful("Given step 2.1");
         inOrder.verify(delegate).pending("When step 2.2");
         inOrder.verify(delegate).notPerformed("Then step 2.3");
         inOrder.verify(delegate).afterScenario();
         
         inOrder.verify(delegate).beforeScenario("My scenario 3");
+        inOrder.verify(delegate).examplesTable(examplesTable);
         inOrder.verify(delegate).successful("Given step 3.1");
         inOrder.verify(delegate).successful("When step 3.2");
         inOrder.verify(delegate).failed("Then step 3.3", anException);
+        
         inOrder.verify(delegate).afterScenario();
         inOrder.verify(delegate).afterStory();
         

Modified: trunk/core/jbehave-core/src/java/org/jbehave/scenario/ScenarioRunner.java (1296 => 1297)

--- trunk/core/jbehave-core/src/java/org/jbehave/scenario/ScenarioRunner.java	2009-10-06 11:34:20 UTC (rev 1296)
+++ trunk/core/jbehave-core/src/java/org/jbehave/scenario/ScenarioRunner.java	2009-10-07 22:43:07 UTC (rev 1297)
@@ -50,12 +50,14 @@
         
         reporter.beforeStory(story.getBlurb());
         for (ScenarioDefinition scenario : story.getScenarios()) {
+    		reporter.beforeScenario(scenario.getTitle());
         	runGivenScenarios(configuration, scenario, candidateSteps); // first run any given scenarios, if any
         	if ( isExamplesTableScenario(scenario) ){ // run examples table scenario
         		runExamplesTableScenario(configuration, scenario, scenario.getTable(), candidateSteps);
         	} else { // run plain old scenario
             	runScenario(configuration, scenario, new HashMap<String, String>(), candidateSteps);        		
         	}
+    		reporter.afterScenario();
         }
         reporter.afterStory();
         currentStrategy.handleError(throwable);
@@ -91,12 +93,10 @@
 	private void runScenario(Configuration configuration,
 			ScenarioDefinition scenario, Map<String, String> tableRow, CandidateSteps... candidateSteps) {
 		Step[] steps = configuration.forCreatingSteps().createStepsFrom(scenario, tableRow, candidateSteps);
-		reporter.beforeScenario(scenario.getTitle());
 		state = new FineSoFar();
 		for (Step step : steps) {
 		    state.run(step);
 		}
-		reporter.afterScenario();
 	};
 
     private class SomethingHappened implements State {

Modified: trunk/core/jbehave-core/src/java/org/jbehave/scenario/reporters/PassSilentlyDecorator.java (1296 => 1297)

--- trunk/core/jbehave-core/src/java/org/jbehave/scenario/reporters/PassSilentlyDecorator.java	2009-10-06 11:34:20 UTC (rev 1296)
+++ trunk/core/jbehave-core/src/java/org/jbehave/scenario/reporters/PassSilentlyDecorator.java	2009-10-07 22:43:07 UTC (rev 1297)
@@ -14,7 +14,7 @@
 public class PassSilentlyDecorator implements ScenarioReporter {
 
     private final ScenarioReporter delegate;
-    private List<Todo> currentScenario;
+    private List<Todo> currentScenario = new ArrayList<Todo>();
     private State scenarioState = State.SILENT;
     private State beforeStoryState = State.SILENT;
     private State afterStoryState = State.SILENT;

Modified: trunk/core/jbehave-core/src/java/org/jbehave/scenario/reporters/PrintStreamScenarioReporter.java (1296 => 1297)

--- trunk/core/jbehave-core/src/java/org/jbehave/scenario/reporters/PrintStreamScenarioReporter.java	2009-10-06 11:34:20 UTC (rev 1296)
+++ trunk/core/jbehave-core/src/java/org/jbehave/scenario/reporters/PrintStreamScenarioReporter.java	2009-10-07 22:43:07 UTC (rev 1297)
@@ -133,7 +133,7 @@
 	}
 
 	public void examplesTableRow(Map<String, String> tableRow) {
-		output.println(format("examplesTableRow", "{0} {1}\n", keywords
+		output.println(format("examplesTableRow", "\n{0} {1}\n", keywords
 				.examplesTableRow(), tableRow));
 	}
 


To unsubscribe from this list please visit:

http://xircles.codehaus.org/manage_email

Reply via email to