1   package junit.quilt.textui;
2   
3   
4   
5   import junit.textui.*;
6   
7   import junit.runner.*;
8   
9   import junit.framework.*;
10  
11  
12  
13  import junit.quilt.*;
14  
15  import junit.quilt.reports.*;
16  
17  import junit.quilt.runner.*;
18  
19  import junit.quilt.framework.*;
20  
21  
22  
23  import java.io.*;
24  
25  
26  
27  import org.apache.commons.cli.*;
28  
29  
30  
31  public class Quilt
32  
33      extends junit.textui.TestRunner
34  
35  {
36  
37      private QuiltRegistry registry = null;
38  
39      private QuiltSuiteLoader loader = null;
40  
41  
42  
43      public Quilt( QuiltRegistry registry ) {
44  
45  	this.registry = registry;
46  
47  	loader = new QuiltSuiteLoader( registry.getInstClassLoader() );
48  
49      }
50  
51  
52  
53      public TestSuiteLoader getLoader() {
54  
55  	return loader;
56  
57      }
58  
59  
60  
61      protected TestResult exec( String testCase, boolean wait ) {
62  
63  	Test suite = getTest( testCase );
64  
65  	return doRun( suite, wait );
66  
67      }
68  
69  
70  
71      public static void main(String args[]) {
72  
73  	try {
74  
75  	    Options opts = new QuiltOptions();
76  
77  	    CommandLine cl = null;
78  
79  	    
80  
81  	    opts.addOption('w', "wait", true,
82  
83  			   "Pause after tests?");
84  
85  	    opts.addOption('c', "class", true,
86  
87  			   "Huh?");
88  
89  	    opts.addOption('F', "reportfile", true,
90  
91  			   "File to write coverage report to.");
92  
93  	    try {
94  
95  		cl = opts.parse( args );
96  
97  	    } catch (Exception e) {
98  
99  		usage();
100 
101 		System.exit( -2 );
102 
103 	    }
104 
105 	    
106 
107 	    if (cl.hasOption( QuiltOptions.OPT_HELP )) {
108 
109 		usage();
110 
111 		System.exit(0);
112 
113 	    } else if (cl.hasOption( QuiltOptions.OPT_VERSION )) {
114 		version();
115 		System.exit(0);
116 	    } else if (!cl.hasOption(QuiltOptions.OPT_REGISTRY)) {
117 		err("***You must specify a registry class using the -q option");
118 	    } else if (!cl.hasOption(QuiltOptions.OPT_TEST)) {
119 		err("***You must specify a test class using the -t option");
120 	    } else if (!cl.hasOption(QuiltOptions.OPT_REPORT)) {
121 		err("***You must specify a report class using the -r option");
122 	    }
123 
124 	    String quiltReg = cl.getOptionValue( QuiltOptions.OPT_REGISTRY );
125 
126 	    String testCase = cl.getOptionValue( QuiltOptions.OPT_TEST );
127 
128 	    String reporter = cl.getOptionValue( QuiltOptions.OPT_REPORT );
129 
130 	    String reportFile = cl.getOptionValue( 'F' );
131 
132 
133 	    Class reg = null;
134 	    try {
135 		    reg = Class.forName( quiltReg );
136 	    } catch (Exception cnfe) {
137 		    System.out.println("Couldn't find registry class: " + quiltReg + "; please ensure it's on the CLASSPATH");
138 		    cnfe.printStackTrace();
139 		    System.exit(-2);
140 	    }
141 
142 	    QuiltRegistry registry = (QuiltRegistry) reg.newInstance();
143 
144 	    
145 
146 	    Quilt q = new Quilt( registry );
147 
148 	    TestResult r = q.exec( testCase, cl.hasOption( 'w' ) );
149 
150 
151 	    if (!r.wasSuccessful()) 
152 
153 		System.exit( -1 );
154 
155 
156 
157 	    Class rep = Class.forName( reporter );
158 
159 	    Report report = (Report) rep.newInstance();
160 
161 
162 
163 	    OutputStream out = System.out;
164 
165 	    if (reportFile != null) 
166 
167 		out = new FileOutputStream( reportFile );
168 
169 
170 
171 	    report.writeReport( out,
172 
173 				registry );
174 
175 	    System.exit(0);
176 
177 	} catch (Exception e) {
178 
179 	    e.printStackTrace();
180 
181 	    System.exit(-2);
182 
183 	}
184 
185     }
186 
187 
188 
189     public static String version() {
190 
191 	return "JUnit Quilt version 0.1 (alpha)";
192 
193     }
194 
195     public static void usage() {
196 
197 	System.err.println( version() );
198 
199 	System.err.println();
200 
201 	System.err.println("Usage: java junit.quilt.textui.Quilt");
202 
203 	System.err.println("\t-q | --registry\tRegistry Class which manages instrumentation.");
204 
205 	System.err.println("\t-t | --test\tTest Class to execute.");
206 
207 	System.err.println("\t-w | --wait\tWait after each test is executed.");
208 
209 	System.err.println("\t-F | --reportfile\tFile to write report to.");
210 
211 	System.err.println("\t-v | --version\tPrint Version information.");
212 
213 	System.err.println("\t-h | --help\tPrint this message");
214 
215     }
216     
217     private static void err(String msg) {
218 	System.err.println();
219 	System.err.println(msg);
220 	System.err.println();
221 	usage();
222 	System.exit(-2);
223     }
224 
225 }
226 
This page was automatically generated by Maven