blob: 9785b15d45731b7e1105622873ed146c1fa49191 [file] [log] [blame]
/*******************************************************************************
* 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;
}
}