KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > quilt > reports > SummaryFormatter


1 /* SummaryFormatter.java */
2
3 // //////////////////////////////////////////////////////////////////
4
// MODIFY TO EXTEND BaseFormatter ? /////////////////////////////////
5
// //////////////////////////////////////////////////////////////////
6

7 package org.quilt.reports;
8
9 import java.text.NumberFormat JavaDoc;
10 import java.io.IOException JavaDoc;
11 import java.io.OutputStream JavaDoc;
12
13 import junit.framework.AssertionFailedError;
14 import junit.framework.Test;
15
16 import org.apache.tools.ant.BuildException;
17
18 import org.quilt.framework.*;
19 import org.quilt.runner.Runner;
20
21 public class SummaryFormatter implements Formatter {
22
23     private boolean filtertrace = false;
24     private Runner runner = null;
25
26     private NumberFormat JavaDoc nf = NumberFormat.getInstance();
27     private OutputStream JavaDoc out;
28
29     private boolean withOutAndErr = false;
30     private String JavaDoc systemOutput = null;
31     private String JavaDoc systemError = null;
32
33     public SummaryFormatter() {}
34
35     // FORMATTER INTERFACE //////////////////////////////////////////
36

37     /** Called at the end of the Ant/Quilt test run. */
38     public void endTestSuite(QuiltTest qt) throws BuildException {
39         StringBuffer JavaDoc sb = new StringBuffer JavaDoc("Tests run: " + qt.runCount()
40             + ", Failures: " + qt.failureCount()
41             + ", Errors: " + qt.errorCount()
42             + ", Time elapsed: "+ nf.format(qt.getRunTime() / 1000.0)
43             + " sec\n" );
44
45         if (withOutAndErr) {
46             if (systemOutput != null && systemOutput.length() > 0) {
47                 sb.append("Output:\n" + systemOutput + "\n");
48             }
49             if (systemError != null && systemError.length() > 0) {
50                 sb.append("Error:\n " + systemError + "\n");
51             }
52         }
53
54         try {
55             out.write(sb.toString().getBytes());
56             out.flush();
57         } catch (IOException JavaDoc e) {
58             throw new BuildException("Unable to write summary output", e);
59         } finally {
60             if (out != System.out && out != System.err) {
61                 try {
62                     out.close();
63                 } catch (IOException JavaDoc e) {}
64             }
65         }
66     }
67     /** Enable filtering of Ant/Quilt/JUnit lines from stack traces. */
68     public void setFiltertrace(boolean b) {
69         filtertrace = b; // NEVER USED
70
}
71     /** Where to direct output. */
72     public void setOutput(OutputStream JavaDoc out) {
73         this.out = out;
74     }
75     /** Select the runner to be used. */
76     public void setRunner(Runner testrunner) {
77         runner = testrunner;
78     }
79     /** Where to send system error output. */
80     public void setSystemError(String JavaDoc err) {
81         systemError = err;
82     }
83     /** Where to send standard output. */
84     public void setSystemOutput(String JavaDoc out) {
85         systemOutput = out;
86     }
87     /** Called at start of Ant/Quilt test run. */
88     public void startTestSuite(QuiltTest suite) {}
89
90     // INTERFACE TESTLISTENER ///////////////////////////////////////
91
/** An unexpected error occurred. */
92     public void addError(Test test, Throwable JavaDoc t) {}
93     /** A failure occurred. */
94     public void addFailure(Test test, Throwable JavaDoc t) {}
95     /** A failure occurred. */
96     public void addFailure(Test test, AssertionFailedError t) {
97         addFailure(test, (Throwable JavaDoc) t);
98     }
99     /** Called at end of JUnit test. */
100     public void endTest(Test test) {}
101     /** Called at beginning of JUnit test. */
102     public void startTest(Test t) {}
103    
104     // OTHER METHODS ////////////////////////////////////////////////
105
/**
106      * Ant-compatible method determining whether System.out and
107      * System.err should be echoed to the summary report.
108      */

109     public void setWithOutAndErr(boolean value) {
110         withOutAndErr = value;
111     }
112 }
113
Popular Tags