1 /* Runner.java */
2
3 package org.quilt.runner;
4
5 import java.io.BufferedReader;
6 import java.io.PrintWriter;
7 import java.io.StringReader;
8 import java.io.StringWriter;
9
10 import junit.framework.*;
11 import org.apache.tools.ant.util.StringUtils;
12
13 import org.quilt.framework.QuiltTest;
14 import org.quilt.reports.Formatter;
15
16 /***
17 * Abstract class extended by Quilt test runners.
18 */
19 public abstract class Runner extends QuiltTest
20 implements RunnerConst, TestListener {
21
22 public abstract void run (); // constructor provides QuiltTest instance
23 public abstract int getRetCode();
24
25 // STATIC METHODS ///////////////////////////////////////////////
26 public static String getFilteredTrace(Throwable t, boolean filtertrace) {
27 String trace = StringUtils.getStackTrace(t);
28 return filterStack(trace, filtertrace);
29 }
30
31 /////////////////////////////////////////////////////////////////
32 // FOCUS -- LOOK AT THIS CAREFULLY
33 /////////////////////////////////////////////////////////////////
34
35 /***
36 * Filters stack traces from Ant, Quilt, and JUnit classes. These
37 * are usually meaningless to users, who wants to concentrate on
38 * their own code.
39 */
40 public static String filterStack(String stack, boolean filtertrace) {
41 if ( ! filtertrace ) {
42 return stack;
43 }
44 StringWriter sw = new StringWriter();
45 PrintWriter pw = new PrintWriter(sw);
46 StringReader sr = new StringReader(stack);
47 BufferedReader br = new BufferedReader(sr);
48
49 String line;
50 try {
51 while ((line = br.readLine()) != null) {
52 if (!filterLine(line)) {
53 pw.println(line);
54 }
55 }
56 } catch (Exception IOException) {
57 return stack; // return the stack unfiltered
58 }
59 return sw.toString();
60 }
61
62 private static boolean filterLine(String line) {
63 for (int i = 0; i < DEFAULT_TRACE_FILTERS.length; i++) {
64 if (line.indexOf(DEFAULT_TRACE_FILTERS[i]) > 0) {
65 return true;
66 }
67 }
68 return false;
69 }
70 // NON-STATIC METHODS ///////////////////////////////////////////
71 /*** Add a result formatter. */
72 public abstract void addFormatter(Formatter f);
73 // TestListener INTERFACE ///////////////////////////////////////
74 /*** A failure (or error) has occurred. */
75 public abstract void addFailure(Test test, Throwable t);
76 /*** A failure (or error) has occurred. */
77 public abstract void addFailure(Test test, AssertionFailedError t);
78 /*** An unexpected error has occurred. */
79 public abstract void addError(Test test, Throwable t);
80 /*** Method called at start of individual test suite. */
81 public abstract void startTest(Test t);
82 /*** Method called at end of individual test run. */
83 public abstract void endTest(Test test);
84 /*** Process a block of output. */
85 public abstract void handleOutput(String line);
86 /*** Process an error message */
87 public abstract void handleErrorOutput(String line);
88 /*** Flush standard output. */
89 public abstract void handleFlush(String line);
90 /*** Flush the error output stream. */
91 public abstract void handleErrorFlush(String line);
92 }
This page was automatically generated by Maven