blob: e1c3c3eb183e546d31ae607ce1d5d5467fc0e568 [file] [log] [blame]
package org.testng.reporters.jq;
import static org.testng.reporters.jq.BasePanel.C;
import static org.testng.reporters.jq.BasePanel.D;
import org.testng.IReporter;
import org.testng.ISuite;
import org.testng.internal.Utils;
import org.testng.reporters.Files;
import org.testng.reporters.XMLStringBuffer;
import org.testng.xml.XmlSuite;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.util.List;
public class Main implements IReporter {
private static final String[] RESOURCES = new String[] {
"jquery-1.7.1.min.js", "testng-reports.css", "testng-reports.js",
"passed.png", "failed.png", "skipped.png", "navigator-bullet.png",
"bullet_point.png", "collapseall.gif"
};
private Model m_model;
private String m_outputDirectory;
@Override
public void generateReport(List<XmlSuite> xmlSuites, List<ISuite> suites,
String outputDirectory) {
m_model = new Model(suites);
m_outputDirectory = outputDirectory + File.separatorChar + "new";
XMLStringBuffer xsb = new XMLStringBuffer(" ");
// Top banner
new BannerPanel(m_model).generate(xsb);
// Navigator on the left hand side
TestNgXmlPanel testNgPanel = new TestNgXmlPanel(m_model);
TestPanel testPanel = new TestPanel(m_model);
GroupPanel groupPanel = new GroupPanel(m_model);
TimesPanel timePanel = new TimesPanel(m_model);
ReporterPanel reporterPanel = new ReporterPanel(m_model);
IgnoredMethodsPanel ignoredMethodsPanel = new IgnoredMethodsPanel(m_model);
ChronologicalPanel chronologicalPanel = new ChronologicalPanel(m_model);
new NavigatorPanel(m_model, testNgPanel, testPanel, groupPanel, timePanel, reporterPanel,
ignoredMethodsPanel, chronologicalPanel)
.generate(xsb);
xsb.push(D, C, "wrapper");
xsb.push(D, "class", "main-panel-root");
//
// Suite panels
//
new SuitePanel(m_model).generate(xsb);
groupPanel.generate(xsb);
reporterPanel.generate(xsb);
timePanel.generate(xsb);
testPanel.generate(xsb);
testNgPanel.generate(xsb);
ignoredMethodsPanel.generate(xsb);
chronologicalPanel.generate(xsb);
xsb.pop(D); // main-panel-root
xsb.pop(D); // wrapper
xsb.addString(" </body>\n");
xsb.addString("</html>\n");
String all;
try {
InputStream header = getClass().getResourceAsStream("/header");
if (header == null) {
throw new RuntimeException("Couldn't find resource header");
} else {
for (String fileName : RESOURCES) {
InputStream is = getClass().getResourceAsStream("/" + fileName);
if (is == null) {
throw new AssertionError("Couldn't find resource: " + fileName);
}
Files.copyFile(is, new File(m_outputDirectory, fileName));
}
all = Files.readFile(header);
Utils.writeFile(m_outputDirectory, "index.html", all + xsb.toXML());
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}