Title: [674] trunk: [EK] Added filesets to the JBehaveTask.

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:

http://xircles.codehaus.org/manage_email

Reply via email to