package net.sf.eclipsefp.haskell.ui.wizards.cabal; import java.io.File; import java.util.ArrayList; import java.util.List; import net.sf.eclipsefp.haskell.core.cabal.CabalImplementationManager; import net.sf.eclipsefp.haskell.debug.core.internal.launch.AbstractHaskellLaunchDelegate; import net.sf.eclipsefp.haskell.ui.HaskellUIPlugin; import net.sf.eclipsefp.haskell.ui.internal.util.UITexts; import org.eclipse.core.resources.IProject; import org.eclipse.core.runtime.IStatus; import org.eclipse.core.runtime.Platform; import org.eclipse.core.runtime.Status; import org.eclipse.jface.dialogs.ErrorDialog; import org.eclipse.jface.wizard.Wizard; import org.eclipse.osgi.util.NLS; public class CabalTestWizard extends Wizard { private final IProject project; private CabalTestOptionsPage optionsPage; public CabalTestWizard(final IProject project) { super(); this.project=project; setWindowTitle( Platform.getResourceBundle( Platform.getBundle( HaskellUIPlugin.getPluginId() )).getString( "cabalTestWizard.name" )); setDialogSettings( HaskellUIPlugin.getDefault().getDialogSettings() ); } @Override public void addPages() { optionsPage=new CabalTestOptionsPage(project) ; addPage(optionsPage ); } @Override public boolean performFinish() { final String cabalExecutable=CabalImplementationManager.getCabalExecutable(); if (cabalExecutable!=null){ final List<String> commands = new ArrayList<>(); commands.add( cabalExecutable ); commands.add("test"); // options commands.add("--builddir="+optionsPage.getFolder()); // test suites as extra arguments try { AbstractHaskellLaunchDelegate.runInConsole(project, commands, new File(project.getLocation().toOSString()), NLS.bind( UITexts.test_job, project.getName() ),true ); } catch (Exception ioe){ HaskellUIPlugin.log(ioe); final IStatus st=new Status( IStatus.ERROR, HaskellUIPlugin.getPluginId(),ioe.getLocalizedMessage(),ioe); ErrorDialog.openError( getShell(), UITexts.test_error, UITexts.test_error_text, st); } } return true; } }