Added Run Tests Action in the popup menu for .php file
[phpeclipse.git] / net.sourceforge.phpeclipse.phpunit / src / net / sourceforge / phpeclipse / phpunit / PHPUnitView.java
index 94605d5..6510e34 100644 (file)
@@ -1,7 +1,17 @@
 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;
 import org.eclipse.swt.widgets.Composite;
 import org.eclipse.swt.widgets.Label;
 import org.eclipse.swt.widgets.Text;
@@ -54,6 +64,8 @@ public class PHPUnitView extends ViewPart {
        
        Text reportArea; // TODO: replace with Tree display like JUnit
 
+       Button startButton;
+
        public PHPUnitView() {
                
        }
@@ -79,6 +91,30 @@ public class PHPUnitView extends ViewPart {
                reportArea = new Text(parent, SWT.MULTI | SWT.BORDER |
                SWT.WRAP | SWT.V_SCROLL | SWT.READ_ONLY);
                
+               startButton = new Button(parent, SWT.CENTER);
+               startButton.setText("Start Tests");
+               startButton.addMouseListener( new MouseListener() {
+
+                       public void mouseDoubleClick(MouseEvent arg0) {
+                               // TODO Auto-generated method stub
+                               
+                       }
+
+                       public void mouseDown(MouseEvent arg0) {
+                               // TODO Auto-generated method stub
+                               startTests();
+                       }
+
+                       public void mouseUp(MouseEvent arg0) {
+                               // TODO Auto-generated method stub
+                               
+                       }
+
+
+                       
+                       
+                       }); // end add action listener.
+               
                // TODO layout!
        }
 
@@ -86,7 +122,7 @@ public class PHPUnitView extends ViewPart {
         * @see org.eclipse.ui.IWorkbenchPart#setFocus()
         */
        public void setFocus() {
-               markTestPass("hello");
+               //markTestPass("hello");
        }
 
        /**
@@ -107,7 +143,73 @@ public class PHPUnitView extends ViewPart {
        
        
        
+       // action to start tests:
+       private void startTests() {
+               
+               // preparation:
+               // take the full test suite (could containt other test suites).
+               // create temp php file that starts that suite and uses socketTestReport 
+               // as a test result reporter.
+               // add listener: localhost , port 13579
+               // start listening at port.
+               
+               reportArea.append("Tests started \n");
+               listenForReports();
+               
+               
+               
+       }
+       
+       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();
+                       
+               } 
+               
+               
+                               
+               
+       }
        
+       /**
+        * handle this report: test passed, faile, end of all.
+        * @param report
+        */
+       private void handleReport(String report) {
+               
+               reportArea.append("msg: " + report + "\n");
+               
+       }
        
 
 }