Title: [873] trunk: [Liz] Build is now working without maven (sorry, Mauro!) and running all behaviours and scenarios correctly.
Revision
873
Author
sirenian
Date
2008-07-20 09:17:53 -0500 (Sun, 20 Jul 2008)

Log Message

[Liz] Build is now working without maven (sorry, Mauro!) and running all behaviours and scenarios correctly. Also added functionality to replace newlines in args with system newlines (so it will work on any system).

Modified Paths

Diff

Modified: trunk/build.xml (872 => 873)

--- trunk/build.xml	2008-07-20 11:05:26 UTC (rev 872)
+++ trunk/build.xml	2008-07-20 14:17:53 UTC (rev 873)
@@ -1,225 +1,223 @@
-<project xmlns:artifact="urn:maven-artifact-ant" name="jbehave" default="good-distribution">
+<project name="jbehave" default="good-distribution">
+  <property name="version" value="1.1-SNAPSHOT" />
+  <echo message="Building version ${version}..." />
 
-	<!-- version -->
-	<property name="version" value="2.0-SNAPSHOT" />
-	<echo message="Building version ${version}..." />
+  <!-- modules -->
+  <property name="core.dir" location="jbehave-core" />
+  <property name="build.libs.dir" location="lib/build" />
+  <property name="production.libs.dir" location="lib/production" />
 
-	<!-- modules -->
-	<property name="core.dir" location="jbehave-core" />
+  <!-- build output structure -->
+  <property name="working.dir" location="working" />
+  <property name="jbehave.source" location="jbehave-core/src/java" />
+  <property name="jbehave.behaviour" location="jbehave-core/src/behaviour" />
+  <property name="jbehave.classes" location="${working.dir}/classes" />
+  <property name="jbehave.behaviour.classes" location="${working.dir}/behaviour" />
+  <property name="gameoflife.source" location="examples/gameoflife/src/java" />
+  <property name="gameoflife.behaviour" location="examples/gameoflife/src/behaviour" />
+  <property name="gameoflife.scenarios" location="examples/gameoflife/src/scenario" />
+  <property name="example.classes" location="${working.dir}/examples/classes" />
+  <property name="example.behaviour.classes" location="${working.dir}/examples/behaviour" />
+  <property name="example.scenario.classes" location="${working.dir}/examples/scenario" />
+  <property name="jbehave.zip" location="${working.dir}/jbehave-${version}.zip" />
+  <property name="dist.dir" location="${working.dir}/${version}" />
+  <property name="jbehave.jar" location="${dist.dir}/jbehave-${version}.jar" />
+  <property name="jbehave.src.zip" location="${dist.dir}/jbehave-${version}-src.zip" />
+  <property name="website.dist.dir" location="${dist.dir}/website" />
+  <property name="javadoc.dist.dir" location="${website.dist.dir}/javadoc/${version}" />
 
-	<!-- Maven POM for dependencies -->
-	<path id="maven-ant-tasks.classpath" path="lib/build/maven-ant-tasks-2.0.9.jar" />
-	<typedef resource="org/apache/maven/artifact/ant/antlib.xml" uri="urn:maven-artifact-ant" classpathref="maven-ant-tasks.classpath" />
-	<artifact:pom id="pom" file="jbehave-maven-plugin/pom.xml" />
+  <path id="production.libs">
+  	<fileset dir="${production.libs.dir}" includes="**/*.jar" />
+  </path>
 
