Title: [1647] trunk/core/jbehave-core/src/main/java/org/jbehave/scenario/parser: JBEHAVE-290: Applied patch from Moss Collum and Jim Olsen that prevents stack overflow from very long steps on Windows.
Revision
1647
Author
mauro
Date
2010-05-20 13:19:36 -0500 (Thu, 20 May 2010)

Log Message

JBEHAVE-290:  Applied patch from Moss Collum and Jim Olsen that prevents stack overflow from very long steps on Windows.

Modified Paths

Diff

Modified: trunk/core/jbehave-core/src/behaviour/java/org/jbehave/scenario/parser/PatternScenarioParserBehaviour.java (1646 => 1647)

--- trunk/core/jbehave-core/src/behaviour/java/org/jbehave/scenario/parser/PatternScenarioParserBehaviour.java	2010-05-20 11:16:51 UTC (rev 1646)
+++ trunk/core/jbehave-core/src/behaviour/java/org/jbehave/scenario/parser/PatternScenarioParserBehaviour.java	2010-05-20 18:19:36 UTC (rev 1647)
@@ -183,6 +183,29 @@
     }
 
     @Test
+    public void shouldParseStoryWithVeryLongStep() {
+        String scenario = aScenarioWithAVeryLongGivenStep();
+        ensureThatScenarioCanBeParsed(scenario);
+    }
+
+    private String aScenarioWithAVeryLongGivenStep() {
+        StringBuilder longScenarioBuilder = new StringBuilder()
+                .append("Given all these examples:" + NL)
+                .append("|one|two|three|" + NL);
+        int numberOfLinesInStep = 50;
+        for (int i = 0; i < numberOfLinesInStep; i++) {
+            longScenarioBuilder.append("|a|sample|line|" + NL);
+        }
+        longScenarioBuilder.append("When I do something" + NL);
+        longScenarioBuilder.append("Then something should happen" + NL);
+        return longScenarioBuilder.toString();
+    }
+
+    private void ensureThatScenarioCanBeParsed(String scenario) {
+        parser.defineStoryFrom(scenario);
+    }
+
+    @Test
     public void shouldParseLongStoryWithKeywordSplitScenarios() {
     	ensureLongStoryCanBeParsed(parser);        
     }

Modified: trunk/core/jbehave-core/src/main/java/org/jbehave/scenario/parser/PatternScenarioParser.java (1646 => 1647)

--- trunk/core/jbehave-core/src/main/java/org/jbehave/scenario/parser/PatternScenarioParser.java	2010-05-20 11:16:51 UTC (rev 1646)
+++ trunk/core/jbehave-core/src/main/java/org/jbehave/scenario/parser/PatternScenarioParser.java	2010-05-20 18:19:36 UTC (rev 1647)
@@ -266,7 +266,7 @@
 				keywords.when(), keywords.then(), keywords.others());
 		String scenario = keywords.scenario();
 		String table = keywords.examplesTable();
-		return compile("((" + givenWhenThen + ") (.|\\s)*?)\\s*(\\Z|"
-				+ givenWhenThenSpaced + "|" + scenario + "|"+ table + ")");
+		return compile("((" + givenWhenThen + ") (.)*?)\\s*(\\Z|"
+				+ givenWhenThenSpaced + "|" + scenario + "|"+ table + ")", DOTALL);
 	}
 }


To unsubscribe from this list please visit:

http://xircles.codehaus.org/manage_email

Reply via email to