private ServerSocket sSocket = null;
private Socket serviceSocket = null;
+ private PHPUnitView view;
+
+
+ public void start(PHPUnitView view) {
+
+ this.view = view;
+ super.start();
+ }
public void run() {
// accept connection from test reporter.
serviceSocket = sSocket.accept();
- (new ReportListener(serviceSocket)).start();
+ (new ReportListener(serviceSocket, this.view)).start();
sSocket.close();
public static void main(String[] args) {
- (new ConnectionListener()).start();
+ (new ConnectionListener()).start(new PHPUnitView());
}
}
//for now:
- reportArea.append("test passed \n");
+ reportArea.append("test : " + testID + " passed \n");
}
public void markTestStarted(String testID) {
- reportArea.append("test started \n");
+ reportArea.append("test started: " + testID + " \n");
}
public void createNewTest(String testName, String testID) {
- reportArea.append("new test: " + testName + " - testID \n");
+ reportArea.append("new test: " + testName + " - testID " + testID + " \n");
}
public void markTestFail(String testID) {
- reportArea.append("test failed \n");
+ reportArea.append("test " + testID + " failed \n");
}
public void markTestingFinished() {
}
+ /**
+ *
+ */
private void listenForReports() {
ConnectionListener conListener = new ConnectionListener();
- conListener.start();
+ conListener.start(this);
} //end of method
* handle this report: test passed, faile, end of all.
* @param report
*/
- private void handleReport(String report) {
-
- reportArea.append("msg: " + report + "\n");
-
- String event = report.substring(0, report.indexOf(" "));
-
- System.out.println(event);
+ public void handleReport(String report) {
+ //delegate to the XML report handler.
+ //reportArea.append("msg: " + report + "\n");
handler.handle(report, this);
}
+ /**
+ * @param command
+ * @param testCount
+ * @param testID
+ */
public void handleCommand(String command, String testCount, String testID) {
+
+ if (command.equals("testStarted")) {
+
+ createNewTest("testName", testID);
+ markTestStarted(testID);
+
+ } else if (command.equals("testFinished")) {
+
+
+ // do nothing wait for verdict
+ } else if (command.equals("endAll")) {
+
+ markTestingFinished();
+ }
+
+
+ }
+
+ /**
+ * @param currentTestID
+ * @param verdict
+ */
+ public void setTestVerdict(String currentTestID, String verdict) {
+
+ if( verdict.equals("passed"))
+ markTestPassed(currentTestID);
+ else
+ markTestFail(currentTestID);
+
+
+ }
+
+ /**
+ * @param currentTestID
+ * @param exception
+ */
+ public void addTestException(String currentTestID, String exception) {
+ reportArea.append(" test " + currentTestID + " exception: " + exception + "\n");
}
public class ReportListener extends Thread {
Socket serviceSocket;
+ PHPUnitView view;
- public ReportListener(Socket serviceSocket) {
-
+ public ReportListener(Socket serviceSocket, PHPUnitView view) {
+ this.view = view;
this.serviceSocket = serviceSocket;
}
(report != "end_all_tests") ) {
System.out.println("received something...");
- //handleReport(report);
+ view.handleReport(report);
System.out.println(report);
}
public class XMLReportHandler extends DefaultHandler {
- private PHPUnitView view;
-
+ private String currentVerdict;
+ private PHPUnitView view;
private String currentCommand;
private String currentTestCount;
private String currentTestID;
+ 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?
try {
- File file = new File("tmp2.xml");
+ File file = new File("tmp3.xml");
FileOutputStream out = null;
FileInputStream in = null;
out = new FileOutputStream(file);
System.out.println(arg0 + " - " + arg1 + " - " + elementName);
- if(elementName == "report") {
+ if(elementName.equals("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") {
+ doAsyncRunnable(new Runnable() {
- // do nothing wait for verdict
- } else if (currentCommand == "endAll") {
+ public void run() {
+
+ view.handleCommand(currentCommand, currentTestCount, currentTestID);
+ }
+
+ });
+
+ } else if (elementName.equals("verdict")) {
+
+ currentVerdict = attributes.getValue("desc");
+ //view.setTestVerdict(currentTestID, currentVerdict);
+
+ doAsyncRunnable(new Runnable() {
- //view.markTestingFinished();
- }
+ public void run() {
+
+ view.setTestVerdict(currentTestID, currentVerdict);
+ }
- } else if (elementName == "verdict") {
+ });
+
+ } else if (elementName.equals("exceptions")) {
- String verdict = attributes.getValue("desc");
+ //do nothing
-// if( verdict == "passed")
-// view.markTestPassed(currentTestID);
-// else
-// view.markTestFail(currentTestID);
+ } else if (elementName.equals("exception")) {
- } else if (elementName == "exceptions") {
+ final String exception = attributes.getValue("desc");
+ doAsyncRunnable(new Runnable() {
+
+ public void run() {
+
+ view.addTestException(currentTestID, exception);
+ }
- } else if (elementName == "exception") {
+ });
}