Title: [1584] trunk/core/jbehave-core/src/main/java/org/jbehave/scenario: JBEHAVE-239: Fixed running embedded story steps.
Revision
1584
Author
mauro
Date
2010-02-25 02:55:29 -0600 (Thu, 25 Feb 2010)

Log Message

JBEHAVE-239:  Fixed running embedded story steps.

Modified Paths

Diff

Modified: trunk/core/jbehave-core/src/behaviour/java/org/jbehave/scenario/ScenarioRunnerBehaviour.java (1583 => 1584)

--- trunk/core/jbehave-core/src/behaviour/java/org/jbehave/scenario/ScenarioRunnerBehaviour.java	2010-02-25 08:01:34 UTC (rev 1583)
+++ trunk/core/jbehave-core/src/behaviour/java/org/jbehave/scenario/ScenarioRunnerBehaviour.java	2010-02-25 08:55:29 UTC (rev 1584)
@@ -300,8 +300,9 @@
     }
 
     private void givenStoryWithNoBeforeOrAfterSteps(StoryDefinition storyDefinition, boolean embeddedStory, StepCreator creator, CandidateSteps mySteps) {
-        when(creator.createStepsFrom(storyDefinition, Stage.BEFORE, embeddedStory, mySteps)).thenReturn(new Step[] {});
-        when(creator.createStepsFrom(storyDefinition, Stage.AFTER, embeddedStory, mySteps)).thenReturn(new Step[] {});
+        Step[] steps = new Step[] {};   
+        when(creator.createStepsFrom(storyDefinition, Stage.BEFORE, embeddedStory, mySteps)).thenReturn(steps);
+        when(creator.createStepsFrom(storyDefinition, Stage.AFTER, embeddedStory, mySteps)).thenReturn(steps);
     }
 
     private Configuration configurationWithPendingStrategy(StepCreator creator, ScenarioReporter reporter,

Modified: trunk/core/jbehave-core/src/main/java/org/jbehave/scenario/ScenarioRunner.java (1583 => 1584)

--- trunk/core/jbehave-core/src/main/java/org/jbehave/scenario/ScenarioRunner.java	2010-02-25 08:01:34 UTC (rev 1583)
+++ trunk/core/jbehave-core/src/main/java/org/jbehave/scenario/ScenarioRunner.java	2010-02-25 08:55:29 UTC (rev 1584)
@@ -16,6 +16,7 @@
 import org.jbehave.scenario.steps.Step;
 import org.jbehave.scenario.steps.StepCreator;
 import org.jbehave.scenario.steps.StepResult;
+import org.jbehave.scenario.steps.StepCreator.Stage;
 
 /**
  * Runs the steps of each scenario in a story and describes the results to the {...@link ScenarioReporter}.
@@ -56,38 +57,22 @@
         throwable = null;
         
         reporter.beforeStory(story, embeddedStory);          
-        runSteps(stepCreator.createStepsFrom(story, StepCreator.Stage.BEFORE, embeddedStory, candidateSteps), embeddedStory);
+        runStorySteps(story, embeddedStory, StepCreator.Stage.BEFORE, candidateSteps);
         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, candidateSteps);
         	} else { // run plain old scenario
-            	runScenario(configuration, scenario, new HashMap<String, String>(), candidateSteps);        		
+            	runScenarioSteps(configuration, scenario, new HashMap<String, String>(), candidateSteps);        		
         	}
     		reporter.afterScenario();
         }
-        runSteps(stepCreator.createStepsFrom(story, StepCreator.Stage.AFTER, embeddedStory, candidateSteps), embeddedStory);
+        runStorySteps(story, embeddedStory, StepCreator.Stage.AFTER, candidateSteps);
         reporter.afterStory(embeddedStory);            
         currentStrategy.handleError(throwable);
     }
 
-	
-    /**
-     * Runs a list of steps.  The running can be skipped in certain cases,
-     * e.g. when running in embedded story mode.
-     * 
-     * @param steps the Steps to run
-     * @param skip the boolean flag to skip running
-     */
-    private void runSteps(Step[] steps, boolean skip) {
-        if ( skip ) return; 
-        state = new FineSoFar();
-        for (Step step : steps) {
-            state.run(step);
-        }
-    }
-	
     private void runGivenScenarios(Configuration configuration,
 			ScenarioDefinition scenario, CandidateSteps... candidateSteps)
 			throws Throwable {
@@ -112,17 +97,35 @@
         reporter.beforeExamples(scenario.getSteps(), table);
 		for (Map<String,String> tableRow : table.getRows() ) {
 			reporter.example(tableRow);
-			runScenario(configuration, scenario, tableRow, candidateSteps);
+			runScenarioSteps(configuration, scenario, tableRow, candidateSteps);
 		}
 		reporter.afterExamples();
 	}
 
-	private void runScenario(Configuration configuration,
+    private void runStorySteps(StoryDefinition story, boolean embeddedStory, Stage stage, CandidateSteps... candidateSteps) {
+        Step[] steps = stepCreator.createStepsFrom(story, stage, embeddedStory, candidateSteps);
+        runSteps(steps);
+    }
+
+	private void runScenarioSteps(Configuration configuration,
 			ScenarioDefinition scenario, Map<String, String> tableRow, CandidateSteps... candidateSteps) {
         Step[] steps = stepCreator.createStepsFrom(scenario, tableRow, candidateSteps);
-		runSteps(steps, false);
-	};
+		runSteps(steps);		
+	}
 
+    /**
+     * Runs a list of steps. 
+     * 
+     * @param steps the Steps to run
+     */
+    private void runSteps(Step[] steps) {
+        if ( steps == null || steps.length == 0 ) return;
+        state = new FineSoFar();
+        for (Step step : steps) {
+            state.run(step);
+        }
+    }
+    
     private class SomethingHappened implements State {
         public void run(Step step) {
             StepResult result = step.doNotPerform();


To unsubscribe from this list please visit:

http://xircles.codehaus.org/manage_email

Reply via email to