X-Git-Url: http://git.phpeclipse.com diff --git a/net.sourceforge.phpeclipse.phpunit/src/net/sourceforge/phpeclipse/phpunit/PHPUnitView.java b/net.sourceforge.phpeclipse.phpunit/src/net/sourceforge/phpeclipse/phpunit/PHPUnitView.java index 656610d..135cdcd 100644 --- a/net.sourceforge.phpeclipse.phpunit/src/net/sourceforge/phpeclipse/phpunit/PHPUnitView.java +++ b/net.sourceforge.phpeclipse.phpunit/src/net/sourceforge/phpeclipse/phpunit/PHPUnitView.java @@ -1,253 +1,218 @@ -package net.sourceforge.phpeclipse.phpunit; - +/************************************************************************* + * @author Ali Echihabi (ali_echihabi@ieee.org, ali.echihabi@souss.ca) + * + * Plugin for PHP unit Testing. + * www.phpeclipse.de + * + *************************************************************************/ +package net.sourceforge.phpeclipse.phpunit; import java.io.BufferedWriter; import java.io.File; import java.io.FileWriter; import java.io.IOException; -import java.net.MalformedURLException; -import java.net.URL; +import net.sourceforge.phpeclipse.phpunit.preferences.PHPUnitPreferencePage; +import net.sourceforge.phpeclipse.phpunit.reporthandling.ConnectionListener; +import net.sourceforge.phpeclipse.phpunit.reporthandling.XMLReportHandler; import net.sourceforge.phpeclipse.phpunit.testpool.TestCase; import net.sourceforge.phpeclipse.phpunit.testpool.TestPool; import net.sourceforge.phpeclipse.phpunit.testpool.TestSuite; import org.eclipse.jface.action.Action; import org.eclipse.jface.action.IToolBarManager; -import org.eclipse.jface.resource.ImageDescriptor; -import org.eclipse.swt.SWT; -import org.eclipse.swt.events.MouseEvent; -import org.eclipse.swt.events.MouseListener; import org.eclipse.swt.layout.GridData; import org.eclipse.swt.layout.GridLayout; -import org.eclipse.swt.widgets.Button; import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.FileDialog; import org.eclipse.ui.IActionBars; -import org.eclipse.ui.ISharedImages; -import org.eclipse.ui.IViewSite; -import org.eclipse.ui.PartInitException; -import org.eclipse.ui.PlatformUI; import org.eclipse.ui.part.ViewPart; -/** - * @author Ali Echihabi - * - * To change the template for this generated type comment go to - * Window>Preferences>Java>Code Generation>Code and Comments - */ -/* - * Created on May 22, 2004 - * - * To change the template for this generated file go to - * Window>Preferences>Java>Code Generation>Code and Comments - */ - -/** - * @author Ali Echihabi (ali_echihabi@ieee.org) - * - * Plugin for PHP unit Testing. - * www.phpeclipse.de - * - * This the main view showing the progress and reports. - * - */ - public class PHPUnitView extends ViewPart { - - - /* - * like J Unit - * a tree. - * The first level nodes are the test suites. - * children are nested test suites. - * leafs: test functions. - * hierarchy: package->testsuite1->testcase->test_function + * like J Unit a tree. The first level nodes are the test suites. children + * are nested test suites. leafs: test functions. hierarchy: + * package->testsuite1->testcase->test_function */ private static PHPUnitView view = null; private XMLReportHandler handler; - + private TestPool testPool; - //private Button startButton; + // private Button startButton; private ProgressInfoComposite progressInfoComposite; + private ResultsInfoComposite resultsInfoComposite; - private SettingsInfoComposite settingsInfoComposite; //TODO: move somewhere else, launcher, wizard or preferences. - + // private SettingsInfoComposite settingsInfoComposite; //TODO: move + // somewhere else, launcher, wizard or preferences. + private FileDialog dialog; + + private String testSuiteToRun; + + private Action selectTestAction; + + private Action startTestAction; public PHPUnitView() { - - if(view == null) + + if (view == null) view = this; } - + public static PHPUnitView getDefault() { - - - return view; + + return view; } public void createPartControl(Composite parent) { - //parent.setLayout(new FillLayout(SWT.VERTICAL)); + // parent.setLayout(new FillLayout(SWT.VERTICAL)); + + dialog = new FileDialog(parent.getShell()); GridLayout gridLayout = new GridLayout(); gridLayout.numColumns = 1; - + // set title and layout - parent.setLayout(gridLayout); - + parent.setLayout(gridLayout); - //Launch ToolBar: + // Launch ToolBar: setActions(); - //Build the progress info Composites + // Build the progress info Composites progressInfoComposite = new ProgressInfoComposite(parent); - progressInfoComposite.setLayoutData(new GridData(GridData.GRAB_HORIZONTAL | GridData.FILL_HORIZONTAL | GridData.VERTICAL_ALIGN_BEGINNING)); - - - - //Build the result info composite - resultsInfoComposite = new ResultsInfoComposite(parent); - resultsInfoComposite.setLayoutData(new GridData(GridData.GRAB_VERTICAL | GridData.FILL_BOTH)); - - //build the settings composite - //buildSettingsComposite(parent); - - settingsInfoComposite = new SettingsInfoComposite(parent, SWT.NONE); - + progressInfoComposite.setLayoutData(new GridData( + GridData.GRAB_HORIZONTAL | GridData.FILL_HORIZONTAL + | GridData.VERTICAL_ALIGN_BEGINNING)); -// startButton = new Button(parent, SWT.CENTER); -// startButton.setText("Start Tests"); -// startButton.addMouseListener(new MouseListener() { -// -// public void mouseDoubleClick(MouseEvent arg0) { -// -// } -// -// public void mouseDown(MouseEvent arg0) { -// -// try { -// String testFile = settingsInfoComposite.getTestSuite(); -// startTests(testFile); -// } catch (IOException e) { -// // TODO Auto-generated catch block -// e.printStackTrace(); -// } -// -// -// } -// -// public void mouseUp(MouseEvent arg0) { -// -// -// } -// -// }); // end add action listener. + // Build the result info composite + resultsInfoComposite = new ResultsInfoComposite(parent); + resultsInfoComposite.setLayoutData(new GridData(GridData.GRAB_VERTICAL + | GridData.FILL_BOTH)); + + // build the settings composite + // buildSettingsComposite(parent); + + // settingsInfoComposite = new SettingsInfoComposite(parent, SWT.NONE); + + // startButton = new Button(parent, SWT.CENTER); + // startButton.setText("Start Tests"); + // startButton.addMouseListener(new MouseListener() { + // + // public void mouseDoubleClick(MouseEvent arg0) { + // + // } + // + // public void mouseDown(MouseEvent arg0) { + // + // try { + // String testFile = settingsInfoComposite.getTestSuite(); + // startTests(testFile); + // } catch (IOException e) { + // // TODO Auto-generated catch block + // e.printStackTrace(); + // } + // + // + // } + // + // public void mouseUp(MouseEvent arg0) { + // + // + // } + // + // }); // end add action listener. } /** * @param parent */ - private void buildSettingsComposite(Composite parent) { - - - //settingsInfoComposite = new Group(parent, SWT.NONE); - //settingsInfoComposite.setText("Settings"); -// settingsInfoComposite.setLayout(new GridLayout(2,false)); -// -// -// //the test suite to launch -// Label testSuiteLabel = new Label(settingsInfoComposite, SWT.NONE); -// testSuiteLabel.setText("Test suite to run:"); -// //testSuiteLabel.setLayoutData(new GridData()) -// Text testSuiteText = new Text(settingsInfoComposite, SWT.NONE); -// -// //the path to php -// Label phpPathLabel = new Label(settingsInfoComposite, SWT.NONE); -// phpPathLabel.setText("php Path:"); -// //testSuiteLabel.setLayoutData(new GridData()) -// Text phpPathText = new Text(settingsInfoComposite, SWT.NONE); - - } +// private void buildSettingsComposite(Composite parent) { +// +// // settingsInfoComposite = new Group(parent, SWT.NONE); +// // settingsInfoComposite.setText("Settings"); +// // settingsInfoComposite.setLayout(new GridLayout(2,false)); +// // +// // +// // //the test suite to launch +// // Label testSuiteLabel = new Label(settingsInfoComposite, SWT.NONE); +// // testSuiteLabel.setText("Test suite to run:"); +// // //testSuiteLabel.setLayoutData(new GridData()) +// // Text testSuiteText = new Text(settingsInfoComposite, SWT.NONE); +// // +// // //the path to php +// // Label phpPathLabel = new Label(settingsInfoComposite, SWT.NONE); +// // phpPathLabel.setText("php Path:"); +// // //testSuiteLabel.setLayoutData(new GridData()) +// // Text phpPathText = new Text(settingsInfoComposite, SWT.NONE); +// +// } private void setActions() { + final IActionBars actionBars = getViewSite().getActionBars(); IToolBarManager toolBarManager = actionBars.getToolBarManager(); - String iconsPath = "C:\\Documents and Settings\\Ali Echihabi\\My Documents\\workspace.eclipse2.1\\net.sourceforge.phpeclipse.phpunit\\icons"; - - ImageDescriptor descriptor = null; - String icon = ""; + selectTestAction = new Action() { - Action selectTestAction = new Action() { - public void run() { - - settingsInfoComposite.showFileDialog(); + + testSuiteToRun = dialog.open(); + startTestAction.setEnabled(true); } }; + selectTestAction.setText("Select Test Suite"); selectTestAction.setToolTipText("Select Test Suite"); - try { - icon = "tsuite.gif"; - descriptor = ImageDescriptor.createFromURL(new URL("file://" + iconsPath + "//" + icon)); - selectTestAction.setImageDescriptor(descriptor); - } catch (MalformedURLException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } - - + selectTestAction + .setImageDescriptor(PHPUnitImages.DESC_SELECT_TEST_SUITE); + toolBarManager.add(selectTestAction); - - - Action startTestAction = new Action() { - + + startTestAction = new Action() { + public void run() { - - String testFile = settingsInfoComposite.getTestSuite(); + try { - startTests(testFile); + if (testSuiteToRun == null || testSuiteToRun == "") + return; + + startTests(testSuiteToRun); + // setEnabled(false); + } catch (IOException e) { - // TODO Auto-generated catch block + e.printStackTrace(); } - + } - + }; - startTestAction.setText("Start Test"); - startTestAction.setToolTipText("Start Test Suite"); - try { - icon = "start.gif"; - descriptor = ImageDescriptor.createFromURL(new URL("file://" + iconsPath + "//" + icon)); - startTestAction.setImageDescriptor(descriptor); - } catch (MalformedURLException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } + startTestAction.setText("Start Test"); + startTestAction + .setToolTipText("Start Test Suite. Select a Test Suite first."); + startTestAction.setImageDescriptor(PHPUnitImages.DESC_RUN_TEST_SUITE); + startTestAction.setEnabled(false); - toolBarManager.add(startTestAction); } - - - /* (non-Javadoc) + /* + * (non-Javadoc) + * * @see org.eclipse.ui.IWorkbenchPart#setFocus() */ public void setFocus() { - + } /** @@ -261,123 +226,103 @@ public class PHPUnitView extends ViewPart { // change icon color, increment pass counter, etc... testPool.getTest(testID).setVerdict(TestCase.PASS); - } - private void markTestFail(String testID) { - - testPool.getTest(testID).setVerdict(TestCase.FAIL); - - } - - // action to start tests: - public void startTests() throws IOException { -// // 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. -// -// testPool = new TestPool("RUN MONDAY 11:15 PM"); -// listenForReports(); -// -// try { -// Runtime.getRuntime().exec("php.exe \"C:/Program Files/Apache Group/Apache2/htdocs/phpUnit/suite.php\""); -// } catch (Exception e) { -// -// e.printStackTrace(); -// } - - startTests("C:/Program Files/Apache Group/Apache2/htdocs/phpUnit/suite.php"); + testPool.getTest(testID).setVerdict(TestCase.FAIL); } public void startTests(String testSuite) throws IOException { - - //testSuite: the name of the file containing the suite we want to run. - // we will put that test suite inside a contained that uses our SocketResult. - - //reset from previous run + + // testSuite: the name of the file containing the suite we want to run. + // we will put that test suite inside a contained that uses our + // SocketResult. + + // reset from previous run reset(); - - + testSuite = testSuite.replaceAll("\\\\", "/"); - - System.out.println("new: " + testSuite); - - //where the plugin's temp files should go - String tempFolder = "C:\\tmp"; + + System.out.println("new: " + testSuite); + + // where the plugin's temp files should go + String tempFolder = "C:\\tmp"; String tempFileName = "temTest.php"; - - //create the file. + + // create the file. File testFile = new File(tempFolder + "/" + tempFileName); BufferedWriter out = new BufferedWriter(new FileWriter(testFile)); out.write("addTest(new TestSuite(\"" + testSuiteName + "\"));" + "\n"); - - - - //out.write("$suite->addTest(new TestSuite(\"MoreTesterTests\"));" + "\n"); - - //out.write("$suite->addTest(new TestSuite(\"ManyFailingTests\"));" + "\n"); - //out.write("$suite->addTest(new TestSuite(\"AssertEqualsTests\"));" + "\n"); - + out.write("$suite->addTest(new TestSuite(\"" + testSuiteName + "\"));" + + "\n"); + out.write("$result = new SocketTestResult();" + "\n"); out.write("$suite->run($result);" + "\n"); out.write("$result->report(); " + "\n"); out.write("" + "\n"); out.write("" + "\n"); - + + out.write("$output = ob_get_contents();" + "\n"); + out.write("$fileHandle = fopen('c:/tmp/phpOut.txt');" + "\n"); + out.write("fclose($fileHandle);" + "\n"); + + out.write("ob_end();" + "\n"); out.write("?>" + "\n"); - + out.flush(); out.close(); - + listenForReports(); - + try { - Runtime.getRuntime().exec("php.exe " + tempFolder + "/" + tempFileName); + Runtime.getRuntime().exec( + "php.exe " + tempFolder + "/" + tempFileName); } catch (Exception e) { - + e.printStackTrace(); } - - //testFile.delete(); - + + // testFile.delete(); + } /** * */ private void reset() { - + handler = new XMLReportHandler(); testPool = new TestPool("Ali Baba"); - + progressInfoComposite.resetInfo(); resultsInfoComposite.resetInfo(); - + } /** @@ -388,73 +333,73 @@ public class PHPUnitView extends ViewPart { ConnectionListener conListener = new ConnectionListener(); conListener.start(this); - } //end of method + } // end of method /** * handle this report: test passed, faile, end of all. + * * @param report */ public void handleReport(String report) { - //delegate to the XML report handler. + // delegate to the XML report handler. handler.handle(report, this); } - /** * @param command * @param testCount * @param testID */ - public void handleCommand( - String command, - String testCount, - String testID) { - + public void handleCommand(String command, String[] args) { if (command.equals("startAll")) { - - //markTestingStarted(new Integer(testCount).intValue()); - - + + // markTestingStarted(new Integer(testCount).intValue()); + } else if (command.equals("testSuiteStarted")) { - //createNewTestSuite("TestSuiteName: " + testID, testID, new Integer(testCount).intValue()); - TestSuite suite = new TestSuite("TestSuiteName: " + testID, testID, new Integer(testCount).intValue()); + String testID = args[0]; + String testCount = args[1]; + + // createNewTestSuite("TestSuiteName: " + testID, testID, new + // Integer(testCount).intValue()); + TestSuite suite = new TestSuite(null, "TestSuiteName: " + testID, + testID, new Integer(testCount).intValue()); testPool.addTestSuite(suite); } else if (command.equals("testStarted")) { - testPool.addTest(new TestCase("TestName: " + testID, testID)); + String testID = args[0]; + String testCount = args[1]; + String testName = args[2]; + String parentTestSuiteName = args[3]; + + testPool + .addTest(new TestCase(testID, testName, parentTestSuiteName)); } else if (command.equals("testFINISHED")) { - - } else if (command.equals("endAll")) { - } - update(); - - } /** * */ private void update() { - - //progressInfoComposite.updateInfo(numTests, testPool.getNumTestsRun(), numFailures, numErrors); + + // progressInfoComposite.updateInfo(numTests, testPool.getNumTestsRun(), + // numFailures, numErrors); progressInfoComposite.updateInfo(testPool); resultsInfoComposite.updateInfo(testPool); - - } + } /** * @param currentTestID @@ -475,10 +420,10 @@ public class PHPUnitView extends ViewPart { */ public void addTestException(String currentTestID, String exception) { - //TODO: decide how to show exceptions. don't show them for now. - //reportArea.append(" test " + currentTestID + " exception: " + exception + "\n"); + // TODO: decide how to show exceptions. don't show them for now. + // reportArea.append(" test " + currentTestID + " exception: " + + // exception + "\n"); } - -} //end of class +} // end of class