package fitnesse.responders.run.formatters;
import fitnesse.FitNesseContext;
import fitnesse.FitNesseVersion;
import fitnesse.responders.run.*;
import fitnesse.wiki.WikiPage;
import fitnesse.wiki.PathParser;
import java.io.IOException;
import java.util.List;
import util.TimeMeasurement;
public class SuiteExecutionReportFormatter extends BaseFormatter {
private SuiteExecutionReport.PageHistoryReference referenceToCurrentTest;
protected SuiteExecutionReport suiteExecutionReport;
public SuiteExecutionReportFormatter(FitNesseContext context, final WikiPage page) {
super(context, page);
suiteExecutionReport = new SuiteExecutionReport();
suiteExecutionReport.version = new FitNesseVersion().toString();
suiteExecutionReport.rootPath = this.page.getName();
}
@Override
public void setExecutionLogAndTrackingId(String stopResponderId, CompositeExecutionLog log) {
}
@Override
public void testSystemStarted(TestSystem testSystem, String testSystemName, String testRunner) {
}
@Override
public void newTestStarted(TestPage test, TimeMeasurement timeMeasurement) {
String pageName = PathParser.render(test.getSourcePage().getPageCrawler().getFullPath(test.getSourcePage()));
referenceToCurrentTest = new SuiteExecutionReport.PageHistoryReference(pageName, timeMeasurement.startedAt(), timeMeasurement.elapsed());
}
@Override
public void testOutputChunk(String output) {
}
public String getRootPageName() {
return suiteExecutionReport.getRootPath();
}
public String getFitNesseVersion() {
return new FitNesseVersion().toString();
}
@Override
public void testComplete(TestPage test, TestSummary testSummary, TimeMeasurement timeMeasurement) {
referenceToCurrentTest.setTestSummary(testSummary);
referenceToCurrentTest.setRunTimeInMillis(timeMeasurement.elapsed());
suiteExecutionReport.addPageHistoryReference(referenceToCurrentTest);
suiteExecutionReport.tallyPageCounts(ExecutionResult.getExecutionResult(test.getName(), testSummary));
failCount+=testSummary.wrong;
failCount+=testSummary.exceptions;
}
public List<SuiteExecutionReport.PageHistoryReference> getPageHistoryReferences() {
return suiteExecutionReport.getPageHistoryReferences();
}
@Override
public int getErrorCount() {
return getPageCounts().wrong + getPageCounts().exceptions;
}
@Override
public void allTestingComplete(TimeMeasurement totalTimeMeasurement) throws IOException {
super.allTestingComplete(totalTimeMeasurement);
suiteExecutionReport.setTotalRunTimeInMillis(totalTimeMeasurement);
}
public TestSummary getPageCounts() {
return suiteExecutionReport.getFinalCounts();
}
}