1 /* BatchTest.java */
2
3 package org.quilt.frontend.ant;
4
5 import java.util.Vector;
6 import java.io.File;
7
8 import org.apache.tools.ant.DirectoryScanner;
9 import org.apache.tools.ant.Project;
10 import org.apache.tools.ant.types.FileSet;
11
12 import org.quilt.framework.*;
13
14 /***
15 * Stores Ant filesets and convert them to QuiltTests.
16 *
17 * @author <a href="jddixon@users.sourceforge.net">Jim Dixon</a>
18 */
19 public class BatchTest extends QuiltTest {
20
21 /*** The project this batch test was found in. */
22 private Project project;
23 /*** Filesets named in the batchtest element in the build.xml. */
24 private Vector filesets = new Vector();
25
26 /////////////////////////////////////////////////////////////////
27 /***
28 * One-arg constructor.
29 *
30 * @param p The project that the QuiltTask is in.
31 */
32 public BatchTest(Project p){
33 project = p;
34 }
35
36 /***
37 * Method used by Ant to add filesets. Ant first calls
38 * createBatchTest, then in a second pass calls this method
39 * to add filesets.
40 *
41 * @param fs One of possibly many filesets within the batch test
42 */
43 public void addFileSet(FileSet fs) {
44 filesets.addElement(fs);
45 }
46
47 /////////////////////////////////////////////////////////////////
48 /***
49 * Converts the fileset names into QuiltTests and adds them to the
50 * list of tests maintained by the scheduler. This can only be
51 * done once; after the tests are unbatched, the vector of batch
52 * tests is deleted.
53 *
54 * @param sch Scheduler responsible for maintaining list of tests
55 * and scheduling the actual running of tests.
56 */
57 public void unbatch (Scheduler sch) {
58 // don't schedule tests that won't get run
59 if (runMe(project)) {
60 Vector v = new Vector();
61 int size = filesets.size();
62 for (int i = 0; i < size; i++) {
63 FileSet fs = (FileSet) filesets.elementAt(i);
64 DirectoryScanner ds = fs.getDirectoryScanner(project);
65 ds.scan();
66 String[] files = ds.getIncludedFiles();
67 for (int j = 0; j < files.length; j++) {
68 boolean gottaMatch = false;
69 String name = files[j];
70 String className = "";
71 if (name.endsWith(".class")) {
72 gottaMatch = true;
73 className = name.substring(0,
74 name.length() - ".class".length());
75 } else if (name.endsWith(".java")) {
76 gottaMatch = true;
77 className = name.substring(0,
78 name.length() - ".java".length());
79 }
80 if (gottaMatch) {
81 // replace forward or reverse slashes with dots
82 className =
83 className.replace(File.separatorChar, '.');
84 // make a QuiltTest with default attributes
85 QuiltTest qt = (QuiltTest) clone();
86 qt.setName(className);
87 // add the cloned QuiltTest to the list of tests
88 sch.addTest(qt);
89 }
90 }
91 }
92 }
93 }
94 }
This page was automatically generated by Maven