package fitnesse.responders.run.formatters; import fitnesse.http.ChunkedResponse; import fitnesse.responders.run.CompositeExecutionLog; import fitnesse.responders.run.TestPage; import fitnesse.responders.run.TestSummary; import fitnesse.responders.run.TestSystem; import fitnesse.wiki.PathParser; import fitnesse.wiki.WikiPage; import java.io.IOException; import java.text.SimpleDateFormat; import util.TimeMeasurement; public class TestTextFormatter extends BaseFormatter { private ChunkedResponse response; public TestTextFormatter(ChunkedResponse response) { this.response = response; } public void writeHead(String pageType) throws Exception { } public void setExecutionLogAndTrackingId(String stopResponderId, CompositeExecutionLog log) { } public void testSystemStarted(TestSystem testSystem, String testSystemName, String testRunner) { response.add(String.format("\nStarting Test System: %s using %s.\n", testSystemName, testRunner)); } public void newTestStarted(TestPage page, TimeMeasurement timeMeasurement) { } private String getPath(WikiPage page) { return PathParser.render(page.getPageCrawler().getFullPath(page)); } public void testOutputChunk(String output) { } public void testComplete(TestPage page, TestSummary summary, TimeMeasurement timeMeasurement) throws IOException { super.testComplete(page, summary, timeMeasurement); String timeString = new SimpleDateFormat("HH:mm:ss").format(timeMeasurement.startedAtDate()); response.add(String.format("%s %s R:%-4d W:%-4d I:%-4d E:%-4d %s\t(%s)\t%.03f seconds\n", passFail(summary), timeString, summary.right, summary.wrong, summary.ignores, summary.exceptions, page.getName(), getPath(page.getSourcePage()), timeMeasurement.elapsedSeconds())); } private String passFail(TestSummary summary) { if (summary.wrong > 0){ return "F"; } if (summary.exceptions > 0) { return "X"; } return "."; } @Override public void allTestingComplete(TimeMeasurement totalTimeMeasurement) throws IOException { super.allTestingComplete(totalTimeMeasurement); response.add(String.format("--------\n%d Tests,\t%d Failures\t%.03f seconds.\n", testCount, failCount, totalTimeMeasurement.elapsedSeconds())); } }