-	<!-- libs -->
-	<!-- Note: these are not used ATM, replaced by pom dependencies which retrieves them from remote/local repo and 
-	avoids the need the check them in.  The dependencies used are in any case copied to ${working.dir}/lib for sake of clarity
-	and to use in IDE   It is also easy to distinguish between compile and test scope although not done at the moment.
-	-->
-	<property name="build.libs.dir" location="lib/build" />
-	<property name="production.libs.dir" location="lib/production" />
-	<path id="production.libs">
-		<fileset dir="${production.libs.dir}" includes="**/*.jar" />
-	</path>
+  <path id="build.libs">
+  	<path refid="production.libs" />
+  	<fileset dir="${build.libs.dir}"  includes="**/*.jar" />
+  </path>
+	
+  <!-- general targets -->
+  <target name="good-distribution"
+    depends="clean-working-dir, working-jbehave, working-examples, jbehave-jar"
+    description="Checks that JBehave works, builds the JBehave binary and zips up the project." />
+  	
+  <target name="clean-working-dir">
+  	<clean dir="${working.dir}" />
+  	<mkdir dir="${dist.dir}" />
+  </target>
+	
+  <macrodef name="clean">
+  	<attribute name="dir" />
+  	<sequential>
+  		<delete dir="@{dir}" />
+  		<mkdir dir="@{dir}" />
+  	</sequential>
+  </macrodef>
+  	
+  <!-- JBehave itself -->	
+  <target name="working-jbehave"
+  	depends="jbehave-classes, jbehave-behaviour-classes"
+  	description="Ensures that you have a working version of JBehave.">
+	<junit failureproperty="misbehaving" showoutput="true">
+		<formatter type="plain"/>
+		<classpath refid="build.libs" />
+		<classpath>
+			<pathelement path="${jbehave.classes}" />
+			<pathelement path="${jbehave.behaviour.classes}" />
+		</classpath>
+		  <batchtest fork="yes" todir="${working.dir}">
+		    <fileset dir="${jbehave.behaviour}">
+		      <include name="**/*Behaviour.java"/>
+		    </fileset>
+		  </batchtest>
+    </junit>
+  	<fail if="misbehaving" />
+  </target>
+	
+  <target name="jbehave-behaviour-classes"
+  	depends="jbehave-classes"
+  	description="Ensures compiled behaviour classes for JBehave.">
+  	<delete dir="${jbehave.behaviour.classes}" />
+  	<mkdir dir="${jbehave.behaviour.classes}" />
+  	<javac srcdir="${jbehave.behaviour}" destdir="${jbehave.behaviour.classes}">
+  		<classpath refid="build.libs" />
+  		<classpath>
+  			<pathelement path="${jbehave.classes}" />
+  		</classpath>
+  	</javac>
+	<copy todir="${jbehave.behaviour.classes}">
+    	<fileset dir="${jbehave.behaviour}" excludes="**/*.java" />
+  	</copy>
+  </target>
+	
+  <target name="jbehave-classes"
+  	description="Ensures compiled classes for JBehave.">
+  	<delete dir="${jbehave.classes}" />
+  	<mkdir dir="${jbehave.classes}" />
+	<javac srcdir="${jbehave.source}" destdir="${jbehave.classes}">
+		<classpath refid="production.libs" />
+	</javac>
+    <copy todir="${jbehave.classes}">
+      <fileset dir="${jbehave.source}" excludes="**/*.java" />
+    </copy>
+  </target>
 
-	<path id="build.libs">
-		<path refid="production.libs" />
-		<fileset dir="${build.libs.dir}" includes="**/*.jar" />
-	</path>
+  <!-- The examples -->
+  <target name="working-examples"
+  	depends="working-example-behaviours, working-example-scenarios"
+  	description="Ensures that the example projects work with JBehave effectively, from the JBehave jar." />
+  	
+  <target name="working-example-behaviours"
+  	depends="compiled-examples, compiled-example-behaviours, jbehave-jar"
+  	description="Ensures that examples behave.">
+	<junit failureproperty="misbehaving" showoutput="true">
+		<formatter type="plain"/>
+		<classpath refid="build.libs" />
+		<classpath>
+			<pathelement path="${example.classes}" />
+		 	<pathelement path="${example.behaviour.classes}" />
+  			<pathelement path="${jbehave.jar}"/>
+		</classpath>
+	  <batchtest fork="yes" todir="${working.dir}">
+	    <fileset dir="${gameoflife.behaviour}">
+	      <include name="**/*Behaviour.java"/>
+	    </fileset>
+	  </batchtest>
+    </junit>
+  	<fail if="misbehaving" />
+  </target>
+	
+  <target name="compiled-example-behaviours" depends="compiled-examples, jbehave-jar"
+	description="Ensures compiled example behaviour classes.">
+  	<delete dir="${example.behaviour.classes}"/>
+  	<mkdir dir="${example.behaviour.classes}"/>
+  	<javac srcdir="${gameoflife.behaviour}" destdir="${example.behaviour.classes}">
+  		<classpath>
+  			<pathelement path="${jbehave.jar}"/>
+  			<pathelement path="${example.classes}"/>
+  		</classpath>
+  		<classpath refid="build.libs"/>
+  	</javac>
+  </target>
+	
+  <target name="compiled-examples" description="Ensures compiled example classes." depends="jbehave-jar">
+	<delete dir="${example.classes}"/>
+	<mkdir dir="${example.classes}"/>
+  	<javac srcdir="${gameoflife.source}" destdir="${example.classes}">
+  		<classpath>
+  			<pathelement location="${jbehave.jar}"/>
+  		</classpath>
+  		<classpath refid="build.libs"/>
+  	</javac>
+  </target>
+	
+  <target name="working-example-scenarios" depends="compiled-example-behaviours, compiled-examples, compiled-example-scenarios, jbehave-jar"
+	description="Ensures that the scenarios for the examples work.">
+	<junit failureproperty="misbehaving" showoutput="true">
+		<formatter type="plain"/>
+		<classpath refid="build.libs" />
+		<classpath>
+			<pathelement path="${example.classes}" />
+			<pathelement path="${example.behaviour.classes}" />
+			<pathelement path="${example.scenario.classes}" />
+	  		<pathelement location="${jbehave.jar}"/>
+		</classpath>
+		  <batchtest fork="yes" todir="${working.dir}">
+		    <fileset dir="${gameoflife.scenarios}">
+		      <include name="com/lunivore/gameoflife/*.java" />
+		    </fileset>
+		  </batchtest>
+    </junit>
+  	<fail if="misbehaving"/>
+  </target>
+	
+  <target name="compiled-example-scenarios" depends="compiled-example-behaviours, compiled-examples, jbehave-jar"
+  	description="Ensures compiled classes for the examples' scenarios">
+	<delete dir="${example.scenario.classes}"/>
+	<mkdir dir="${example.scenario.classes}"/>
+  	<copy todir="${example.scenario.classes}">
+		<fileset dir="${gameoflife.scenarios}" excludes="**/*.java" />
+	</copy>
+  	<javac srcdir="${gameoflife.scenarios}" destdir="${example.scenario.classes}">
+  		<classpath refid="build.libs"/>
+		<classpath>
+			<pathelement path="${example.classes}" />
+			<pathelement path="${example.behaviour.classes}" />
+			<pathelement path="${jbehave.jar}" />
+		</classpath>
+  	</javac>
+  </target>
+  	
+  <target name="jbehave-jar"
+  	description="Produces a jar file in the distribution directory."
+  	depends="jbehave-classes">
+    <jar basedir="${jbehave.classes}" jarfile="${jbehave.jar}" />
+  </target>
 
-	<!-- build output structure -->
-	<property name="working.dir" location="target" />
-	<property name="jbehave.source" location="jbehave-core/src/java" />
-	<property name="jbehave.behaviour" location="jbehave-core/src/behaviour" />
-	<property name="jbehave.classes" location="${working.dir}/classes" />
-	<property name="jbehave.behaviour.classes" location="${working.dir}/behaviour" />
-	<property name="gameoflife.source" location="examples/gameoflife/src/java" />
-	<property name="gameoflife.behaviour" location="examples/gameoflife/src/behaviour" />
-	<property name="gameoflife.scenarios" location="examples/gameoflife/src/scenario" />
-	<property name="example.classes" location="${working.dir}/examples/classes" />
-	<property name="example.behaviour.classes" location="${working.dir}/examples/behaviour" />
-	<property name="example.scenario.classes" location="${working.dir}/examples/scenario" />
-	<property name="jbehave.zip" location="${working.dir}/jbehave-${version}.zip" />
-	<property name="dist.dir" location="${working.dir}/${version}" />
-	<property name="jbehave.jar" location="${dist.dir}/jbehave-${version}.jar" />
-	<property name="jbehave.src.zip" location="${dist.dir}/jbehave-${version}-src.zip" />
-	<property name="website.dist.dir" location="${dist.dir}/website" />
-	<property name="javadoc.dist.dir" location="${website.dist.dir}/javadoc/${version}" />
+  <target name="jbehave-src-zip" description="Assembles the source jar.">
+    <zip destfile="${jbehave.src.zip}" update="true" filesonly="true">
+      <zipfileset prefix="jbehave-${version}" dir="${jbehave.source}" />
+    </zip>
+  </target>
 
-	<!-- general targets -->
-	<target name="good-distribution" depends="clean, pom-dependencies, working-jbehave, working-examples, jbehave-jar" description="Checks that JBehave works, builds the JBehave binary and zips up the project." />
+  <!-- create website -->
+  <target name="javadoc" description="Generates javadocs.">
+    <mkdir dir="${javadoc.dist.dir}" />
+    <javadoc destdir="${javadoc.dist.dir}" windowtitle="JBehave API Documentation" verbose="false"
+      useexternalfile="true">
+      <fileset dir="${jbehave.source}">
+        <include name="*.java" />
+      </fileset>
+      <classpath refid="production.libs" />
+    </javadoc>
+  </target>
 
-	<target name="clean">
-		<clean dir="${working.dir}" />
-		<mkdir dir="${dist.dir}" />
-	</target>
+  <target name="website-content" description="Generates website content.">
+    <exec executable="ruby" failonerror="true">
+      <arg value="sitespec.rb" />
+      <arg value="${website.dist.dir}" />
+    </exec>
+  </target>
 
-	<macrodef name="clean">
-		<attribute name="dir" />
-		<sequential>
-			<delete dir="@{dir}" />
-			<mkdir dir="@{dir}" />
-		</sequential>
-	</macrodef>
+  <target name="website" depends="javadoc, website-content" description="Generates website." />
 
-	<target name="pom-dependencies">
-		<artifact:dependencies pathId="pom.classpath" filesetId="pom.dependencies" useScope="test">
-			<pom refid="pom" />
-		</artifact:dependencies>
-		<copy todir="${working.dir}/lib">
-			<fileset refid="pom.dependencies" />
-			<mapper type="flatten" />
-		</copy>
-	</target>
-
-	<!-- JBehave itself -->
-	<target name="working-jbehave" depends="pom-dependencies, jbehave-classes, jbehave-behaviour-classes" description="Ensures that you have a working version of JBehave.">
-		<junit failureproperty="misbehaving" showoutput="true" outputtoformatters="true">
-			<formatter type="plain" />
-			<classpath refid="pom.classpath" />
-			<classpath>
-				<pathelement path="${jbehave.classes}" />
-				<pathelement path="${jbehave.behaviour.classes}" />
-			</classpath>
-			<batchtest fork="yes" todir="${working.dir}">
-				<fileset dir="${jbehave.behaviour}">
-					<include name="**/*Behaviour.java" />
-				</fileset>
-			</batchtest>
-		</junit>
-		<fail if="${misbehaving}" />
-	</target>
-
-	<target name="jbehave-classes" depends="pom-dependencies" description="Ensures compiled classes for JBehave.">
-		<delete dir="${jbehave.classes}" />
-		<mkdir dir="${jbehave.classes}" />
-		<javac srcdir="${jbehave.source}" destdir="${jbehave.classes}">
-			<classpath refid="pom.classpath" />
-		</javac>
-		<copy todir="${jbehave.classes}">
-			<fileset dir="${jbehave.source}" excludes="**/*.java" />
-		</copy>
-	</target>
-
-	<target name="jbehave-behaviour-classes" depends="jbehave-classes" description="Ensures compiled behaviour classes for JBehave.">
-		<delete dir="${jbehave.behaviour.classes}" />
-		<mkdir dir="${jbehave.behaviour.classes}" />
-		<javac srcdir="${jbehave.behaviour}" destdir="${jbehave.behaviour.classes}">
-			<classpath refid="pom.classpath" />
-			<classpath>
-				<pathelement path="${jbehave.classes}" />
-			</classpath>
-		</javac>
-		<copy todir="${jbehave.behaviour.classes}">
-			<fileset dir="${jbehave.behaviour}" excludes="**/*.java" />
-		</copy>
-	</target>
-
-	<!-- The examples -->
-	<target name="working-examples" depends="working-example-behaviours, working-example-scenarios" description="Ensures that the example projects work with JBehave effectively, from the JBehave jar." />
-
-	<target name="working-example-behaviours" depends="compiled-examples, compiled-example-behaviours, jbehave-jar" description="Ensures that examples behave.">
-		<junit failureproperty="misbehaving" showoutput="true">
-			<formatter type="plain" />
-			<classpath refid="pom.classpath" />
-			<classpath>
-				<pathelement path="${example.classes}" />
-				<pathelement path="${example.behaviour.classes}" />
-				<pathelement path="${jbehave.jar}" />
-			</classpath>
-			<batchtest fork="yes" todir="${working.dir}">
-				<fileset dir="${gameoflife.behaviour}">
-					<include name="**/*Behaviour.java" />
-				</fileset>
-			</batchtest>
-		</junit>
-		<fail if="misbehaving" />
-	</target>
-
-	<target name="compiled-examples" description="Ensures compiled example classes." depends="pom-dependencies, jbehave-jar">
-		<delete dir="${example.classes}" />
-		<mkdir dir="${example.classes}" />
-		<javac srcdir="${gameoflife.source}" destdir="${example.classes}">
-			<classpath>
-				<pathelement location="${jbehave.jar}" />
-			</classpath>
-			<classpath refid="pom.classpath" />
-		</javac>
-	</target>
-
-	<target name="compiled-example-behaviours" depends="compiled-examples, jbehave-jar" description="Ensures compiled example behaviour classes.">
-		<delete dir="${example.behaviour.classes}" />
-		<mkdir dir="${example.behaviour.classes}" />
-		<javac srcdir="${gameoflife.behaviour}" destdir="${example.behaviour.classes}">
-			<classpath>
-				<pathelement path="${jbehave.jar}" />
-				<pathelement path="${example.classes}" />
-			</classpath>
-			<classpath refid="pom.classpath" />
-		</javac>
-	</target>
-
-	<target name="working-example-scenarios" depends="compiled-example-behaviours, compiled-examples, compiled-example-scenarios, jbehave-jar" description="Ensures that the scenarios for the examples work.">
-		<junit failureproperty="misbehaving" showoutput="true">
-			<formatter type="plain" />
-			<classpath refid="pom.classpath" />
-			<classpath>
-				<pathelement path="${example.classes}" />
-				<pathelement path="${example.behaviour.classes}" />
-				<pathelement path="${example.scenario.classes}" />
-				<pathelement location="${jbehave.jar}" />
-			</classpath>
-			<batchtest fork="yes" todir="${working.dir}">
-				<fileset dir="${gameoflife.scenarios}">
-					<include name="com/lunivore.gameoflife/*.java" />
-				</fileset>
-			</batchtest>
-		</junit>
-		<fail if="misbehaving" />
-	</target>
-
-	<target name="compiled-example-scenarios" depends="compiled-example-behaviours, compiled-examples, jbehave-jar" description="Ensures compiled classes for the examples' scenarios">
-		<delete dir="${example.scenario.classes}" />
-		<mkdir dir="${example.scenario.classes}" />
-		<javac srcdir="${gameoflife.scenarios}" destdir="${example.scenario.classes}">
-			<classpath refid="pom.classpath" />
-			<classpath>
-				<pathelement path="${example.classes}" />
-				<pathelement path="${example.behaviour.classes}" />
-				<pathelement path="${jbehave.jar}" />
-			</classpath>
-		</javac>
-	</target>
-
-	<target name="jbehave-jar" description="Produces a jar file in the distribution directory." depends="jbehave-classes">
-		<jar basedir="${jbehave.classes}" jarfile="${jbehave.jar}" />
-	</target>
-
-	<target name="jbehave-src-zip" description="Assembles the source jar.">
-		<zip destfile="${jbehave.src.zip}" update="true" filesonly="true">
-			<zipfileset prefix="jbehave-${version}" dir="${jbehave.source}" />
-		</zip>
-	</target>
-
-	<!-- create website -->
-	<target name="javadoc" depends="pom-dependencies" description="Generates javadocs.">
-		<mkdir dir="${javadoc.dist.dir}" />
-		<javadoc destdir="${javadoc.dist.dir}" windowtitle="JBehave API Documentation" verbose="false" useexternalfile="true">
-			<fileset dir="${jbehave.source}">
-				<include name="*.java" />
-			</fileset>
-			<classpath refid="pom.classpath" />
-		</javadoc>
-	</target>
-
-	<target name="website-content" description="Generates website content.">
-		<exec executable="ruby" failonerror="true">
-			<arg value="sitespec.rb" />
-			<arg value="${website.dist.dir}" />
-		</exec>
-	</target>
-
-	<target name="website" depends="javadoc, website-content" description="Generates website." />
-
 </project>

Modified: trunk/jbehave-core/src/behaviour/org/jbehave/scenario/ScenarioBehaviour.java (872 => 873)

--- trunk/jbehave-core/src/behaviour/org/jbehave/scenario/ScenarioBehaviour.java	2008-07-20 11:05:26 UTC (rev 872)
+++ trunk/jbehave-core/src/behaviour/org/jbehave/scenario/ScenarioBehaviour.java	2008-07-20 14:17:53 UTC (rev 873)
@@ -156,19 +156,19 @@
         }
 
         public void failed(String step, Throwable e) {
-            buffer.append(step+ " (FAILED)\n");
+            buffer.append(step+ " (FAILED)" + NL);
         }
 
         public void notPerformed(String step) {
-            buffer.append(step+ " (NOT PERFORMED)\n");
+            buffer.append(step+ " (NOT PERFORMED)" + NL);
         }
 
         public void pending(String step) {
-            buffer.append(step+ " (PENDING)\n");
+            buffer.append(step+ " (PENDING)" + NL);
         }
 
         public void successful(String step) {
-            buffer.append(step+"\n");
+            buffer.append(step+NL);
         }
 	    
 	}

Modified: trunk/jbehave-core/src/behaviour/org/jbehave/scenario/parser/scenarios/MyPendingScenario.java (872 => 873)

--- trunk/jbehave-core/src/behaviour/org/jbehave/scenario/parser/scenarios/MyPendingScenario.java	2008-07-20 11:05:26 UTC (rev 872)
+++ trunk/jbehave-core/src/behaviour/org/jbehave/scenario/parser/scenarios/MyPendingScenario.java	2008-07-20 14:17:53 UTC (rev 873)
@@ -1,7 +1,16 @@
 package org.jbehave.scenario.parser.scenarios;
 
