package org.eclipse.dltk.tcl.internal.testing;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.debug.core.ILaunch;
import org.eclipse.debug.core.ILaunchConfiguration;
import org.eclipse.dltk.compiler.util.Util;
import org.eclipse.dltk.launching.IInterpreterRunner;
import org.eclipse.dltk.launching.InterpreterConfig;
import org.eclipse.dltk.tcl.launching.TclLaunchConfigurationDelegate;
import org.eclipse.dltk.tcl.testing.ITclTestingEngine;
import org.eclipse.dltk.testing.DLTKTestingConstants;
import org.eclipse.dltk.testing.DLTKTestingCore;
public class TclTestingLaunchConfigurationDelegate extends TclLaunchConfigurationDelegate {
private ITclTestingEngine engine;
@Override
protected InterpreterConfig createInterpreterConfig(ILaunchConfiguration configuration, ILaunch launch)
throws CoreException {
// We need to create correct execute script for this element.
InterpreterConfig config = super.createInterpreterConfig(configuration, launch);
ITclTestingEngine[] engines = TclTestingEngineManager.getEngines();
String engineId = configuration.getAttribute(DLTKTestingConstants.ATTR_ENGINE_ID, Util.EMPTY_STRING);
for (int i = 0; i < engines.length; i++) {
if (engines[i].getId().equals(engineId)) {
engines[i].correctLaunchConfiguration(config, configuration, launch);
this.engine = engines[i];
break;
}
}
return config;
}
@Override
protected void runRunner(ILaunchConfiguration configuration, IInterpreterRunner runner, InterpreterConfig config,
ILaunch launch, IProgressMonitor monitor) throws CoreException {
if (engine != null) {
DLTKTestingCore.registerTestingProcessor(launch, engine.getProcessor(launch));
}
super.runRunner(configuration, runner, config, launch, monitor);
}
}