Eclipse paints properly now as we wait for reports to come in.
--- /dev/null
+/*
+ * Created on Jul 24, 2004
+ *
+ * To change the template for this generated file go to
+ * Window>Preferences>Java>Code Generation>Code and Comments
+ */
+package net.sourceforge.phpeclipse.phpunit;
+
+import java.net.ServerSocket;
+import java.net.Socket;
+
+/**
+ * @author Ali Echihabi
+ *
+ * To change the template for this generated type comment go to
+ * Window>Preferences>Java>Code Generation>Code and Comments
+ */
+public class ConnectionListener extends Thread {
+
+ private ServerSocket sSocket = null;
+ private Socket serviceSocket = null;
+
+ public void run() {
+
+ try {
+
+ //reportArea.append("listening at port 12345");
+
+ sSocket = new ServerSocket(12345);
+
+ // accept connection from test reporter.
+ serviceSocket = sSocket.accept();
+
+ (new ReportListener(serviceSocket)).start();
+
+ sSocket.close();
+
+ } catch (Exception e) {
+
+ e.printStackTrace();
+
+ }
+
+ } // end of run()
+
+ public static void main(String[] args) {
+
+ (new ConnectionListener()).start();
+ }
+
+}
package net.sourceforge.phpeclipse.phpunit;
-import java.io.BufferedReader;
-import java.io.InputStreamReader;
-import java.net.ServerSocket;
-import java.net.Socket;
-
import org.eclipse.swt.SWT;
-import org.eclipse.swt.events.ControlEvent;
-import org.eclipse.swt.events.ControlListener;
import org.eclipse.swt.events.MouseEvent;
import org.eclipse.swt.events.MouseListener;
import org.eclipse.swt.widgets.Button;
* The first level nodes are the test suites.
* children are nested test suites.
* leafs: test functions.
+ * hierarchy: package->testsuite1->testcase->test_function
*/
private int numFailures; // number of failures so far
private int numErrors; // number of errors so far
private int numPasses; // number of passes so far (they should add up)
+
+
+ private XMLReportHandler handler;
Label labelRuns, labelRunsVal; // Runs: 12
Label labelErrors, labelErrorsVal;
Button startButton;
public PHPUnitView() {
-
+ handler = new XMLReportHandler();
}
public void createPartControl(Composite parent) {
- //viewer = new TreeViewer(parent);
- labelRuns = new Label(parent, SWT.WRAP);
- labelRuns.setText("Runs: ");
- labelRunsVal = new Label(parent, SWT.WRAP);
- labelRunsVal.setText("0 / 0");
-
- labelFailures = new Label(parent, SWT.WRAP);
- labelFailures.setText("Failures: ");
- labelFailuresVal = new Label(parent, SWT.WRAP);
- labelFailuresVal.setText("0");
-
- labelErrors = new Label(parent, SWT.WRAP);
- labelErrors.setText("Errors: ");
- labelErrorsVal = new Label(parent, SWT.WRAP);
- labelErrorsVal.setText("0");
+// //viewer = new TreeViewer(parent);
+// labelRuns = new Label(parent, SWT.WRAP);
+// labelRuns.setText("Runs: ");
+// labelRunsVal = new Label(parent, SWT.WRAP);
+// labelRunsVal.setText("0 / 0");
+//
+// labelFailures = new Label(parent, SWT.WRAP);
+// labelFailures.setText("Failures: ");
+// labelFailuresVal = new Label(parent, SWT.WRAP);
+// labelFailuresVal.setText("0");
+//
+// labelErrors = new Label(parent, SWT.WRAP);
+// labelErrors.setText("Errors: ");
+// labelErrorsVal = new Label(parent, SWT.WRAP);
+// labelErrorsVal.setText("0");
reportArea = new Text(parent, SWT.MULTI | SWT.BORDER |
SWT.WRAP | SWT.V_SCROLL | SWT.READ_ONLY);
*
* @param testID
*/
- private void markTestPass(String testID) {
+ public void markTestPassed(String testID) {
// testid, use it in hashmap to retrieve tree item of test and
// change icon color, increment pass counter, etc...
//for now:
- reportArea.append("test passed");
+ reportArea.append("test passed \n");
}
+ public void markTestStarted(String testID) {
+
+ reportArea.append("test started \n");
+ }
+
+ public void createNewTest(String testName, String testID) {
+
+ reportArea.append("new test: " + testName + " - testID \n");
+
+ }
+ public void markTestFail(String testID) {
+ reportArea.append("test failed \n");
+ }
+ public void markTestingFinished() {
+
+ reportArea.append("end all tests \n");
+
+ }
// action to start tests:
private void startTests() {
}
private void listenForReports() {
-
- ServerSocket sSocket = null;
- Socket serviceSocket = null;
-
- try {
-
- reportArea.append("listening at port 12345");
-
- sSocket = new ServerSocket(12345);
-
- // accept connection from test reporter.
- serviceSocket = sSocket.accept();
-
-
- InputStreamReader reader = new InputStreamReader(serviceSocket.getInputStream());
- BufferedReader in = new BufferedReader(reader);
- String report = null;
-
- // keep listening until the
- while ( (report = in.readLine()) != null && (report != "end_all_tests") ) {
-
- handleReport(report);
- }
-
- reportArea.append("Finished!");
-
- sSocket.close();
- serviceSocket.close();
-
- } catch (Exception e) {
-
- e.printStackTrace();
-
- }
-
-
-
-
- }
+
+
+
+ ConnectionListener conListener = new ConnectionListener();
+ conListener.start();
+
+ } //end of method
/**
* handle this report: test passed, faile, end of all.
reportArea.append("msg: " + report + "\n");
+ String event = report.substring(0, report.indexOf(" "));
+
+ System.out.println(event);
+
+ handler.handle(report, this);
+
+
+
}
+ public void handleCommand(String command, String testCount, String testID) {
+
+
+ }
+
+
+
+
+} //end of class
+
+
+
+
-}
--- /dev/null
+package net.sourceforge.phpeclipse.phpunit;
+
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.InputStreamReader;
+import java.net.Socket;
+
+public class ReportListener extends Thread {
+
+ Socket serviceSocket;
+
+ public ReportListener(Socket serviceSocket) {
+
+ this.serviceSocket = serviceSocket;
+
+ }
+
+ public void run() {
+
+ InputStreamReader reader;
+
+ try {
+ reader = new InputStreamReader(serviceSocket.getInputStream());
+
+ BufferedReader in = new BufferedReader(reader);
+ String report = null;
+ int i = 0;
+ // keep listening until the
+ while ( (report = in.readLine()) != null &&
+ (report != "end_all_tests") ) {
+
+ System.out.println("received something...");
+ //handleReport(report);
+ System.out.println(report);
+ }
+
+ //reportArea.append("Finished!");
+ System.out.println("Finished");
+ serviceSocket.close();
+
+ } catch (IOException e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ }
+
+ }
+
+}
\ No newline at end of file
--- /dev/null
+package net.sourceforge.phpeclipse.phpunit;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
+import java.io.FileOutputStream;
+import java.io.IOException;
+
+import javax.xml.parsers.FactoryConfigurationError;
+import javax.xml.parsers.ParserConfigurationException;
+import javax.xml.parsers.SAXParser;
+import javax.xml.parsers.SAXParserFactory;
+
+import org.xml.sax.Attributes;
+import org.xml.sax.SAXException;
+import org.xml.sax.helpers.DefaultHandler;
+
+public class XMLReportHandler extends DefaultHandler {
+
+ private PHPUnitView view;
+
+ private String currentCommand;
+ private String currentTestCount;
+ private String currentTestID;
+
+ public void handle(String report, PHPUnitView view) {
+
+ //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("tmp2.xml");
+ FileOutputStream out = null;
+ FileInputStream in = null;
+ out = new FileOutputStream(file);
+ //OutputStreamWriter outS = new OutputStreamWriter(out, UTF8);
+ report += "\n \r";
+ out.write(report.getBytes("UTF8"));
+ out.close();
+ in = new FileInputStream(file);
+ parser = SAXParserFactory.newInstance().newSAXParser();
+ parser.parse(in, this);
+ in.close();
+ file.delete();
+
+ } catch (ParserConfigurationException e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ } catch (SAXException e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ } catch (FactoryConfigurationError e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ } catch (FileNotFoundException e1) {
+ // TODO Auto-generated catch block
+ e1.printStackTrace();
+ } catch (IOException e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ }
+
+
+
+ }
+
+ /* (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
+
+ }
+
+ /* (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 == "report") {
+
+ currentCommand = attributes.getValue("command");
+ currentTestCount = attributes.getValue("testCount");
+ currentTestID = attributes.getValue("testID");
+
+ //view.handleCommand(currentCommand, currentTestCount, currentTestID);
+
+ if (currentCommand == "testStarted") {
+
+ //view.createNewTest("testName", currentTestID);
+ //view.markTestStarted(currentTestID);
+
+ } else if (currentCommand == "testFinished") {
+
+ // do nothing wait for verdict
+ } else if (currentCommand == "endAll") {
+
+ //view.markTestingFinished();
+ }
+
+ } else if (elementName == "verdict") {
+
+ String verdict = attributes.getValue("desc");
+
+// if( verdict == "passed")
+// view.markTestPassed(currentTestID);
+// else
+// view.markTestFail(currentTestID);
+
+ } else if (elementName == "exceptions") {
+
+
+ } else if (elementName == "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);
+
+ 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);
+ }
+
+}
\ No newline at end of file