- 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: