- Revision
- 674
- Author
- sirenian
- Date
- 2007-01-23 13:50:54 -0600 (Tue, 23 Jan 2007)
Log Message
[EK] Added filesets to the JBehaveTask.
Modified Paths
- trunk/build.xml
- trunk/core/src/java/org/jbehave/core/mock/UsingMatchers.java
- trunk/extensions/ant/src/behaviour/org/jbehave/ant/JBehaveTaskBehaviour.java
- trunk/extensions/ant/src/java/org/jbehave/ant/AbstractJavaTask.java
- trunk/extensions/ant/src/java/org/jbehave/ant/BehaviourRunnerTask.java
- trunk/extensions/ant/src/java/org/jbehave/ant/JBehaveTask.java
Added Paths
Diff
Modified: trunk/build.xml (673 => 674)
--- trunk/build.xml 2007-01-22 12:00:53 UTC (rev 673) +++ trunk/build.xml 2007-01-23 19:50:54 UTC (rev 674) @@ -191,12 +191,13 @@ <target name="run-example-behaviours" depends="compile-example-behaviours" description="Runs behaviours for examples"> <taskdef name="jbehave" classname="${behaviour.runner.task}" classpath="${jbehave_jar}" /> - <jbehave behavioursClassName="${example.behaviours}"> + <jbehave><!-- behavioursClassName="${example.behaviours}"--> <classpath> <path refid="libs" /> <pathelement path="${example_classes_dir}" /> <pathelement path="${example_behaviour_classes_dir}" /> </classpath> + <behaviours dir="${example_behaviour_classes_dir}" includes="**/*Behaviour.class" /> </jbehave> </target>
Modified: trunk/core/src/java/org/jbehave/core/mock/UsingMatchers.java (673 => 674)
--- trunk/core/src/java/org/jbehave/core/mock/UsingMatchers.java 2007-01-22 12:00:53 UTC (rev 673) +++ trunk/core/src/java/org/jbehave/core/mock/UsingMatchers.java 2007-01-23 19:50:54 UTC (rev 674) @@ -122,7 +122,7 @@ } public CustomMatcher sameInstanceAs(final Object expectedArg) { - return new CustomMatcher("same instance as <" + expectedArg.toString() + ">") { + return new CustomMatcher("same instance as <" + expectedArg + ">") { public boolean matches(Object arg) { return expectedArg == arg; }
Modified: trunk/extensions/ant/src/behaviour/org/jbehave/ant/JBehaveTaskBehaviour.java (673 => 674)
--- trunk/extensions/ant/src/behaviour/org/jbehave/ant/JBehaveTaskBehaviour.java 2007-01-22 12:00:53 UTC (rev 673) +++ trunk/extensions/ant/src/behaviour/org/jbehave/ant/JBehaveTaskBehaviour.java 2007-01-23 19:50:54 UTC (rev 674) @@ -17,8 +17,10 @@ import net.sf.cotta.utils.ClassPathLocator; import org.apache.tools.ant.BuildException; +import org.apache.tools.ant.DirectoryScanner; 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; @@ -29,9 +31,10 @@ 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); + task = new JBehaveTask(runner, filesetParser); Project project = new Project(); project.setCoreLoader(getClass().getClassLoader()); task.setProject(project); @@ -84,7 +87,20 @@ ensureThat(list, collectionContains(BehaviourClassOne.class.getName())); ensureThat(list, collectionContains(BehaviourClassTwo.class.getName())); } + + 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(); @@ -150,4 +166,14 @@ 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/java/org/jbehave/ant/AbstractJavaTask.java (673 => 674)
--- trunk/extensions/ant/src/java/org/jbehave/ant/AbstractJavaTask.java 2007-01-22 12:00:53 UTC (rev 673) +++ trunk/extensions/ant/src/java/org/jbehave/ant/AbstractJavaTask.java 2007-01-23 19:50:54 UTC (rev 674) @@ -43,5 +43,4 @@ public void setMaxmemory(int megabyte) { createJvmarg().setLine("-Xmx" + megabyte + "m"); } - }
Modified: trunk/extensions/ant/src/java/org/jbehave/ant/BehaviourRunnerTask.java (673 => 674)
--- trunk/extensions/ant/src/java/org/jbehave/ant/BehaviourRunnerTask.java 2007-01-22 12:00:53 UTC (rev 673) +++ trunk/extensions/ant/src/java/org/jbehave/ant/BehaviourRunnerTask.java 2007-01-23 19:50:54 UTC (rev 674) @@ -1,6 +1,9 @@ package org.jbehave.ant; +import java.util.ArrayList; +import java.util.List; + import org.apache.tools.ant.BuildException; import org.apache.tools.ant.types.Path; import org.jbehave.core.Run; @@ -48,4 +51,5 @@ return getProject().createClassLoader(classPath); } + }
Added: trunk/extensions/ant/src/java/org/jbehave/ant/FilesetParser.java (0 => 674)
--- trunk/extensions/ant/src/java/org/jbehave/ant/FilesetParser.java (rev 0) +++ trunk/extensions/ant/src/java/org/jbehave/ant/FilesetParser.java 2007-01-23 19:50:54 UTC (rev 674) @@ -0,0 +1,10 @@ +package org.jbehave.ant; + +import org.apache.tools.ant.Project; +import org.apache.tools.ant.types.FileSet; + +public interface FilesetParser { + + String[] getClassNames(FileSet fileset, Project project); + +}
Modified: trunk/extensions/ant/src/java/org/jbehave/ant/JBehaveTask.java (673 => 674)
--- trunk/extensions/ant/src/java/org/jbehave/ant/JBehaveTask.java 2007-01-22 12:00:53 UTC (rev 673) +++ trunk/extensions/ant/src/java/org/jbehave/ant/JBehaveTask.java 2007-01-23 19:50:54 UTC (rev 674) @@ -7,6 +7,8 @@ */ package org.jbehave.ant; +import java.io.File; +import java.util.ArrayList; import java.util.Iterator; import java.util.LinkedList; import java.util.List; @@ -15,19 +17,26 @@ import net.sf.cotta.utils.ClassPathLocator; import org.apache.tools.ant.BuildException; +import org.apache.tools.ant.DirectoryScanner; +import org.apache.tools.ant.types.FileSet; import org.apache.tools.ant.types.Path; import org.jbehave.core.Run; public class JBehaveTask extends AbstractJavaTask { private List behaviourClassList = new LinkedList(); + private List filesets = new ArrayList(); + private final FilesetParser filesetParser; public JBehaveTask() { + super(); + this.filesetParser = new TrimFilesetParser(); } - public JBehaveTask(CommandRunner runner) { + public JBehaveTask(CommandRunner runner, FilesetParser filesetParser) { super(runner); + this.filesetParser = filesetParser; } - + public BehaviourClassDetails createVerify() { BehaviourClassDetails details = new BehaviourClassDetails(); behaviourClassList.add(details); @@ -55,15 +64,37 @@ } private void invoke() { + + for (Iterator iter = filesets.iterator(); iter.hasNext();) { + FileSet fileset = (FileSet) iter.next(); + + + + String[] classNames = filesetParser.getClassNames(fileset, getProject()); + for (int i = 0; i < classNames.length; i++) { + setBehavioursClassName(classNames[i]); + } + + } + commandLine.setClassname(Run.class.getName()); for (Iterator iterator = behaviourClassList.iterator(); iterator.hasNext();) { BehaviourClassDetails behaviourClassDetail = (BehaviourClassDetails) iterator.next(); commandLine.createArgument().setLine(behaviourClassDetail.getName()); } + + + if (run() != 0) { throw new BuildException("behaviour verification FAILED"); } log("Behaviours verification passed"); } + + + public void addBehaviours(FileSet fileset) { + filesets.add(fileset); + + } }
Added: trunk/extensions/ant/src/java/org/jbehave/ant/TrimFilesetParser.java (0 => 674)
--- trunk/extensions/ant/src/java/org/jbehave/ant/TrimFilesetParser.java (rev 0) +++ trunk/extensions/ant/src/java/org/jbehave/ant/TrimFilesetParser.java 2007-01-23 19:50:54 UTC (rev 674) @@ -0,0 +1,41 @@ +package org.jbehave.ant; + +import java.io.File; +import java.util.ArrayList; +import java.util.List; + +import org.apache.tools.ant.DirectoryScanner; +import org.apache.tools.ant.Project; +import org.apache.tools.ant.types.FileSet; + +public class TrimFilesetParser implements FilesetParser { + + public String[] getClassNames(FileSet fileset, Project project) { + DirectoryScanner ds = fileset.getDirectoryScanner(project); + String[] includedFiles = ds.getIncludedFiles(); + List classnames = new ArrayList(); + for (int i = 0; i < includedFiles.length; i++) { + String filename = includedFiles[i].replace('\\', '/'); + + File base = ds.getBasedir(); + File found = new File(base, filename); + + String classname = found.getAbsolutePath().substring( + base.getAbsolutePath().length() + 1).replace('\\', '/') + .replace('/', '.'); + + int classnameIndex = classname.indexOf(".class"); + if (classnameIndex != -1) { + classname = classname.substring(0, classnameIndex); + } + + classnameIndex = classname.indexOf(".java"); + if (classnameIndex != -1) { + classname = classname.substring(0, classnameIndex); + } + classnames.add(classname); + } + return (String[]) classnames.toArray(new String[classnames.size()]); + } + +}
To unsubscribe from this list please visit:
