- Revision
- 686
- Author
- sirenian
- Date
- 2007-02-25 10:03:05 -0600 (Sun, 25 Feb 2007)
Log Message
[EK] Renaming of tasks and behaviour runner for consistency
Modified Paths
- trunk/build.xml
- trunk/core/src/behaviour/org/jbehave/core/RunBehaviour.java
- trunk/core/src/java/org/jbehave/core/Run.java
- trunk/extensions/ant/src/behaviour/org/jbehave/ant/AllBehaviours.java
- trunk/extensions/ant/src/behaviour/org/jbehave/ant/FailingBehaviourClass.java
- trunk/extensions/ant/src/java/org/jbehave/ant/BehaviourRunnerTask.java
Added Paths
- trunk/core/src/java/org/jbehave/core/BehaviourRunner.java
- trunk/extensions/ant/src/behaviour/org/jbehave/ant/BehaviourRunnerTaskBehaviour.java
- trunk/extensions/ant/src/behaviour/org/jbehave/ant/StoryRunnerTaskBehaviour.java
- trunk/extensions/ant/src/java/org/jbehave/ant/StoryRunnerTask.java
Removed Paths
Diff
Modified: trunk/build.xml (685 => 686)
--- trunk/build.xml 2007-02-04 18:24:46 UTC (rev 685) +++ trunk/build.xml 2007-02-25 16:03:05 UTC (rev 686) @@ -41,8 +41,8 @@ <!-- examples --> <property name="example" value="hellbound" /> <property name="example.behaviours" value="com.sirenian.hellbound.AllBehaviours" /> - <property name="behaviour.runner.task" value="org.jbehave.ant.JBehaveTask"/> - <property name="story.runner.task" value="org.jbehave.ant.JBehaveStoryTask"/> + <property name="behaviour.runner.task" value="org.jbehave.ant.BehaviourRunnerTask"/> + <property name="story.runner.task" value="org.jbehave.ant.StoryRunnerTask"/> <!-- general targets --> <target name="clean" description="Clean out output directory">
Modified: trunk/core/src/behaviour/org/jbehave/core/RunBehaviour.java (685 => 686)
--- trunk/core/src/behaviour/org/jbehave/core/RunBehaviour.java 2007-02-04 18:24:46 UTC (rev 685) +++ trunk/core/src/behaviour/org/jbehave/core/RunBehaviour.java 2007-02-25 16:03:05 UTC (rev 686) @@ -43,13 +43,13 @@ public void shouldRunClassFromArgumentSuccessfully() { runCount = 0; - new Run(nullPrintStream).verifyBehaviour(RunnableBehaviour.class); + new BehaviourRunner(nullPrintStream).verifyBehaviour(RunnableBehaviour.class); Ensure.that(runCount == 1); } public void shouldRunTwoClassesFromArgumentsSuccessfully() { runCount = 0; - Run run = new Run(nullPrintStream); + BehaviourRunner run = new BehaviourRunner(nullPrintStream); run.verifyBehaviour(RunnableBehaviour.class); run.verifyBehaviour(RunnableBehaviour.class); Ensure.that(runCount == 2); @@ -57,13 +57,13 @@ public void shouldRunClassNameFromArgumentSuccessfully() throws ClassNotFoundException { runCount = 0; - new Run(nullPrintStream).verifyBehaviour(RunnableBehaviour.class.getName()); + new BehaviourRunner(nullPrintStream).verifyBehaviour(RunnableBehaviour.class.getName()); Ensure.that(runCount == 1); } public void shouldRunClassNamePlusOneMethodSuccessfully() throws ClassNotFoundException { runCount = 0; - Run run = new Run(nullPrintStream); + BehaviourRunner run = new BehaviourRunner(nullPrintStream); run.verifyBehaviour(RunnableBehaviourWithTwoMethods.class.getName() + ":" + "shouldRunNumberOne"); ensureThat(run.succeeded(), eq(true)); ensureThat(runCount, eq(1)); @@ -72,13 +72,13 @@ public void shouldRunClassNameUsingCustomClassLoader() throws ClassNotFoundException { runCount = 0; - new Run(nullPrintStream, new CustomClassLoader(false)).verifyBehaviour(RunnableBehaviour.class.getName()); + new BehaviourRunner(nullPrintStream, new CustomClassLoader(false)).verifyBehaviour(RunnableBehaviour.class.getName()); Ensure.that(runCount == 1); } public void shouldFailToRunClassNameUsingInvalidClassLoader() throws ClassNotFoundException { try { - new Run(nullPrintStream, new CustomClassLoader(true)) + new BehaviourRunner(nullPrintStream, new CustomClassLoader(true)) .verifyBehaviour(RunnableBehaviour.class.getName()); } catch (ClassNotFoundException e) { Ensure.that(runCount == 0); @@ -97,7 +97,7 @@ if ( invalid ){ throw new ClassNotFoundException(); } - return Run.class.getClassLoader().loadClass(name); + return BehaviourRunner.class.getClassLoader().loadClass(name); } } }
Added: trunk/core/src/java/org/jbehave/core/BehaviourRunner.java (0 => 686)
--- trunk/core/src/java/org/jbehave/core/BehaviourRunner.java (rev 0) +++ trunk/core/src/java/org/jbehave/core/BehaviourRunner.java 2007-02-25 16:03:05 UTC (rev 686) @@ -0,0 +1,75 @@ +package org.jbehave.core; + +import java.io.PrintStream; +import java.io.PrintWriter; + +import org.jbehave.core.behaviour.BehaviourClass; +import org.jbehave.core.behaviour.BehaviourVerifier; +import org.jbehave.core.listener.PlainTextListener; +import org.jbehave.core.util.Timer; + + +/** + * This is the entry point to run one or more [EMAIL PROTECTED] BehaviourClass}. + * Classes are loaded using the ClassLoader injected, which defaults to the current context + * ClassLoader. + * + * @author <a href="" PROTECTED]">Dan North</a> + * @author Mauro Talevi + */ +public class BehaviourRunner { + private boolean succeeded = true; + private final PrintWriter writer; + private ClassLoader classLoader; + + public BehaviourRunner(PrintStream out) { + this(out, Thread.currentThread().getContextClassLoader()); + } + + public BehaviourRunner(PrintStream out, ClassLoader classLoader) { + this.writer = new PrintWriter(out); + this.classLoader = classLoader; + } + + public boolean succeeded() { + return succeeded; + } + + public void verifyBehaviour(String behaviourLocator) throws ClassNotFoundException { + String className = behaviourLocator; + String methodName = ""; + int index = behaviourLocator.indexOf(':'); + if (index >= 0) { + className = behaviourLocator.substring(0, index); + methodName = behaviourLocator.substring(index + 1); + } + verifyBehaviour(classLoader.loadClass(className), methodName); + } + + public void verifyBehaviour(Class classToVerify) { + verifyBehaviour(classToVerify, ""); + } + + public void verifyBehaviour(Class classToVerify, String methodName) { + PlainTextListener textListener = new PlainTextListener(new PrintWriter(writer), new Timer()); + BehaviourVerifier verifier = new BehaviourVerifier(textListener); + verifier.verifyBehaviour(new BehaviourClass(classToVerify, methodName, verifier)); + textListener.printReport(); + succeeded = succeeded && !textListener.hasBehaviourFailures(); + } + + public static void main(String[] args) { + try { + BehaviourRunner run = new BehaviourRunner(System.out); + for (int i = 0; i < args.length; i++) { + run.verifyBehaviour(args[i]); + } + System.exit(run.succeeded() ? 0 : 1); + } catch (ClassNotFoundException e) { + e.printStackTrace(); + System.exit(1); + } + } + + +}
Modified: trunk/core/src/java/org/jbehave/core/Run.java (685 => 686)
--- trunk/core/src/java/org/jbehave/core/Run.java 2007-02-04 18:24:46 UTC (rev 685) +++ trunk/core/src/java/org/jbehave/core/Run.java 2007-02-25 16:03:05 UTC (rev 686) @@ -1,75 +1,21 @@ package org.jbehave.core; import java.io.PrintStream; -import java.io.PrintWriter; -import org.jbehave.core.behaviour.BehaviourClass; -import org.jbehave.core.behaviour.BehaviourVerifier; -import org.jbehave.core.listener.PlainTextListener; -import org.jbehave.core.util.Timer; - - /** - * This is the entry point to run one or more [EMAIL PROTECTED] BehaviourClass}. - * Classes are loaded using the ClassLoader injected, which defaults to the current context - * ClassLoader. - * - * @author <a href="" PROTECTED]">Dan North</a> - * @author Mauro Talevi + * @deprecated poorly named, use BehaviourRunner instead */ -public class Run { - private boolean succeeded = true; - private final PrintWriter writer; - private ClassLoader classLoader; +public class Run extends BehaviourRunner { public Run(PrintStream out) { - this(out, Thread.currentThread().getContextClassLoader()); + super(out); } - + public Run(PrintStream out, ClassLoader classLoader) { - this.writer = new PrintWriter(out); - this.classLoader = classLoader; + super(out, classLoader); } - - public boolean succeeded() { - return succeeded; - } - - public void verifyBehaviour(String behaviourLocator) throws ClassNotFoundException { - String className = behaviourLocator; - String methodName = ""; - int index = behaviourLocator.indexOf(':'); - if (index >= 0) { - className = behaviourLocator.substring(0, index); - methodName = behaviourLocator.substring(index + 1); - } - verifyBehaviour(classLoader.loadClass(className), methodName); - } - public void verifyBehaviour(Class classToVerify) { - verifyBehaviour(classToVerify, ""); - } - - public void verifyBehaviour(Class classToVerify, String methodName) { - PlainTextListener textListener = new PlainTextListener(new PrintWriter(writer), new Timer()); - BehaviourVerifier verifier = new BehaviourVerifier(textListener); - verifier.verifyBehaviour(new BehaviourClass(classToVerify, methodName, verifier)); - textListener.printReport(); - succeeded = succeeded && !textListener.hasBehaviourFailures(); - } - public static void main(String[] args) { - try { - Run run = new Run(System.out); - for (int i = 0; i < args.length; i++) { - run.verifyBehaviour(args[i]); - } - System.exit(run.succeeded() ? 0 : 1); - } catch (ClassNotFoundException e) { - e.printStackTrace(); - System.exit(1); - } + BehaviourRunner.main(args); } - - }
Modified: trunk/extensions/ant/src/behaviour/org/jbehave/ant/AllBehaviours.java (685 => 686)
--- trunk/extensions/ant/src/behaviour/org/jbehave/ant/AllBehaviours.java 2007-02-04 18:24:46 UTC (rev 685) +++ trunk/extensions/ant/src/behaviour/org/jbehave/ant/AllBehaviours.java 2007-02-25 16:03:05 UTC (rev 686) @@ -16,8 +16,8 @@ public Class[] getBehaviours() { return new Class[] { - JBehaveTaskBehaviour.class, - JBehaveStoryTaskBehaviour.class + BehaviourRunnerTaskBehaviour.class, + StoryRunnerTaskBehaviour.class }; } }
Added: trunk/extensions/ant/src/behaviour/org/jbehave/ant/BehaviourRunnerTaskBehaviour.java (0 => 686)
--- trunk/extensions/ant/src/behaviour/org/jbehave/ant/BehaviourRunnerTaskBehaviour.java (rev 0) +++ trunk/extensions/ant/src/behaviour/org/jbehave/ant/BehaviourRunnerTaskBehaviour.java 2007-02-25 16:03:05 UTC (rev 686) @@ -0,0 +1,162 @@ +/* + * Created on 19-Jul-2004 + * + * (c) 2003-2004 ThoughtWorks + * + * See license.txt for licence details + */ +package org.jbehave.ant; + + +import java.io.File; +import java.util.Arrays; +import java.util.Collection; +import java.util.List; + +import net.sf.cotta.utils.ClassPath; +import net.sf.cotta.utils.ClassPathLocator; + +import org.apache.tools.ant.BuildException; +import org.apache.tools.ant.Project; +import org.apache.tools.ant.Task; +import org.apache.tools.ant.types.FileSet; +import org.apache.tools.ant.types.Path; +import org.jbehave.core.Block; +import org.jbehave.core.BehaviourRunner; +import org.jbehave.core.minimock.UsingMiniMock; +import org.jbehave.core.mock.Matcher; + + +public class BehaviourRunnerTaskBehaviour extends UsingMiniMock { + private BehaviourRunnerTask task; + private StubCommandRunner runner = new StubCommandRunner(); + private StubFilesetParser filesetParser = new StubFilesetParser(); + + public void setUp() { + task = new BehaviourRunnerTask(runner, filesetParser); + Project project = new Project(); + project.setCoreLoader(getClass().getClassLoader()); + task.setProject(project); + Path path = task.createClasspath(); + addToPathContains(path, getClass()); + addToPathContains(path, BehaviourRunner.class); + } + + private void addToPathContains(Path path, Class aClass) { + ClassPathLocator behaviourClassPathLocator = new ClassPathLocator(aClass); + path.createPathElement().setLocation(new File(behaviourClassPathLocator.locate().path())); + } + + public void shouldRunASingleBehaviourClass() throws Exception { + task.setBehavioursClassName(BehaviourClassOne.class.getName()); + runner.valueToReturn = 0; + task.execute(); + + ensureThat(runner.taskLog, sameInstanceAs(task)); + String[] actualCommand = runner.commandLineLog; + ensureThat(actualCommand[0].matches(".*java.*"), eq(true)); + List list = Arrays.asList(actualCommand); + ensureThat(list, collectionContains(BehaviourClassOne.class.getName())); + } + + private Matcher collectionContains(final Object item) { + return new Matcher() { + public boolean matches(Object arg) { + return ((Collection)arg).contains(item); + } + + public String toString() { + return "Collection that contains <" + item + ">"; + } + }; + } + + public void shouldRunBehavioursFoundInFileSet() { + + FileSet fileSet = new FileSet(); + + task.addBehaviours(fileSet); + task.execute(); + + List list = Arrays.asList(runner.commandLineLog); + ensureThat(list, collectionContains(BehaviourClassOne.class.getName())); + ensureThat(list, collectionContains(BehaviourClassTwo.class.getName())); + + } + + public void shouldUseClasspathFromClasspathElement() throws Exception { + Path path = task.createClasspath(); + Path.PathElement element = path.createPathElement(); + + ClassPath classPath = new ClassPathLocator(String.class).locate(); + String pathToRuntimeJar = classPath.path(); + element.setPath(pathToRuntimeJar); + + task.setBehavioursClassName(BehaviourClassOne.class.getName()); + + task.execute(); + + List list = Arrays.asList(runner.commandLineLog); + int classPathSwitchElement = list.indexOf("-classpath"); + ensureThat(classPathSwitchElement, not(eq(-1))); + String classPaths = (String) list.get(classPathSwitchElement + 1); + String[] classPathArray = classPaths.split(File.pathSeparator); + ensureThat(Arrays.asList(classPathArray), collectionContains(pathToRuntimeJar)); + } + + public void shouldFailTheBuildWhenVerificationFails() throws Exception { + final String behaviourClassName = FailingBehaviourClass.class.getName(); + task.setBehavioursClassName(behaviourClassName); + runner.valueToReturn = 1; + + Exception exception = runAndCatch(BuildException.class, new Block() { + public void run() throws Exception { + task.execute(); + } + }); + ensureThat(exception, isNotNull()); + } + + +/* TODO + public void shouldFailTheBuildWhenFirstSpecFails() throws Exception { + // setup + task.createVerify().setName("jbehave.extensions.ant.FailingSpec"); + task.createVerify().setName("jbehave.extensions.ant.SpecOne"); + BehaviourClassOne.wasCalled = false; // i hate this! + + // execute + ensureThrows(BuildException.class, new Block() { + public void run() { + task.execute(); + } + }); + + // verify + Ensure.that("SpecOne should not have been run", !BehaviourClassOne.wasCalled); + } + +*/ + + private static class StubCommandRunner implements CommandRunner { + private int valueToReturn; + private Task taskLog; + private String[] commandLineLog; + + public int fork(Task task, String[] commandline) { + taskLog = task; + commandLineLog = commandline; + return valueToReturn; + } + } + + private static class StubFilesetParser implements FilesetParser { + + public String[] getClassNames(FileSet fileset, Project project) { + return new String[] { + BehaviourClassOne.class.getName(), + BehaviourClassTwo.class.getName() + }; + } + } +}
Modified: trunk/extensions/ant/src/behaviour/org/jbehave/ant/FailingBehaviourClass.java (685 => 686)
--- trunk/extensions/ant/src/behaviour/org/jbehave/ant/FailingBehaviourClass.java 2007-02-04 18:24:46 UTC (rev 685) +++ trunk/extensions/ant/src/behaviour/org/jbehave/ant/FailingBehaviourClass.java 2007-02-25 16:03:05 UTC (rev 686) @@ -13,7 +13,7 @@ * @author <a href="" PROTECTED]">Damian Guy</a> * Date: 19-Jul-2004 * - * For use from [EMAIL PROTECTED] JBehaveTaskBehaviour} + * For use from [EMAIL PROTECTED] BehaviourRunnerTaskBehaviour} */ public class FailingBehaviourClass { public void shouldFail() throws Exception {
Deleted: trunk/extensions/ant/src/behaviour/org/jbehave/ant/JBehaveStoryTaskBehaviour.java (685 => 686)
--- trunk/extensions/ant/src/behaviour/org/jbehave/ant/JBehaveStoryTaskBehaviour.java 2007-02-04 18:24:46 UTC (rev 685) +++ trunk/extensions/ant/src/behaviour/org/jbehave/ant/JBehaveStoryTaskBehaviour.java 2007-02-25 16:03:05 UTC (rev 686) @@ -1,127 +0,0 @@ -package org.jbehave.ant; - - -import java.io.File; -import java.util.Arrays; -import java.util.Collection; -import java.util.List; - -import net.sf.cotta.utils.ClassPath; -import net.sf.cotta.utils.ClassPathLocator; - -import org.apache.tools.ant.BuildException; -import org.apache.tools.ant.Project; -import org.apache.tools.ant.Task; -import org.apache.tools.ant.types.FileSet; -import org.apache.tools.ant.types.Path; -import org.jbehave.core.Block; -import org.jbehave.core.mock.Matcher; -import org.jbehave.core.mock.UsingMatchers; - -public class JBehaveStoryTaskBehaviour extends UsingMatchers { - - private StubCommandRunner runner = new StubCommandRunner(); - private JBehaveStoryTask task = new JBehaveStoryTask(); - private StubFilesetParser filesetParser = new StubFilesetParser(); - - public void setUp() { - task = new JBehaveStoryTask(runner, filesetParser); - Project project = new Project(); - project.setCoreLoader(getClass().getClassLoader()); - task.setProject(project); - } - - - private Matcher collectionContains(final Object item) { - return new Matcher() { - public boolean matches(Object arg) { - return ((Collection)arg).contains(item); - } - - public String toString() { - return "Collection that contains <" + item + ">"; - } - }; - } - - public void shouldRunASingleStoryClass() throws Exception { - task.setStoryClassName(StoryClassOne.class.getName()); - runner.valueToReturn = 0; - - task.execute(); - - ensureThat(runner.taskLog, sameInstanceAs(task)); - String[] actualCommand = runner.commandLineLog; - ensureThat(actualCommand[0].matches(".*java.*"), eq(true)); - List list = Arrays.asList(actualCommand); - ensureThat(list, collectionContains(StoryClassOne.class.getName())); - } - - public void shouldRunStoriesFoundInFileSet() { - - FileSet fileSet = new FileSet(); - - task.addStories(fileSet); - task.execute(); - - List list = Arrays.asList(runner.commandLineLog); - ensureThat(list, collectionContains(StoryClassOne.class.getName())); - ensureThat(list, collectionContains(StoryClassTwo.class.getName())); - - } - - public void shouldUseClasspathFromClasspathElement() throws Exception { - Path path = task.createClasspath(); - Path.PathElement element = path.createPathElement(); - - ClassPath classPath = new ClassPathLocator(String.class).locate(); - String pathToRuntimeJar = classPath.path(); - element.setPath(pathToRuntimeJar); - - task.setStoryClassName(BehaviourClassOne.class.getName()); - - task.execute(); - - List list = Arrays.asList(runner.commandLineLog); - int classPathSwitchElement = list.indexOf("-classpath"); - ensureThat(classPathSwitchElement, not(eq(-1))); - String classPaths = (String) list.get(classPathSwitchElement + 1); - String[] classPathArray = classPaths.split(File.pathSeparator); - ensureThat(Arrays.asList(classPathArray), collectionContains(pathToRuntimeJar)); - } - - public void shouldFailTheBuildWhenVerificationFails() throws Exception { - final String storyClassName = FailingStoryClass.class.getName(); - task.setStoryClassName(storyClassName); - runner.valueToReturn = 1; - - Exception exception = runAndCatch(BuildException.class, new Block() { - public void run() throws Exception { - task.execute(); - } - }); - ensureThat(exception, isNotNull()); - } - - private static class StubCommandRunner implements CommandRunner { - private int valueToReturn; - private Task taskLog; - private String[] commandLineLog; - - public int fork(Task task, String[] commandline) { - taskLog = task; - commandLineLog = commandline; - return valueToReturn; - } - } - - private static class StubFilesetParser implements FilesetParser { - - public String[] getClassNames(FileSet fileset, Project project) { - return new String[] { - StoryClassOne.class.getName(), - StoryClassTwo.class.getName() - }; - } - } -}
Deleted: trunk/extensions/ant/src/behaviour/org/jbehave/ant/JBehaveTaskBehaviour.java (685 => 686)
--- trunk/extensions/ant/src/behaviour/org/jbehave/ant/JBehaveTaskBehaviour.java 2007-02-04 18:24:46 UTC (rev 685) +++ trunk/extensions/ant/src/behaviour/org/jbehave/ant/JBehaveTaskBehaviour.java 2007-02-25 16:03:05 UTC (rev 686) @@ -1,162 +0,0 @@ -/* - * Created on 19-Jul-2004 - * - * (c) 2003-2004 ThoughtWorks - * - * See license.txt for licence details - */ -package org.jbehave.ant; - - -import java.io.File; -import java.util.Arrays; -import java.util.Collection; -import java.util.List; - -import net.sf.cotta.utils.ClassPath; -import net.sf.cotta.utils.ClassPathLocator; - -import org.apache.tools.ant.BuildException; -import org.apache.tools.ant.Project; -import org.apache.tools.ant.Task; -import org.apache.tools.ant.types.FileSet; -import org.apache.tools.ant.types.Path; -import org.jbehave.core.Block; -import org.jbehave.core.Run; -import org.jbehave.core.minimock.UsingMiniMock; -import org.jbehave.core.mock.Matcher; - - -public class JBehaveTaskBehaviour extends UsingMiniMock { - private JBehaveTask task; - private StubCommandRunner runner = new StubCommandRunner(); - private StubFilesetParser filesetParser = new StubFilesetParser(); - - public void setUp() { - task = new JBehaveTask(runner, filesetParser); - Project project = new Project(); - project.setCoreLoader(getClass().getClassLoader()); - task.setProject(project); - Path path = task.createClasspath(); - addToPathContains(path, getClass()); - addToPathContains(path, Run.class); - } - - private void addToPathContains(Path path, Class aClass) { - ClassPathLocator behaviourClassPathLocator = new ClassPathLocator(aClass); - path.createPathElement().setLocation(new File(behaviourClassPathLocator.locate().path())); - } - - public void shouldRunASingleBehaviourClass() throws Exception { - task.setBehavioursClassName(BehaviourClassOne.class.getName()); - runner.valueToReturn = 0; - task.execute(); - - ensureThat(runner.taskLog, sameInstanceAs(task)); - String[] actualCommand = runner.commandLineLog; - ensureThat(actualCommand[0].matches(".*java.*"), eq(true)); - List list = Arrays.asList(actualCommand); - ensureThat(list, collectionContains(BehaviourClassOne.class.getName())); - } - - private Matcher collectionContains(final Object item) { - return new Matcher() { - public boolean matches(Object arg) { - return ((Collection)arg).contains(item); - } - - public String toString() { - return "Collection that contains <" + item + ">"; - } - }; - } - - public void shouldRunBehavioursFoundInFileSet() { - - FileSet fileSet = new FileSet(); - - task.addBehaviours(fileSet); - task.execute(); - - List list = Arrays.asList(runner.commandLineLog); - ensureThat(list, collectionContains(BehaviourClassOne.class.getName())); - ensureThat(list, collectionContains(BehaviourClassTwo.class.getName())); - - } - - public void shouldUseClasspathFromClasspathElement() throws Exception { - Path path = task.createClasspath(); - Path.PathElement element = path.createPathElement(); - - ClassPath classPath = new ClassPathLocator(String.class).locate(); - String pathToRuntimeJar = classPath.path(); - element.setPath(pathToRuntimeJar); - - task.setBehavioursClassName(BehaviourClassOne.class.getName()); - - task.execute(); - - List list = Arrays.asList(runner.commandLineLog); - int classPathSwitchElement = list.indexOf("-classpath"); - ensureThat(classPathSwitchElement, not(eq(-1))); - String classPaths = (String) list.get(classPathSwitchElement + 1); - String[] classPathArray = classPaths.split(File.pathSeparator); - ensureThat(Arrays.asList(classPathArray), collectionContains(pathToRuntimeJar)); - } - - public void shouldFailTheBuildWhenVerificationFails() throws Exception { - final String behaviourClassName = FailingBehaviourClass.class.getName(); - task.setBehavioursClassName(behaviourClassName); - runner.valueToReturn = 1; - - Exception exception = runAndCatch(BuildException.class, new Block() { - public void run() throws Exception { - task.execute(); - } - }); - ensureThat(exception, isNotNull()); - } - - -/* TODO - public void shouldFailTheBuildWhenFirstSpecFails() throws Exception { - // setup - task.createVerify().setName("jbehave.extensions.ant.FailingSpec"); - task.createVerify().setName("jbehave.extensions.ant.SpecOne"); - BehaviourClassOne.wasCalled = false; // i hate this! - - // execute - ensureThrows(BuildException.class, new Block() { - public void run() { - task.execute(); - } - }); - - // verify - Ensure.that("SpecOne should not have been run", !BehaviourClassOne.wasCalled); - } - -*/ - - private static class StubCommandRunner implements CommandRunner { - private int valueToReturn; - private Task taskLog; - private String[] commandLineLog; - - public int fork(Task task, String[] commandline) { - taskLog = task; - commandLineLog = commandline; - return valueToReturn; - } - } - - private static class StubFilesetParser implements FilesetParser { - - public String[] getClassNames(FileSet fileset, Project project) { - return new String[] { - BehaviourClassOne.class.getName(), - BehaviourClassTwo.class.getName() - }; - } - } -}
Added: trunk/extensions/ant/src/behaviour/org/jbehave/ant/StoryRunnerTaskBehaviour.java (0 => 686)
--- trunk/extensions/ant/src/behaviour/org/jbehave/ant/StoryRunnerTaskBehaviour.java (rev 0) +++ trunk/extensions/ant/src/behaviour/org/jbehave/ant/StoryRunnerTaskBehaviour.java 2007-02-25 16:03:05 UTC (rev 686) @@ -0,0 +1,127 @@ +package org.jbehave.ant; + + +import java.io.File; +import java.util.Arrays; +import java.util.Collection; +import java.util.List; + +import net.sf.cotta.utils.ClassPath; +import net.sf.cotta.utils.ClassPathLocator; + +import org.apache.tools.ant.BuildException; +import org.apache.tools.ant.Project; +import org.apache.tools.ant.Task; +import org.apache.tools.ant.types.FileSet; +import org.apache.tools.ant.types.Path; +import org.jbehave.core.Block; +import org.jbehave.core.mock.Matcher; +import org.jbehave.core.mock.UsingMatchers; + +public class StoryRunnerTaskBehaviour extends UsingMatchers { + + private StubCommandRunner runner = new StubCommandRunner(); + private StoryRunnerTask task = new StoryRunnerTask(); + private StubFilesetParser filesetParser = new StubFilesetParser(); + + public void setUp() { + task = new StoryRunnerTask(runner, filesetParser); + Project project = new Project(); + project.setCoreLoader(getClass().getClassLoader()); + task.setProject(project); + } + + + private Matcher collectionContains(final Object item) { + return new Matcher() { + public boolean matches(Object arg) { + return ((Collection)arg).contains(item); + } + + public String toString() { + return "Collection that contains <" + item + ">"; + } + }; + } + + public void shouldRunASingleStoryClass() throws Exception { + task.setStoryClassName(StoryClassOne.class.getName()); + runner.valueToReturn = 0; + + task.execute(); + + ensureThat(runner.taskLog, sameInstanceAs(task)); + String[] actualCommand = runner.commandLineLog; + ensureThat(actualCommand[0].matches(".*java.*"), eq(true)); + List list = Arrays.asList(actualCommand); + ensureThat(list, collectionContains(StoryClassOne.class.getName())); + } + + public void shouldRunStoriesFoundInFileSet() { + + FileSet fileSet = new FileSet(); + + task.addStories(fileSet); + task.execute(); + + List list = Arrays.asList(runner.commandLineLog); + ensureThat(list, collectionContains(StoryClassOne.class.getName())); + ensureThat(list, collectionContains(StoryClassTwo.class.getName())); + + } + + public void shouldUseClasspathFromClasspathElement() throws Exception { + Path path = task.createClasspath(); + Path.PathElement element = path.createPathElement(); + + ClassPath classPath = new ClassPathLocator(String.class).locate(); + String pathToRuntimeJar = classPath.path(); + element.setPath(pathToRuntimeJar); + + task.setStoryClassName(BehaviourClassOne.class.getName()); + + task.execute(); + + List list = Arrays.asList(runner.commandLineLog); + int classPathSwitchElement = list.indexOf("-classpath"); + ensureThat(classPathSwitchElement, not(eq(-1))); + String classPaths = (String) list.get(classPathSwitchElement + 1); + String[] classPathArray = classPaths.split(File.pathSeparator); + ensureThat(Arrays.asList(classPathArray), collectionContains(pathToRuntimeJar)); + } + + public void shouldFailTheBuildWhenVerificationFails() throws Exception { + final String storyClassName = FailingStoryClass.class.getName(); + task.setStoryClassName(storyClassName); + runner.valueToReturn = 1; + + Exception exception = runAndCatch(BuildException.class, new Block() { + public void run() throws Exception { + task.execute(); + } + }); + ensureThat(exception, isNotNull()); + } + + private static class StubCommandRunner implements CommandRunner { + private int valueToReturn; + private Task taskLog; + private String[] commandLineLog; + + public int fork(Task task, String[] commandline) { + taskLog = task; + commandLineLog = commandline; + return valueToReturn; + } + } + + private static class StubFilesetParser implements FilesetParser { + + public String[] getClassNames(FileSet fileset, Project project) { + return new String[] { + StoryClassOne.class.getName(), + StoryClassTwo.class.getName() + }; + } + } +}
Modified: trunk/extensions/ant/src/java/org/jbehave/ant/BehaviourRunnerTask.java (685 => 686)
--- trunk/extensions/ant/src/java/org/jbehave/ant/BehaviourRunnerTask.java 2007-02-04 18:24:46 UTC (rev 685) +++ trunk/extensions/ant/src/java/org/jbehave/ant/BehaviourRunnerTask.java 2007-02-25 16:03:05 UTC (rev 686) @@ -1,53 +1,31 @@ -package org.jbehave.ant; - -import org.apache.tools.ant.BuildException; -import org.apache.tools.ant.types.Path; -import org.jbehave.core.Run; -import org.jbehave.core.behaviour.Behaviours; - -/** -* Ant Task to verify Behaviours -* -* @author Mauro Talevi -*/ -public class BehaviourRunnerTask extends AbstractJavaTask { - - public BehaviourRunnerTask() { - super(new CommandRunnerImpl()); - } - - private String behavioursClassName; - private Run runner = new Run(System.out); - - public void execute() throws BuildException { - try { - Behaviours behaviours = loadBehaviours(behavioursClassName); - Class[] classes = behaviours.getBehaviours(); - for (int i = 0; i < classes.length; i++) { - runner.verifyBehaviour(classes[i]); - } - } catch (Exception e) { - String message = "Failed to verify behaviours "+behavioursClassName; - log(message, e); - throw new BuildException(message, e); - } - } - - private void log(String message, Exception e) { - log(message); - e.printStackTrace(); - } - - public void setBehavioursClassName(String behavioursClassName) { - this.behavioursClassName = behavioursClassName; - } - - private Behaviours loadBehaviours(String name) throws InstantiationException, IllegalAccessException, ClassNotFoundException { - return (Behaviours) createClassLoader().loadClass(name).newInstance(); - } - - private ClassLoader createClassLoader() { - Path classPath = commandLine.createClasspath(getProject()); - return getProject().createClassLoader(classPath); - } -} +/* + * Created on 19-Jul-2004 + * + * (c) 2003-2004 ThoughtWorks + * + * See license.txt for licence details + */ +package org.jbehave.ant; + +import org.apache.tools.ant.types.FileSet; +import org.jbehave.core.BehaviourRunner; + +public class BehaviourRunnerTask extends AbstractRunnerTask { + + public BehaviourRunnerTask() { + this(new CommandRunnerImpl(), new TrimFilesetParser()); + } + + public BehaviourRunnerTask(CommandRunner runner, FilesetParser filesetParser) { + super(BehaviourRunner.class, runner, filesetParser); + } + + public void setBehavioursClassName(String behavioursClassName) { + super.addTarget(behavioursClassName); + } + + public void addBehaviours(FileSet fileset) { + super.addFilesetTarget(fileset); + } + +}
Deleted: trunk/extensions/ant/src/java/org/jbehave/ant/JBehaveStoryTask.java (685 => 686)
--- trunk/extensions/ant/src/java/org/jbehave/ant/JBehaveStoryTask.java 2007-02-04 18:24:46 UTC (rev 685) +++ trunk/extensions/ant/src/java/org/jbehave/ant/JBehaveStoryTask.java 2007-02-25 16:03:05 UTC (rev 686) @@ -1,25 +0,0 @@ -package org.jbehave.ant; - -import org.apache.tools.ant.types.FileSet; -import org.jbehave.core.story.StoryRunner; - -public class JBehaveStoryTask extends AbstractRunnerTask { - - public JBehaveStoryTask() { - this(new CommandRunnerImpl(), new TrimFilesetParser()); - } - - public JBehaveStoryTask(CommandRunner runner, FilesetParser parser) { - super(StoryRunner.class, runner, parser); - } - - public void setStoryClassName(String storyClassName) { - super.addTarget(storyClassName); - } - - - public void addStories(FileSet fileset) { - super.addFilesetTarget(fileset); - } - -}
Deleted: trunk/extensions/ant/src/java/org/jbehave/ant/JBehaveTask.java (685 => 686)
--- trunk/extensions/ant/src/java/org/jbehave/ant/JBehaveTask.java 2007-02-04 18:24:46 UTC (rev 685) +++ trunk/extensions/ant/src/java/org/jbehave/ant/JBehaveTask.java 2007-02-25 16:03:05 UTC (rev 686) @@ -1,31 +0,0 @@ -/* - * Created on 19-Jul-2004 - * - * (c) 2003-2004 ThoughtWorks - * - * See license.txt for licence details - */ -package org.jbehave.ant; - -import org.apache.tools.ant.types.FileSet; -import org.jbehave.core.Run; - -public class JBehaveTask extends AbstractRunnerTask { - - public JBehaveTask() { - this(new CommandRunnerImpl(), new TrimFilesetParser()); - } - - public JBehaveTask(CommandRunner runner, FilesetParser filesetParser) { - super(Run.class, runner, filesetParser); - } - - public void setBehavioursClassName(String behavioursClassName) { - super.addTarget(behavioursClassName); - } - - public void addBehaviours(FileSet fileset) { - super.addFilesetTarget(fileset); - } - -}
Added: trunk/extensions/ant/src/java/org/jbehave/ant/StoryRunnerTask.java (0 => 686)
--- trunk/extensions/ant/src/java/org/jbehave/ant/StoryRunnerTask.java (rev 0) +++ trunk/extensions/ant/src/java/org/jbehave/ant/StoryRunnerTask.java 2007-02-25 16:03:05 UTC (rev 686) @@ -0,0 +1,25 @@ +package org.jbehave.ant; + +import org.apache.tools.ant.types.FileSet; +import org.jbehave.core.story.StoryRunner; + +public class StoryRunnerTask extends AbstractRunnerTask { + + public StoryRunnerTask() { + this(new CommandRunnerImpl(), new TrimFilesetParser()); + } + + public StoryRunnerTask(CommandRunner runner, FilesetParser parser) { + super(StoryRunner.class, runner, parser); + } + + public void setStoryClassName(String storyClassName) { + super.addTarget(storyClassName); + } + + + public void addStories(FileSet fileset) { + super.addFilesetTarget(fileset); + } + +}
To unsubscribe from this list please visit:
