|
What this is
Other links
The source code
/*******************************************************************************
* Copyright (c) 2000, 2007 IBM Corporation and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* IBM Corporation - initial API and implementation
*******************************************************************************/
package sample.tools;
/**
* A custom Ant task that finds compile logs containing compile
* errors. The compile logs with errors are sent as email attachments using
* information in monitor.properties.
*/
import org.apache.tools.ant.BuildException;
import org.apache.tools.ant.Task;
import org.w3c.dom.Document;
import org.w3c.dom.NamedNodeMap;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import org.xml.sax.InputSource;
import org.xml.sax.SAXException;
import com.sun.java_cup.internal.terminal;
import java.util.Hashtable;
import java.util.Vector;
import java.util.Enumeration;
import java.io.*;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
public class TestResultCheck extends Task {
//directory containing of build source, parent of features and plugins
private String dir = "";
private String output = "testresultlist.txt";
//keep track of testresults logs
private Hashtable testResultReports;
public TestResultCheck() {
testResultReports = new Hashtable();
}
public void execute() throws BuildException {
findLogs(dir);
printTestResultLog();
}
// test
public static void main(String[] args) {
TestResultCheck checker = new TestResultCheck();
checker.dir="D:\\workspace\\jdt-builder-sample\\build\\I.TestBuild\\testresults";
checker.output="d:\\workspace\\jdt-builder-sample\\build\\I.TestBuild\\log.txt";
checker.execute();
}
private void findLogs(String file) {
File aFile = new File(file);
// basis case
if (aFile.isFile()) {
if(aFile.getAbsolutePath().endsWith(".xml")){
parse(aFile);
}
} else {
//recurse into directories looking for and reading compile logs
File files[] = aFile.listFiles();
for (int i = 0; i < files.length; i++) {
findLogs(files[i].getAbsolutePath());
}
}
}
private void parse(File file) {
Document aDocument = null;
BufferedReader reader = null;
try {
reader = new BufferedReader(new FileReader(file));
InputSource inputSource = new InputSource(reader);
DocumentBuilderFactory factory = DocumentBuilderFactory
.newInstance();
DocumentBuilder builder = null;
try {
builder = factory.newDocumentBuilder();
} catch (ParserConfigurationException e) {
e.printStackTrace();
}
try {
aDocument = builder.parse(inputSource);
} catch (SAXException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
// Get summary of problems
NodeList nodeList = aDocument.getElementsByTagName("testsuite");
File htmlReport = new File(file.getParentFile(), file.getName()
.replaceAll(".xml", ".html"));
if (nodeList == null)
testResultReports.put(htmlReport, "fail");
for (int i = 0; i < nodeList.getLength(); i++) {
Node problemSummaryNode = nodeList.item(i);
NamedNodeMap aNamedNodeMap = problemSummaryNode.getAttributes();
Node errorNode = aNamedNodeMap.getNamedItem("errors");
Node failureNode = aNamedNodeMap.getNamedItem("failures");
if ((errorNode != null && !errorNode.getNodeValue().equals("0"))
|| (failureNode != null && !failureNode.getNodeValue()
.equals("0"))) {
testResultReports.put(htmlReport, "fail");
return;
}
}
testResultReports.put(htmlReport, "ok");
} catch (FileNotFoundException e) {
e.printStackTrace();
} finally {
if (reader != null)
try {
reader.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
private void printTestResultLog() {
// print log with names of test plug-ins and test result report
Enumeration enumeration = testResultReports.keys();
if (testResultReports.size() > 0) {
PrintWriter out = null;
try {
out = new PrintWriter(new FileWriter(new File(output)));
out.println("<h3>JUnit Test Results");
while (enumeration.hasMoreElements()) {
Object testResultReport = enumeration.nextElement();
String image=testResultReports.get(testResultReport).equals("fail")?"FAIL.gif":"OK.gif";
File testResultFile = new File(testResultReport.toString());
out.println("<a href=\"@testresultdir@/html/"+testResultFile.getName()+"\">"+testResultFile.getName().replaceAll(".html","")+""+"
|
| ... this post is sponsored by my books ... | |
#1 New Release! |
FP Best Seller |
Copyright 1998-2024 Alvin Alexander, alvinalexander.com
All Rights Reserved.
A percentage of advertising revenue from
pages under the /java/jwarehouse
URI on this website is
paid back to open source projects.