*
*************************************************************************/
-
package net.sourceforge.phpeclipse.phpunit.reporthandling;
import java.io.File;
import org.xml.sax.helpers.DefaultHandler;
public class XMLReportHandler extends DefaultHandler {
-
+
private String currentVerdict;
- private PHPUnitView view;
+
+ private PHPUnitView view;
+
private String currentCommand;
+
private String currentTestCount;
+
private String currentTestID;
+
private String currentTestName;
+
private String currentTestParentTestSuiteName;
-
+
private void doAsyncRunnable(Runnable runnable) {
-
+
view.getSite().getShell().getDisplay().asyncExec(runnable);
}
-
+
public void handle(String report, PHPUnitView view) {
- //TODO : how to parse directly a string?
+ // TODO : how to parse directly a string?
// now doing it with a stream.
this.view = view;
SAXParser parser;
-
+
System.out.println("handling: " + report);
-
+
try {
-
+
File file = new File("tmp3.xml");
FileOutputStream out = null;
FileInputStream in = null;
out = new FileOutputStream(file);
- //OutputStreamWriter outS = new OutputStreamWriter(out, UTF8);
+ // OutputStreamWriter outS = new OutputStreamWriter(out, UTF8);
report += "\n \r";
out.write(report.getBytes("UTF8"));
out.close();
parser.parse(in, this);
in.close();
file.delete();
-
+
} catch (ParserConfigurationException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (FactoryConfigurationError e) {
// TODO Auto-generated catch block
e.printStackTrace();
- } catch (FileNotFoundException e1) {
+ } catch (FileNotFoundException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
-
-
}
-
- /* (non-Javadoc)
- * @see org.xml.sax.ContentHandler#endElement(java.lang.String, java.lang.String, java.lang.String)
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.xml.sax.ContentHandler#endElement(java.lang.String,
+ * java.lang.String, java.lang.String)
*/
public void endElement(String arg0, String arg1, String elementName)
- throws SAXException {
-
- // send this current command to view
+ throws SAXException {
+
+ // send this current command to view
}
- /* (non-Javadoc)
- * @see org.xml.sax.ContentHandler#startElement(java.lang.String, java.lang.String, java.lang.String, org.xml.sax.Attributes)
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.xml.sax.ContentHandler#startElement(java.lang.String,
+ * java.lang.String, java.lang.String, org.xml.sax.Attributes)
*/
- public void startElement(
- String arg0,
- String arg1,
- String elementName,
- Attributes attributes)
- throws SAXException {
-
- System.out.println(arg0 + " - " + arg1 + " - " + elementName);
-
-
- if(elementName.equals("report")) {
-
+ public void startElement(String arg0, String arg1, String elementName,
+ Attributes attributes) throws SAXException {
+
+ System.out.println(arg0 + " - " + arg1 + " - " + elementName);
+
+ if (elementName.equals("report")) {
+
currentCommand = attributes.getValue("command");
currentTestCount = attributes.getValue("testCount");
currentTestID = attributes.getValue("testID");
currentTestName = attributes.getValue("testName");
- currentTestParentTestSuiteName = attributes.getValue("parentTestSuiteName");
-
+ currentTestParentTestSuiteName = attributes
+ .getValue("parentTestSuiteName");
+
doAsyncRunnable(new Runnable() {
-
+
public void run() {
-
- //view.handleCommand(currentCommand, currentTestCount, currentTestID, );
- view.handleCommand(currentCommand, new String[] {currentTestID, currentTestCount, currentTestName, currentTestParentTestSuiteName});
-
- }
+
+ // view.handleCommand(currentCommand, currentTestCount,
+ // currentTestID, );
+ view.handleCommand(currentCommand, new String[] {
+ currentTestID, currentTestCount, currentTestName,
+ currentTestParentTestSuiteName });
+
+ }
});
} else if (elementName.equals("verdict")) {
-
- currentVerdict = attributes.getValue("desc");
- //view.setTestVerdict(currentTestID, currentVerdict);
-
+
+ currentVerdict = attributes.getValue("desc");
+ // view.setTestVerdict(currentTestID, currentVerdict);
+
doAsyncRunnable(new Runnable() {
-
+
public void run() {
-
- view.setTestVerdict(currentTestID, currentVerdict);
+
+ view.setTestVerdict(currentTestID, currentVerdict);
}
-
- });
+
+ });
} else if (elementName.equals("exceptions")) {
-
- //do nothing
-
+
+ // do nothing
+
} else if (elementName.equals("exception")) {
-
+
final String exception = attributes.getValue("desc");
-
+
doAsyncRunnable(new Runnable() {
-
+
public void run() {
-
- view.addTestException(currentTestID, exception);
+
+ view.addTestException(currentTestID, exception);
}
-
- });
-
+
+ });
+
}
-
-
+
}
public static void main(String[] args) {
-
+
XMLReportHandler handler = new XMLReportHandler();
String xml = "";
xml = "<report id='2' command='testFINISHED' testCount='1' testID='manyfailingtests_testpass1'> <verdict desc='passed'> <exceptions></exceptions></verdict></report> ";
- handler.handle(xml, null);
-
+ handler.handle(xml, null);
+
xml = "<report id='2' command='testFINISHED' testCount='1' testID='manyfailingtests_testpass1'> <verdict desc='passed'> <exceptions></exceptions></verdict></report> ";
handler.handle(xml, null);
-
+
xml = "<report id='3' command='testStarted' testCount='2' testID='manyfailingtests_testpass2'> </report> ";
handler.handle(xml, null);
-
+
xml = "<report id='4' command='testFINISHED' testCount='2' testID='manyfailingtests_testpass2'> <verdict desc='passed'> <exceptions></exceptions></verdict></report>";
- handler.handle(xml, null);
+ handler.handle(xml, null);
}
}
\ No newline at end of file