| /******************************************************************************* |
| * Copyright (c) 2004, 2005 IBM Corporation and others. |
| * All rights reserved. This program and the accompanying materials |
| * are made available under the terms of the Eclipse Public License v1.0 |
| * which accompanies this distribution, and is available at |
| * http://www.eclipse.org/legal/epl-v10.html |
| * |
| * Contributors: |
| * IBM Corporation - initial API and implementation |
| *******************************************************************************/ |
| package org.eclipse.ui.tests.autotests; |
| |
| import java.net.URL; |
| |
| import junit.framework.TestResult; |
| import junit.framework.TestSuite; |
| |
| import org.eclipse.core.runtime.IPath; |
| import org.eclipse.core.runtime.Platform; |
| import org.eclipse.ui.WorkbenchException; |
| import org.eclipse.ui.XMLMemento; |
| import org.eclipse.ui.tests.TestPlugin; |
| |
| /** |
| * @since 3.1 |
| */ |
| public class AutoTestSuite extends TestSuite { |
| private AutoTestLogger logger; |
| |
| public AutoTestSuite(URL expectedResults) { |
| if (expectedResults == null) { |
| logger = new AutoTestLogger(); |
| } else { |
| try { |
| logger = new AutoTestLogger(expectedResults); |
| } catch (WorkbenchException e) { |
| logger = new AutoTestLogger(); |
| e.printStackTrace(); |
| } |
| } |
| } |
| |
| protected AutoTestLogger getLog() { |
| return logger; |
| } |
| |
| public void addWrapper(AutoTest test) { |
| addTest(new AutoTestWrapper(test, logger)); |
| } |
| |
| /* (non-Javadoc) |
| * @see junit.framework.TestSuite#run(junit.framework.TestResult) |
| */ |
| public void run(TestResult result) { |
| super.run(result); |
| |
| IPath statePath = Platform.getStateLocation(TestPlugin.getDefault().getBundle()); |
| |
| String testName = this.getName(); |
| if (testName == null) { |
| testName = this.getClass().getName(); |
| } |
| |
| if (!logger.getErrors().isEmpty()) { |
| IPath errorsPath = statePath.append(testName).append("errors.xml"); |
| |
| System.out.println("Errors detected. Results written to " + errorsPath.toString()); |
| |
| XMLMemento output = XMLMemento.createWriteRoot("errors"); |
| logger.getErrors().saveState(output); |
| try { |
| XmlUtil.write(errorsPath.toFile(), output); |
| } catch (WorkbenchException e) { |
| e.printStackTrace(); |
| } |
| } |
| |
| if (!logger.getUnknownTests().isEmpty()) { |
| |
| IPath unknownPath = statePath.append(testName).append("newtests.xml"); |
| |
| System.out.println("New tests detected. Results written to " + unknownPath.toString()); |
| |
| XMLMemento output = XMLMemento.createWriteRoot("unknown"); |
| logger.getUnknownTests().saveState(output); |
| try { |
| XmlUtil.write(unknownPath.toFile(), output); |
| } catch (WorkbenchException e) { |
| e.printStackTrace(); |
| } |
| } |
| } |
| |
| private int findInArray(String[] hayStack, String needle) { |
| for (int i = 0; i < hayStack.length; i++) { |
| String next = hayStack[i]; |
| if (next.equals(needle)) { |
| return i; |
| } |
| } |
| |
| return hayStack.length; |
| } |
| } |