blob: 2b57999eb06e0a763a8398dce6e9b489a6388e9d [file] [log] [blame]
/*
* (c) Copyright IBM Corp. 2000, 2001.
* All Rights Reserved.
*/
package org.eclipse.jdt.testplugin;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import junit.framework.Test;
import junit.framework.TestSuite;
import junit.textui.TestRunner;
import org.eclipse.core.runtime.IPath;
import org.eclipse.swt.widgets.Display;
import org.eclipse.ui.internal.Workbench;
public class TestWorkbench extends Workbench {
/**
* Run an event loop for the workbench.
*/
protected void runEventLoop() {
// Dispatch all events.
Display display = Display.getCurrent();
while (true) {
try {
if (!display.readAndDispatch())
break;
} catch (Throwable e) {
break;
}
}
IPath location= JavaTestPlugin.getDefault().getWorkspace().getRoot().getLocation();
System.out.println("Workspace-location: " + location.toString());
try {
String[] args= getCommandLineArgs();
if (args.length > 0) {
Test test= getTest(args[0]);
TestRunner.run(test);
} else {
System.out.println("TestWorkbench: Argument must be class name");
}
} catch (Exception e) {
e.printStackTrace();
}
// Close the workbench.
close();
}
public Test getTest(String className) throws Exception {
Class testClass= getClass().getClassLoader().loadClass(className);
Method suiteMethod= null;
try {
suiteMethod= testClass.getMethod(TestRunner.SUITE_METHODNAME, new Class[0]);
} catch (Exception e) {
// try to extract a test suite automatically
return new TestSuite(testClass);
}
try {
return (Test) suiteMethod.invoke(null, new Class[0]); // static method
} catch (InvocationTargetException e) {
System.out.println("Failed to invoke suite():" + e.getTargetException().toString());
} catch (IllegalAccessException e) {
System.out.println("Failed to invoke suite():" + e.toString());
}
return null;
}
}