+import java.io.ByteArrayOutputStream;
+import java.io.PrintStream;
+
 import org.jbehave.scenario.Scenario;
+import org.jbehave.scenario.parser.ScenarioFileLoader;
+import org.jbehave.scenario.reporters.PrintStreamScenarioReporter;
 
 public class MyPendingScenario extends Scenario {
 
+	public MyPendingScenario() {
+		// Making sure this doesn't output to the build while it's running
+		super(new ScenarioFileLoader(), new PrintStreamScenarioReporter(new PrintStream(new ByteArrayOutputStream())));
+	}
 }
\ No newline at end of file

Modified: trunk/jbehave-core/src/behaviour/org/jbehave/scenario/steps/CandidateStepBehaviour.java (872 => 873)

--- trunk/jbehave-core/src/behaviour/org/jbehave/scenario/steps/CandidateStepBehaviour.java	2008-07-20 11:05:26 UTC (rev 872)
+++ trunk/jbehave-core/src/behaviour/org/jbehave/scenario/steps/CandidateStepBehaviour.java	2008-07-20 14:17:53 UTC (rev 873)
@@ -87,6 +87,28 @@
 
         verify(reporter).successful("Then I live on the 1st floor");
     }
+    
+    @Test
+    public void shouldNotFailJustBecauseWeHaveDifferentNewlinesToTheOneTheScenarioWasWrittenIn() throws Exception {
+    	String windowsNewline = "\r\n";
+    	String unixNewline = "\n";
+    	String systemNewline = System.getProperty("line.separator");
+    	
+        SomeSteps someSteps = new SomeSteps();
+        CandidateStep candidateStep = new Then(
+        		"the grid should look like $grid", 
+        		SomeSteps.class.getMethod("aMethodWith", String.class), 
+        		someSteps, PATTERN_BUILDER, MONITOR);
+        Step step = candidateStep.createFrom(
+        		"Then the grid should look like" + windowsNewline +
+        		".." + unixNewline +
+        		".." + windowsNewline);
+        
+        step.perform();
+        ensureThat((String) someSteps.args, equalTo(
+        		".." + systemNewline +
+        		".." + systemNewline));
+    }
 
     public class SomeSteps extends Steps {
         private Object args;

Modified: trunk/jbehave-core/src/java/org/jbehave/scenario/steps/CandidateStep.java (872 => 873)

--- trunk/jbehave-core/src/java/org/jbehave/scenario/steps/CandidateStep.java	2008-07-20 11:05:26 UTC (rev 872)
+++ trunk/jbehave-core/src/java/org/jbehave/scenario/steps/CandidateStep.java	2008-07-20 14:17:53 UTC (rev 873)
@@ -44,7 +44,11 @@
             Object converted = convert(arg, method.getParameterTypes()[group]);
             args[group] = converted;
         }
-        return new Step() {
+        return createStep(stepAsString, args);
+    }
+
+	private Step createStep(final String stepAsString, final Object[] args) {
+		return new Step() {
             public StepResult perform() {
                 try {
                     method.invoke(steps, args);
@@ -66,7 +70,7 @@
             }
 
         };
-    }
+	}
 
     private Object convert(String value, Class<?> clazz) {
         if (clazz == Integer.class || clazz == int.class) {
@@ -77,10 +81,16 @@
             return Double.valueOf(value);
         } else if (clazz == Float.class || clazz == float.class) {
             return Float.valueOf(value);
+        } else if (clazz == String.class) {
+        	return replaceNewlinesWithSystemNewlines(value);
         }
         return value;
     }
 
-    protected abstract String precursor();
+    private Object replaceNewlinesWithSystemNewlines(String value) {
+		return value.replaceAll("(\n)|(\r\n)", System.getProperty("line.separator"));
+	}
 
+	protected abstract String precursor();
+
 }


To unsubscribe from this list please visit:

http://xircles.codehaus.org/manage_email

Reply via email to