package org.erlide.cover.runtime.launch;
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.erlide.backend.api.BackendData;
import org.erlide.backend.api.ICodeBundle.CodeContext;
import org.erlide.backend.launch.ErlangLaunchDelegate;
import org.erlide.cover.api.CoverException;
import org.erlide.cover.core.CoverBackend;
import org.erlide.cover.core.CoverRunner;
import org.erlide.util.ErlLogger;
/**
* Cover launch configuration
*
* @author Aleksandra Lipiec <aleksandra.lipiec@erlang.solutions.com>
*
*/
public class CoverLaunchConfigurationDelegate extends ErlangLaunchDelegate {
@Override
public void launch(final ILaunchConfiguration config, final String mode,
final ILaunch launch, final IProgressMonitor monitor) throws CoreException {
try {
super.launch(config, mode, launch, monitor);
CoverLaunchData coverData;
coverData = new CoverLaunchData(config);
final CoverBackend coverBackend = CoverBackend.getInstance();
coverBackend.setBackend(backend);
coverBackend.initialize(coverData);
coverBackend.runCoverageAnalysis(new CoverRunner());
} catch (final CoreException e) {
ErlLogger.error(e);
} catch (final CoverException e) {
if (CoverBackend.getInstance().getListeners().size() == 0) {
throw new RuntimeException(e.getMessage());
}
CoverBackend.getInstance().handleError(e.getMessage());
}
}
@Override
protected BackendData configureBackend(final BackendData data, final String mode,
final ILaunch launch) {
final BackendData myData = super.configureBackend(data, mode, launch);
myData.setConsole(true);
myData.setLongName(false);
myData.setReportErrors(true);
myData.setNodeName(CoverBackend.NODE_NAME);
myData.setUseStartShell(true);
myData.setContext(CodeContext.DEBUGGER);
return myData;
}
}