1 5 package polyglot.pth; 6 7 import java.io.PrintStream ; 8 import java.text.DateFormat ; 9 import java.util.Calendar ; 10 import java.util.Date ; 11 import java.util.Iterator ; 12 import java.util.regex.Pattern ; 13 14 import polyglot.util.*; 15 import polyglot.util.ErrorQueue; 16 import polyglot.util.SilentErrorQueue; 17 import polyglot.util.StdErrorQueue; 18 19 22 public class VerboseOutputController extends OutputController{ 23 private boolean alwaysShowErrorQ; 24 public VerboseOutputController(PrintStream out, boolean alwaysShowErrorQ) { 25 super(out); 26 this.alwaysShowErrorQ = alwaysShowErrorQ; 27 } 28 29 protected void startScriptTestSuite(ScriptTestSuite sts) { 30 out.println("Test script " + sts.getName()); 31 if (sts.getDescription() != null && sts.getDescription().length() > 0) { 32 out.println(" Description : " + sts.getDescription()); 33 } 34 if (sts.getTestResult() != null) { 35 out.println(" Last run : " + getDateDisplay(sts.getTestResult().dateTestRun)); 36 out.println(" Last success: " + getDateDisplay(sts.getTestResult().dateLastSuccess)); 37 } 38 out.println("=============================="); 39 } 40 protected void finishScriptTestSuite(ScriptTestSuite sts) { 41 out.println("Test script " + sts.getName() + " finished"); 42 if (!sts.success() && sts.failureMessage != null) { 43 out.println(sts.failureMessage); 44 } 45 46 out.println(" " + 47 sts.getSuccesfulTestCount() + " out of " + sts.getTotalTestCount() + 48 " tests succeeded."); 49 } 50 51 protected void startSourceFileTest(SourceFileTest sft) { 52 out.println(sft.getName() + ": "); 53 if (sft.getDescription() != null && sft.getDescription().length() > 0) { 54 out.println(" Description : " + sft.getDescription()); 55 } 56 if (sft.getTestResult() != null) { 57 out.println(" Last run : " + getDateDisplay(sft.getTestResult().dateTestRun)); 58 out.println(" Last success: " + getDateDisplay(sft.getTestResult().dateLastSuccess)); 59 } 60 } 61 62 protected void finishSourceFileTest(SourceFileTest sft, ErrorQueue eq) { 63 if (sft.success()) { 64 out.println(" Test completed OK"); 65 } 66 else { 67 out.print(" Test failed"); 68 if (sft.getFailureMessage() != null) { 69 out.println(": " + sft.getFailureMessage()); 70 } 71 else { 72 out.println(); 73 } 74 } 75 if (alwaysShowErrorQ || !sft.success()) { 76 StdErrorQueue stdeq = new StdErrorQueue(out, 77 eq.errorCount() + 1, 78 sft.getName()); 79 80 SilentErrorQueue seq = (SilentErrorQueue)eq; 81 for (Iterator i = seq.getErrors().iterator(); i.hasNext(); ) { 82 ErrorInfo ei = (ErrorInfo)i.next(); 83 stdeq.enqueue(ei); 84 } 85 stdeq.flush(); 86 if (seq.errorCount() > 0) { 87 out.println("-----------------------------"); 88 } 89 } 90 } 91 92 93 public void displayTestSuiteResults(String suiteName, TestSuite ts) { 94 TestSuiteResult tsr = ts.getTestSuiteResult(); 95 if (tsr == null || tsr.testResults.isEmpty()) { 96 out.println("No test results for " + suiteName); 97 return; 98 } 99 100 out.println("Test script " + tsr.testName); 101 out.println(" Last run : " + getDateDisplay(tsr.dateTestRun)); 102 out.println(" Last success: " + getDateDisplay(tsr.dateLastSuccess)); 103 104 int total = 0; 105 int lastSuccess = 0; 106 int neverRun = 0; 107 int neverSuccess = 0; 108 for (Iterator iter = ts.getTests().iterator(); iter.hasNext(); ) { 109 Test t = (Test)iter.next(); 110 String testName = t.getName(); 111 TestResult tr = (TestResult)tsr.testResults.get(testName); 112 if (TestSuite.executeTest(testName, tr)) { 113 displayTestResults(tr, testName); 114 } 115 total++; 116 if (tr != null && tr.dateLastSuccess != null && tr.dateLastSuccess.equals(tr.dateTestRun)) { 117 lastSuccess++; 118 } 119 if (tr == null || tr.dateTestRun == null) { 120 neverRun++; 121 } 122 if (tr == null || tr.dateLastSuccess == null) { 123 neverSuccess++; 124 } 125 } 126 out.println("Total tests: " + total); 127 out.println(" Succeeded last run: " + lastSuccess); 128 out.println(" Never run : " + neverRun); 129 out.println(" Never succeeded : " + neverSuccess); 130 } 131 132 public void displayTestResults(TestResult tr, String testName) { 133 out.println(" " + testName); 134 out.println(" Last run : " + getDateDisplay(tr==null?null:tr.dateTestRun)); 135 out.println(" Last success: " + getDateDisplay(tr==null?null:tr.dateLastSuccess)); 136 } 137 } 138 | Popular Tags |