1 45 package org.openejb.test; 46 47 import java.io.PrintStream ; 48 import java.util.Enumeration ; 49 50 import junit.framework.TestFailure; 51 import junit.framework.TestResult; 52 53 57 public class ResultPrinter extends junit.textui.ResultPrinter { 58 59 public ResultPrinter(PrintStream writer) { 60 super(writer); 61 } 62 63 public PrintStream writer(){ 64 return getWriter(); 65 } 66 67 public void printFailures(TestResult result) { 68 if (result.failureCount() != 0) { 69 writer().println("\n~~ Failure Results ~~~~~~~~~\n"); 70 if (result.failureCount() == 1) 71 writer().println("There was " + result.failureCount() + " failure:"); 72 else 73 writer().println("There were " + result.failureCount() + " failures:"); 74 75 int i = 1; 76 writer().println("\nFailure Summary:"); 77 for (Enumeration e= result.failures(); e.hasMoreElements(); i++) { 78 TestFailure failure= (TestFailure) e.nextElement(); 79 writer().println(i + ") " + failure.failedTest()); 80 } 81 i = 1; 82 writer().println("\nFailure Details:"); 83 for (Enumeration e= result.failures(); e.hasMoreElements(); i++) { 84 TestFailure failure= (TestFailure) e.nextElement(); 85 writer().println("\n"+ i + ") " + failure.failedTest()); 86 Throwable t= failure.thrownException(); 87 if (t.getMessage() != null) 88 writer().println("\t\"" + t.getMessage() + "\""); 89 else { 90 writer().println(); 91 failure.thrownException().printStackTrace(); 92 } 93 } 94 } 95 } 96 97 100 public void printHeader(TestResult result) { 101 if (result.wasSuccessful()) { 102 writer().println(); 103 writer().print("OK"); 104 writer().println (" (" + result.runCount() + " tests)"); 105 106 } else { 107 writer().println(); 108 writer().println("FAILURES!!!"); 109 writer().println("~~ Test Results ~~~~~~~~~~~~"); 110 writer().println(" Run: "+result.runCount()); 111 writer().println(" Failures: "+result.failureCount()); 112 writer().println(" Errors: "+result.errorCount()); 113 } 114 } 115 116 public void printErrors(TestResult result) { 117 if (result.errorCount() != 0) { 118 writer().println("\n~~ Error Results ~~~~~~~~~~~\n"); 119 if (result.errorCount() == 1) 120 writer().println("There was "+result.errorCount()+" error:"); 121 else 122 writer().println("There were "+result.errorCount()+" errors:"); 123 124 writer().println("\nError Summary:"); 125 int i = 1; 126 for (Enumeration e= result.errors(); e.hasMoreElements(); i++) { 127 TestFailure failure= (TestFailure) e.nextElement(); 128 writer().println(i + ") " + failure.failedTest()); 129 } 130 writer().println("\nError Details:"); 131 i = 1; 132 for (Enumeration e= result.errors(); e.hasMoreElements(); i++) { 133 TestFailure failure= (TestFailure)e.nextElement(); 134 writer().println(i+") "+failure.failedTest()); 135 String trace = getRelevantStackTrace(failure.thrownException()); 136 writer().println(trace); 137 } 138 } 139 } 140 141 public String getRelevantStackTrace(Throwable t){ 142 StringBuffer trace = new StringBuffer (); 143 144 try{ 145 java.io.ByteArrayOutputStream bos = new java.io.ByteArrayOutputStream (); 148 java.io.PrintWriter pw = new java.io.PrintWriter (bos); 149 t.printStackTrace(pw); 150 pw.close(); 151 152 java.io.BufferedReader reader = new java.io.BufferedReader (new java.io.StringReader (bos.toString())); 153 String line = reader.readLine(); 154 while(line != null) { 155 if (line.indexOf("at junit.framework") != -1) break; 156 if (line.indexOf("at org.openejb.test.NumberedTestCase") != -1) break; 157 if (line.indexOf("at org.openejb.test.TestSuite") != -1) break; 158 159 trace.append(line).append('\n'); 160 line = reader.readLine(); 161 } 162 } catch(Exception e){ 163 } 164 165 return trace.toString(); 166 } 167 168 } 169 | Popular Tags |