X-Git-Url: http://secure.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 847d620..9f388dd 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,19 +1,27 @@ 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.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.FillLayout; -import org.eclipse.swt.widgets.Button; +import org.eclipse.swt.layout.GridData; +import org.eclipse.swt.layout.GridLayout; import org.eclipse.swt.widgets.Composite; -import org.eclipse.swt.widgets.Group; +import org.eclipse.swt.widgets.FileDialog; import org.eclipse.ui.IActionBars; -import org.eclipse.ui.ISharedImages; -import org.eclipse.ui.PlatformUI; import org.eclipse.ui.part.ViewPart; /** @@ -41,6 +49,9 @@ import org.eclipse.ui.part.ViewPart; public class PHPUnitView extends ViewPart { + + + /* * like J Unit * a tree. @@ -50,69 +61,96 @@ public class PHPUnitView extends ViewPart { * hierarchy: package->testsuite1->testcase->test_function */ - private int numTests; // total number of tests - private int numTestsRun; // number of tests run so far - 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 static PHPUnitView view = null; private XMLReportHandler handler; - - - + private TestPool testPool; - private Button startButton; + //private Button startButton; private ProgressInfoComposite progressInfoComposite; private ResultsInfoComposite resultsInfoComposite; - private Group 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 = ""; public PHPUnitView() { - handler = new XMLReportHandler(); - testPool = new TestPool(); + if(view == null) + view = this; + + } + + public static PHPUnitView getDefault() { + + + 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); + //Launch ToolBar: setActions(); - //Build the progress info Composite s + //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); - - startButton = new Button(parent, SWT.CENTER); - startButton.setText("Start Tests"); - startButton.addMouseListener(new MouseListener() { - - public void mouseDoubleClick(MouseEvent arg0) { - - } - - public void mouseDown(MouseEvent arg0) { - - startTests(); - - } - - public void mouseUp(MouseEvent arg0) { - - } - - }); // end add action listener. + //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. } @@ -122,8 +160,8 @@ public class PHPUnitView extends ViewPart { private void buildSettingsComposite(Composite parent) { - settingsInfoComposite = new Group(parent, SWT.NONE); -// settingsInfoComposite.setText("Settings"); + //settingsInfoComposite = new Group(parent, SWT.NONE); + //settingsInfoComposite.setText("Settings"); // settingsInfoComposite.setLayout(new GridLayout(2,false)); // // @@ -138,32 +176,72 @@ public class PHPUnitView extends ViewPart { // 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(); - Action action1 = new Action() {}; - action1.setText("Action 1"); - action1.setToolTipText("Start the testing"); - //final URL installUrl = PaintPlugin.getDefault().getDescriptor().getInstallURL(); - //final URL imageUrl = new URL(installUrl, PaintPlugin.getResourceString(id + ".image")); -// URL imageUrl = null; -// try { -// imageUrl = -// new URL("C:\\sample.gif"); -// } catch (MalformedURLException e) { -// // TODO Auto-generated catch block -// e.printStackTrace(); -// } -// action1.setImageDescriptor(ImageDescriptor.createFromURL(imageUrl)); -// - action1.setImageDescriptor(PlatformUI.getWorkbench().getSharedImages(). - getImageDescriptor(ISharedImages.IMG_OBJS_TASK_TSK)); - toolBarManager.add(action1); + + String iconsPath = "C:\\Documents and Settings\\Ali Echihabi\\My Documents\\workspace.eclipse2.1\\net.sourceforge.phpeclipse.phpunit\\icons"; + + ImageDescriptor descriptor = null; + String icon = ""; + + Action selectTestAction = new Action() { + + public void run() { + + testSuiteToRun = dialog.open(); + } + }; + 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(); + } + + + toolBarManager.add(selectTestAction); + + + Action startTestAction = new Action() { + + public void run() { + + + try { + if(testSuiteToRun == null || testSuiteToRun == "") + return; + + startTests(testSuiteToRun); + } 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(); + } + + + toolBarManager.add(startTestAction); } @@ -180,67 +258,130 @@ public class PHPUnitView extends ViewPart { * * @param testID */ - public void markTestPassed(String testID) { + private void markTestPassed(String testID) { // testid, use it in hashmap to retrieve tree item of test and // change icon color, increment pass counter, etc... - testPool.getTest(testID).setVerdict(Test.PASS); + testPool.getTest(testID).setVerdict(TestCase.PASS); } - public void markTestStarted(String testID) { + private void markTestFail(String testID) { + + testPool.getTest(testID).setVerdict(TestCase.FAIL); - } - public void createNewTest(String testName, String testID) { + // 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(); +// } - testPool.addTest(new Test(testName, testID)); - } + startTests("C:/Program Files/Apache Group/Apache2/htdocs/phpUnit/suite.php"); - public void markTestFail(String testID) { - numFailures++; - testPool.getTest(testID).setVerdict(Test.FAIL); - } - public void markTestingStarted(int numTestsToBeRun) { + public void startTests(String testSuite) throws IOException { - this.numTests = numTestsToBeRun; - //reportArea.append("Tests started expecting: " + numTests + " \n"); + //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. - } - - public void markTestingFinished() { - + //reset from previous run + reset(); - //reportArea.append("end all tests \n"); + + testSuite = testSuite.replaceAll("\\\\", "/"); + + System.out.println("new: " + testSuite); + + //where the plugin's temp files should go + String tempFolder = "C:\\tmp"; + String tempFileName = "temTest.php"; + + //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("$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 \"C:/Program Files/Apache Group/Apache2/htdocs/phpUnit/suite.php\""); - } catch (IOException e) { - // TODO Auto-generated catch block + Runtime.getRuntime().exec("php.exe " + tempFolder + "/" + tempFileName); + } catch (Exception e) { + e.printStackTrace(); } + + //testFile.delete(); + + } + /** + * + */ + private void reset() { + + handler = new XMLReportHandler(); + testPool = new TestPool("Ali Baba"); + + progressInfoComposite.resetInfo(); + resultsInfoComposite.resetInfo(); + } /** @@ -271,53 +412,60 @@ public class PHPUnitView extends ViewPart { * @param testID */ public void handleCommand( - String command, - String testCount, - String testID) { - + String command, String[] args) { + if (command.equals("startAll")) { - markTestingStarted(new Integer(testCount).intValue()); + //markTestingStarted(new Integer(testCount).intValue()); - }else if (command.equals("testStarted")) { + } else if (command.equals("testSuiteStarted")) { + + String testID = args[0]; + String testCount = args[1]; + + //createNewTestSuite("TestSuiteName: " + testID, testID, new Integer(testCount).intValue()); + TestSuite suite = new TestSuite("TestSuiteName: " + testID, testID, new Integer(testCount).intValue()); + testPool.addTestSuite(suite); - createNewTest("testName", testID); - markTestStarted(testID); + } else if (command.equals("testStarted")) { + + 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")) { - markTestFinished(); + } else if (command.equals("endAll")) { - markTestingFinished(); + } + + update(); - progressInfoComposite.updateInfo(numTests, numTestsRun, numFailures, numErrors); - resultsInfoComposite.updateInfo(testPool); - } - /** - * - */ - private void markTestFinished() { - - numTestsRun++; - } /** * */ - private void updateResultsInfo() { - // TODO Auto-generated method stub + private void update() { + + //progressInfoComposite.updateInfo(numTests, testPool.getNumTestsRun(), numFailures, numErrors); + progressInfoComposite.updateInfo(testPool); + resultsInfoComposite.updateInfo(testPool); } + /** * @param currentTestID * @param verdict @@ -342,4 +490,5 @@ public class PHPUnitView extends ViewPart { } + } //end of class